zoukankan      html  css  js  c++  java
  • linux day13 用户基本概述

    二、用户基本概述

    1.用户

    能够正常登录Linux或windows系统的角色就是用户
    
    那Linux与windows系统的用户有什么区别?
    本质都是登录系统的,只不过Linux支持多用户同时登录,windows默认不支持,但是修改组策略的情况下也是可以多用户登录的
    虚拟用户说明:
    在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进/etc/passwd中;
    虚拟用户实际上就是去掉了登录SHELL权限的用户,他没有能力登录系统,但可以进行其他任何操作。
    

    2.用户的作用

    1.系统上的每一个进程(运行的程序)都需要特定的用户运行
    2.每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制
    3.进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关
    

    3.如何查看用户

    #查看当前用户
    [root@db01 ~]# id
    uid=0(root) gid=0(root) groups=0(root)
    
    # 查看用户详细信息
    yum install -y finger
    finger # 查找用户并显示用户信息
    [root@mpd ~]# finger test
    Login: test           			Name: 
    Directory: /home/test               	Shell: /bin/bash
    On since Tue Jul 21 11:18 (CST) on pts/0 from 10.0.0.1
       3 hours 45 minutes idle
    Last login Tue Jul 21 11:45 (CST) on pts/1
    No mail.  # 没有邮件
    No Plan.  # 没有计划
    
    # who 谁
    [root@mpd ~]# who
    test     pts/0        2020-07-21 11:18 (10.0.0.1)
    root     pts/1        2020-07-21 09:38 (10.0.0.1)
    
    # whoami 我是谁
    [root@mpd ~]# whoami
    root
    
    # 在线用户msg
    [root@mpd ~]# w
     15:07:37 up  6:48,  2 users,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    test     pts/0    10.0.0.1         11:18    3:49m  0.00s  0.00s -bash
    root     pts/1    10.0.0.1         09:38    1.00s  0.10s  0.00s w
    
    # 用户使用情况
    [root@mpd ~]# uptime
     15:09:08 up  6:49,  2 users,  load average: 0.00, 0.01, 0.05
    
    
    #查看指定用户
    [root@db01 ~]# id lhd
    uid=1001(lhd) gid=1001(lhd) groups=1001(lhd)
    
    #查看指定用户指定id
    [root@db01 ~]# id -u lhd
    1001
    [root@db01 ~]# id -g lhd
    1001
    [root@db01 ~]# id -G lhd
    1001
    

    4.查看进程的用户

    [root@db01 ~]# ps -ef | grep mysql
    mysql     27976      1  0 15:34 ?        00:00:03 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    root      28183   8859  0 17:29 pts/1    00:00:00 grep --color=auto mysql
    

    5.查看文件的用户

    [root@Centos7 ~]# ll
    total 10004
    drwxr-xr-x 84 lhd  lhd      8192 Jun 24 15:05 etc
    -rw-r--r--  1 root root 10228919 Jun 24 16:55 etc.tar.gz
    

    三、用户

    [root@Centos7 ~]# ll /etc/passwd /etc/shadow
    -rw-r--r-- 1 root root 1225 Jun 23 17:41 /etc/passwd
    ---------- 1 root root  723 Jun 23 17:41 /etc/shadow
    

    1.用户文件 /etc/passwd

    [root@Centos7 ~]# ll /etc/passwd
    -rw-r--r-- 1 root root 1225 Jun 23 17:41 /etc/passwd
    
    [root@Centos7 ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    lhd:x:1000:1000::/home/lhd:/bin/bash
    nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin
    
    #以 :为分隔符,一共七列
    nginx				 #用户
    x				 #密码占位符
    998				 #uid
    996				 #gid
    Nginx web server		 #用户的注释信息
    /var/lib/nginx			 #家目录
    /sbin/nologin			 #登录的shell,如果是/sbin/nologin,说明不能登录
    

    2.用户密码文件 /etc/shadow

    [root@Centos7 ~]# ll /etc/shadow
    ---------- 1 root root 723 Jun 23 17:41 /etc/shadow
    
    [root@Centos7 ~]# cat /etc/shadow
    root:$6$3M2hvrzRORqDie.l$dr19n45v.3yBadEcg87YXtzMLLCVrxDLjH8rlW.WEMikbjp7eVGVepBqvwwMdpj8ejLPnG2WhCR48QtYBEwIa1::0:99999:7:::
    lhd:!!:18436:0:99999:7:::
    nginx:!!:18436::::::
    
    #以 :为分隔符,一共九列
    root					#用户
    !!					#如果是一串字符代表是密码,!!代表没有密码
    18436					#代表修改密码的时间,按天算,距离1970年的天数
    0					#使用天数,0代表无限制
    99999					#密码可以使用的天数,99999代表永远不过期
    7					#密码快过期了,提前几天提醒
    '空'					#密码到期后保持活动的天数
    '空'					#账户到期时间
    '空'					#注释
    
    1.用户登陆名               //用户的账号名称
    2.加密后的密码             //用户密码,这是加密过的口令(未设密码时为!!)
    3.最近一次密码更改时间      //从1970年到最近一次更改密码时间之间过了多少天
    4.密码最少使用几天          //密码最少使用几天才可以更改密码(0表示无限制)
    5.密码最长使用几天          //密码使用多少天需要修改密码(默认99999永不过期)
    6.密码到期前警告期限        //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
    7.密码到期后保持活动的天数  //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定
    8.账户到期时间             //从1970年起,账户在这个日期前可使用,到期后失效。
    9.标志                    //保留
    

    3.用户的分类

    用户UID 系统中约定的含义
    0 超级管理员(拥有最高权限)
    1-200 系统用户,由系统分配给系统进程使用
    201-999 系统用户,用来运行服务账户,不需要登陆系统(动态分配)
    1000+ 常规普通用户
    • 注意: 在CentOS7系统之前, UID1-499用于系统用户, 而UID 500+则用于普通用户

    四、用户相关命令

    useradd		userdel		usermod
    

    1.useradd添加用户

    #使用useradd和adduser这两个命令,来创建用户
    
    #添加用户前需要确定:
    1.确定用户的默认组是否有特殊要求
    2.确定用户是否允许登陆
    3.确定用户的密码策略
    4.确定用户的有效期
    5.确定用户的uid是否有特殊要求
    

    1)常用参数

    -u 		#指定用户的UID,不能和现有ID冲突
    -g 		#指定用户用户默认基本组
    -G 		#指定用户附加组,用逗号隔开添加多个附加组
    -d		#指定用户家目录
    -c		#指定用户注释信息
    -M 		#不建立家目录
    -s		#指定用户默认shell
    -r 		#创建系统账户, 没有家目录
    -a 		#附加组,都留下,配合-G,追加
    

    2)添加用户

    [root@db01 ~]# useradd user -u 666 -g root -G bin,mail -d /home/userhome -c '测试创建用户' -s /sbin/nologin
    [root@db01 ~]# ll /home/
    total 0
    drwx------ 2 lhd  lhd  83 Jun 24 17:17 lhd
    drwx------ 2 user root 62 Jun 24 18:21 userhome
    [root@db01 ~]# id user
    uid=666(user) gid=0(root) groups=0(root),1(bin),12(mail)
    
    #日常正经添加用户
    [root@db01 ~]# useradd test -M -s /sbin/nologin
    [root@db01 ~]# useradd test1
    

    3)给用户设置密码

    #方式一:在root下修改普通用户密码
    [root@db01 ~]# passwd test1
    Changing password for user test1.
    New password: 
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    #该方法,设置密码时提示密码过短,一样可以修改成功
    
    #方式二:将密码写入用户
    [root@db01 ~]# echo "123456" | passwd --stdin test
    Changing password for user test.
    passwd: all authentication tokens updated successfully.
    
    #方式三:切换到用户下,自己修改自己的密码
    [root@db01 ~]# su test1
    [test1@db01 root]$ passwd
    Changing password for user test1.
    Changing password for test1.
    (current) UNIX password: 
    New password: 
    BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    #该方式修改密码不能过于简单,不能跟以前密码相似,也不能很有规律
    
    # 方式四 随机密码非交互式
    
    #如何获得随机数 
    [root@qls ~]# echo $RANDOM
    28241
    [root@qls ~]# echo $RANDOM | md5sum
    6c8a1df9e12e9c553d0f9a397b860f4e  -
    [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10
    64091f6823
    [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10
    df0676f775
    
    #密码设置成功,但是不知道密码 
    [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10  | passwd  --stdin  qls01
    Changing password for user qls01.
    passwd: all authentication tokens updated successfully.
    
    [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee  pass.txt
    b676039b3f
    
    [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee  pass.txt  | passwd  --stdin  qls01
    Changing password for user qls01.
    passwd: all authentication tokens updated successfully.
    [root@qls ~]# cat pass.txt 
    7d53328b61
    tee 	#重定向的命令 将数据重定向到指定的文件中,并输出在屏幕上面一份  
    
    	-a		#追加  
    	
    
    #设置更复杂的密码 
    
    [root@qls ~]# yum install  -y  expect
    
    选项:
    
    	-l		#指定的密码位数
    	-d		#指定数字位数
    	-c		#小写字母位数
    	-C		#大小字母位数
    	-s		#特殊字符位数
    
    [root@qls ~]# mkpasswd  
    gC}2atTf9
    [root@qls ~]# mkpasswd  -l 24  -d 6 -c 6 -C 6 -s 6
    sv_^WF85J@DF5Ng5|3{f3/ng
    [root@qls ~]# mkpasswd  -l 24 
    9px3Sesrx[ybtbvElubxxltj
    [root@qls ~]# mkpasswd  -l 24 
    uimYw4amzffhti0eljucgg
    [root@qls ~]# mkpasswd  -l 24 -s 24
    impossible to generate 24-character password with 2 numbers, 2 lowercase letters, 2 uppercase letters and 24 special characters.
    [root@qls ~]# mkpasswd  -l 24 -s 24 -d 0 -c 0 -C 0 
    $.$}+?;-~]|)>(#_),[)!#@$
    
    [root@qls ~]# mkpasswd  -l 24 -s 24 -d 0 -c 0 -C 0   | tee  pass.txt  | passwd  --stdin  qls01
    Changing password for user qls01.
    passwd: all authentication tokens updated successfully.
    [root@qls ~]# cat pass.txt 
    :{]~"/'%[,+"^*%??%,'?}~$
    
    

    4) 修改用户配置

    	-u		#修改用户的uid
    	-g		#修改用户的gid
    	-a		#追加 添加附加组  需跟-G配合使用
    	-G		#修改附加组,默认会覆盖原来的所有附加组   
            -aG             #追加附加组           
    	-m		#迁移家目录 
    	-d		#修改家目录 
    	-c		#修改注释信息
    	-s		#修改命令解释器 
    	-l		#修改用户的名称 
    	-L		#锁定用户
    	-U		#解锁用户
    usermod 用户名 要修改的选项 修改后的名称
    usermod root -g admin # 把root用户的默认用户组root组修改为admin组
    

    5) 删除用户

    选项:
          -r   #删除用户的时候,删除家目录及邮件相关信息
    userdel 要删除的用户名称
    userdel test # 删除用户名称为test的用户 默认不删除家目录及邮件信息 
     
    

    6) 远程登录

    # ssh协议远程登录
    [E:~]$ ssh  test@10.0.0.100
    

    五 用户创建相关的文件

    # 创建用户的时候,没有指定相关信息,系统创建用户是根据两个文件进行创建的    
    
    [root@qls ~]# ll  /etc/login.defs 
    -rw-r--r--. 1 root root 2028 Oct 30  2018 /etc/login.defs
    [root@qls ~]# ll /etc/default/useradd 
    -rw-r--r--. 1 root root 119 Oct 30  2018 /etc/default/useradd
    
    [root@qls ~]# grep  -Ev  '^$|^#'  /etc/login.defs
    MAIL_DIR	/var/spool/mail		#接收邮件的目录 
    PASS_MAX_DAYS	99999			#密码最大的有效期天数  
    PASS_MIN_DAYS	0			#密码最小的有效期 
    PASS_MIN_LEN	5			#密码最小的长度  不起作用  root用户限制不了  普通用户最少8位
    PASS_WARN_AGE	7			#密码到期前的告警时间 
    UID_MIN                  1000		#普通用户最小的UID
    UID_MAX                 60000		#普通用户最大的UID
    SYS_UID_MIN               201		#系统用户的最小UID
    SYS_UID_MAX               999		#系统用户的最大UID 
    GID_MIN                  1000		#普通用户的组的最小GID
    GID_MAX                 60000		#普通用户的组的最大GID
    SYS_GID_MIN               201		#系统用户的组的最小GID
    SYS_GID_MAX               999		#系统用户的组的最大GID
    CREATE_HOME	yes			#创建用户的时候默认创建家目录
    UMASK           077			#默认创建用户的家目录的权限 umask为077   777-077=700
    USERGROUPS_ENAB yes			#创建或删除用户的时候,没有指定组,默认创建或删除跟用户相同名称的组
    ENCRYPT_METHOD SHA512			#密码的加密规则 
    
    
    [root@qls ~]# cat /etc/default/useradd
    GROUP=100			#当创建用户没有指定组,并且USERGROUPS_ENAB为no的时候,这个选项生效  
    HOME=/home			#创建用户的家目录的位置  
    INACTIVE=-1			#跟shadow文件的第七列 密码到期后的宽恕时间  -1 密码永不失效   不启用
    EXPIRE=				#跟shadow文件第八列  账号密码的失效时间  时间戳   空则表示没有失效时间
    SHELL=/bin/bash		        #默认的命令解释器  
    SKEL=/etc/skel		        #默认创建家目录的模板  
    CREATE_MAIL_SPOOL=yes	        #创建邮件相关信息 
    
    

    六 用户命令故障

    [root@qls ~]# passwd   test
    Changing password for user test.
    New password: 
    BAD PASSWORD: The password is a palindrome
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    [root@qls ~]# rm  -f  /home/test/.bash*
    
    #家目录里面的环境变量配置文件不存在
    
    -bash-4.2$ 
    -bash-4.2$
    
    #  解决
    
    -bash-4.2$ pwd
    /home/test
    -bash-4.2$ cp -a  /etc/skel/.bash*  ./
    
    Permission denied		#权限不足 
    
    [root@qls ~]# mkdir  -m  700  /home/test
    [root@qls ~]# ll -d /home/test
    drwx------ 2 root root 6 Jul 21 10:53 /home/test
    [root@qls ~]# chown  -R  test.test /home/test
    
    -bash-4.2$ cd /home/test
    -bash-4.2$ pwd
    /home/test
    -bash-4.2$ cp -a /etc/skel/.bash* ./
    -bash-4.2$ logout
    
    

    七 用户组的管理

    什么是用户组  
    组分为两类
    基本组 		#一个用户只能拥有一个基本组  
    附加组	        #当基本组的权限不够用户使用的,就出现了附加组   一个用户允许拥有多个附加组  
    
    跟组相关的文件 
    [root@qls ~]# ll  /etc/group
    -rw-r--r-- 1 root root 573 Jul 21 11:04 /etc/group
    [root@qls ~]# ll  /etc/gshadow
    ---------- 1 root root 449 Jul 21 11:04 /etc/gshadow
    [root@qls ~]# 
    
    #以冒号为分隔符  分为4列
    [root@qls ~]# cat /etc/group		#用户组的基本信息文件 
    root:x:0:
    bin:x:1:
    daemon:x:2:
    mail:x:12:postfix
    
    
    第一列:	root		        #组的名称 
    第二列:	x			#组的密码占位符
    第三列:	0			#组的GID  
    第四列:				#用户名  哪些用户使用此组作为附加组  多个用逗号分割 
    
    #用户组的组密码文件
    #以冒号为分隔符  分为四列
    [root@qls ~]# cat /etc/gshadow
    root:::
    bin:::
    daemon:::
    mail:::postfix
    
    第一列:	root		#组的名称  
    第二列:	!或者空		#用户组的密码信息  空或者!是没有密码  
    第三列:	空		#用户组的管理者  
    第四列:	空		#用户名  哪些用户使用此组作为附加组  多个用逗号分割
    
    
    [root@qls ~]# usermod  -aG user05,user03,user01  qls01
    [root@qls ~]# grep  'qls01'  /etc/group
    user01:x:1000:qls01
    user03:x:665:qls01
    user05:x:1002:qls01
    qls01:x:1006:
    [root@qls ~]# grep  'qls01'  /etc/gshadow
    user01:!::qls01
    user03:!::qls01
    user05:!::qls01
    qls01:!::
    

    1)用户组相关命令

    1. 创建用户组的命令    groupadd
    选项:
    	-g		#指定组的ID  GID
    	-r		#创建系统组    
    
    [root@mpd ~]# chgrp ops_group /data  # 修改文件或则目录的基本组
    
    
    
    [root@qls ~]# groupadd   user_group01
    [root@qls ~]# tail  -1  /etc/group
    user_group01:x:1007:
    
    [root@qls ~]# groupadd  -g 666  user_group02
    [root@qls ~]# tail  -1  /etc/group
    user_group02:x:666:
    
    [root@qls ~]# groupadd   -r  user_group03
    [root@qls ~]# tail  -1  /etc/group
    user_group03:x:664:
    
    2. 修改用户组的命令	   groupmod
    选项:
    	-g		#修改用户组的ID  GID
    	-n		#修改组的名称  
    
    [root@qls ~]# groupmod   -g 6666  user_group01
    [root@qls ~]# grep  'user_group01'  /etc/group
    user_group01:x:6666:
    
    [root@qls ~]# groupmod   -n  new_group  user_group01
    [root@qls ~]# grep  'new_group'  /etc/group
    new_group:x:6666:
    
    3. 删除用户组的命令	   groupdel
    [root@qls ~]# groupdel   new_group
    [root@qls ~]# grep  'new_group'  /etc/group
    
    #删除作为某个用户的附加组的用户组  删除没有影响 
    [root@qls ~]# groupdel  user01
    
    [root@qls ~]# grep  '1002'  /etc/group
    user05:x:1002:qls01
    [root@qls ~]# grep  '1002'  /etc/passwd
    user05:x:1001:1002::/home/user05:/bin/bash
    test:x:1002:1003::/home/test:/bin/bash
    [root@qls ~]# id user05 
    uid=1001(user05) gid=1002(user05) groups=1002(user05)
    
    
    #删除一个组作为某个用户的基本组   是不能删除的
    解决:
    	给这里面的用户重新找个基本组 
    	把用户也一并删除掉 
    [root@qls ~]# groupdel   user05
    groupdel: cannot remove the primary group of user 'user05'
    [root@qls ~]# usermod  -g  1003  user05
    [root@qls ~]# id user05 
    uid=1001(user05) gid=1003(test) groups=1003(test)
    [root@qls ~]# groupdel   user05
    
    
    
  • 相关阅读:
    linux vim编辑
    jQuery Ajax 操作函数
    导出excel表功能
    jquery 分页控件功能
    数据绑定后细节处理
    删除数据库日志文件的操作语句
    SqlHelper.cs
    c#中$.ajax的使用
    SpringBoot 获取微信小程序openid
    Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13189479.html
Copyright © 2011-2022 走看看