美文网首页Linux测试复盘
LINUX用户和用户组-学习总结

LINUX用户和用户组-学习总结

作者: Rethink | 来源:发表于2018-07-04 15:03 被阅读2次

    系统环境:CentOS Linux release 7.3.1611 x86_64 GNU/Linux

    查看所有用户信息

    $ cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    ...
    rethink:x:1001:1001::/home/rethink:/bin/bash
    jenkins:x:1002:1002::/home/jenkins:/bin/bash
    
    $ cat /etc/passwd | grep jenkins
    jenkins:x:1002:1002::/home/jenkins:/bin/bash
    #字段格式说明:
    `用户名:密码:用户UID:用户组GID:备注:用户家目录:用户默认shell`
    

    /etc/passwd 所有用户都有读权限,但只有管理员有写权限,每一行都表示一个用户。第三个字段表示用户UID,0表示管理员root,1~500表示系统用户,501-65535表示普通用户,不同的Linux发行版,可能会有所差别。最后一个字段表示用户默认shell的路径,系统用户默认shell一般为/sbin/nologin,表示该用户不可登录。

    第二个字段是用户的密码,x是占位符,用户真正的密码是密文保存在/etc/shadow文件中的,这个文件只有管理员可读。

    # cat /etc/shadow
    root:$1$7TJOo0N3$jWOx8FmXcEMN88gdGISg0/::0:99999:7:::
    rethink:$6$/XN/F6Eu$yAwE5WN811EnmyLEa.k02MbYCDVw/vWlqn57QItruVRWMpVQGL1LLcg3xbOKhLGpiQ8f/6S7DKt.GJntPu7Kn/:17620:0:99999:7:::
    jenkins:$6$oIK6zhjM$GVOCRHB4X1XU.iUhEHi5LHmuv06HFWub7dz7IRT7hHTanKffyBFXyGGZ5mIXt8gD40kB18KdHTZEH4xbOXjFP1:17645:0:99999:7:::
    

    /etc/shadow文件中各个字段对应的含义,可以通过man 5 shadow命令来查看。

    用户管理命令

    使用--help参数,可查看命令更多详细介绍;

    • 添加新用户:useradd
    # useradd test
    # cat /etc/passwd | grep test
    test:x:1004:1004::/home/test:/bin/bash
    

    以上可以看到,useradd命令确实新增了一个新用户:test,并且系统会自动设置用户的一些属性,如UID,GID,HOME,SHELL HOME等。我们也可以创建新用户时指定这些信息:

    useradd -u UID:指定新用户的UID,这个UID必须大于500,并且没有被其他用户占用;
    useradd -g GID/GROUP_NAME:指定用户所属组,可以是GID或GROUPNAME,用户组必须是真实存在的;
    useradd -G GROUPS:指定附属用户组;
    useradd -c COMMENT:指定用户的备注信息
    useradd -d PATH:指定用户的家目录
    useradd -s SHELL:指定用户的默认shell
    useradd -s /sbin/nologin:该用户不可登录,和系统用户最后一个字段的值相同
    
    • 设置用户的认证信息: passwd,包括用户密码、密码过期时间等

    普通用户只能修改自己的密码,直接运行passwd即可 。新建用户后,若要为新用户创建密码,可使用 passwd USERNAME

    # passwd test
    Changing password for user test.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    
    • 删除用户: userdel
    # userdel USERNAME
    `删除用户的同时删除用户HOME目录`
    # userdel -r USERNAME 
    
    • 修改用户属性信息: usermod
    Usage: usermod [options] LOGIN
    
    Options:
      -c, --comment COMMENT         new value of the GECOS field
      -d, --home HOME_DIR           new home directory for the user account
      -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
      -f, --inactive INACTIVE       set password inactive after expiration
                                    to INACTIVE
      -g, --gid GROUP               force use GROUP as new primary group
      -G, --groups GROUPS           new list of supplementary GROUPS
      -a, --append                  append the user to the supplemental GROUPS
                                    mentioned by the -G option without removing
                                    him/her from other groups
      -h, --help                    display this help message and exit
      -l, --login NEW_LOGIN         new value of the login name
      -L, --lock                    lock the user account
      -m, --move-home               move contents of the home directory to the
                                    new location (use only with -d)
      -o, --non-unique              allow using duplicate (non-unique) UID
      -p, --password PASSWORD       use encrypted password for the new password
      -R, --root CHROOT_DIR         directory to chroot into
      -s, --shell SHELL             new login shell for the user account
      -u, --uid UID                 new UID for the user account
      -U, --unlock                  unlock the user account
      -Z, --selinux-user SEUSER     new SELinux user mapping for the user account
    
    • 检索用户属性信息: id
    # id jenkins
    uid=1002(jenkins) gid=1002(jenkins) groups=1002(jenkins)
    `显示用户UID`
    #id -u USERNAME
    `显示用户默认组ID`
    #id -g USERNAME
    `显示用户附加组ID`
    #id -G USERNAME
    `显示用户/默认组/附加值的名称`
    #id -n -g/-G/-u USERNAME
    
    • 检索用户属性信息 : finger,显示格式比id命令更加友好
    `安装finger命令`
    # yum install finger -y
    
    # finger
    Login     Name       Tty      Idle  Login Time   Office   Office Phone   Host
    root      root       pts/0          Jun 28 16:28                         (101.81.92.18)
    
    # finger jenkins
    Login: jenkins                  Name: 
    Directory: /home/jenkins                Shell: /bin/bash
    Last login Wed Jun 27 19:05 (CST) on pts/0
    No mail.
    No Plan.
    
    # finger -s jenkins
    Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
    jenkins              pts/0       *  Jun 27 19:05   
    

    查看所有用户组信息

    $ cat /etc/group
    root:x:0:
    bin:x:1:
    ...
    rethink:x:1001:
    jenkins:x:1002:
    docker:x:1003:
    
    #字段说明
    `组名:组密码:GID:以group_name为附加组的用户列表`
    
    # cat /etc/group | grep test:x
    test:x:1005:test4,test5
    

    Linux下,每个用户都有一个用户组,系统可以对用户组中的所有用户进行集中的权限管理。当创建用户时,如果没有为其指明所属组,则就为其定义一个私有的用户组,其名称与用户名相同。私有组可以变成普通用户组,当把其他用户加入到该组中时,其就变成了普通用户组。

    用户组管理命令

    • 添加新用户组:groupadd
    # groupadd bbox
    # cat /etc/group|grep bbox
    bbox:x:1011:
    
    • 删除用户组: groupdel
    # groupdel bbox
    # cat /etc/group|grep bbox
    # 
    
    • 重命名用户组:groupmod
    `命令格式:groupmod -n new_name old_name`
    # groupmod -n test_1 test
    # cat /etc/group|grep test_1
    test_1:x:1005:test4,test5
    

    补充命令

    1. who命令、whoami命令、who am i命令和w命令
    # who
    root     tty1         2018-06-28 18:18
    root     pts/0        2018-07-03 17:43 
    
    # who am i
    root     pts/0        2018-07-03 17:43 
    
    # su - docker
    Last login: Mon Jul  2 18:51:11 CST 2018 on pts/0
    
    $ whoami
    docker
    
    $ who am i
    root     pts/0        2018-07-03 17:43 
    
    $ who
    root     tty1         2018-06-28 18:18
    root     pts/0        2018-07-03 17:43 
    
    $ w
     18:32:24 up 5 days, 15 min,  2 users,  load average: 0.00, 0.02, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1                      Thu18    4days  0.10s  0.10s -bash
    root     pts/0    101.81.92.18     17:43    0.00s  0.00s  0.00s w
    

    总结如下 :

    • whoami 显示的是当前操作用户的用户名
    • who am i显示的是登录时的用户名 ,此命令相当于who -m
    • who 显示当前真正登录系统中的用户(不会显示那些用su命令切换用户的登录者)
    • w 不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细 ;
    1. Linux切换用户命令:su
      su是单词switch user的缩写。通过su命令,可以从普通用户切换到root用户,也可以从root用户切换到普通用户。从普通用户切换到root用户需要密码(该密码是普通用户的密码,但从root用户切换到普通用户不需要密码。
      susu -的区别

    su - root is the same as su - just like login as root,then the shell is login shell,which mean it will expericene a login process,usually .bash_profile and .bashrc will be sourced. su root is the same as su like you open an interactive shell in root name,then only .bashrc will be sourced.
    su命令只是切换到了root身份,但shell工作环境仍然是普通用户的环境;而su - 命令会将用户身份和shell环境一起切换到root,只有切换了shell环境才不会出现PATH环境变量的错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。所以要从当前用户切换到其它用户时,应该使用su -命令。如:

    $ whoami
    docker
    
    $ su root
    Password: 
    
    # echo $PWD
    /home/docker
    
    # su - root
    Last login: Tue Jul  3 18:54:23 CST 2018 on pts/1
    [root@JDu4e00u53f7 ~]# echo $PWD
    /root
    `用户的HOME目录已经改变了`
    

    【To be continued...】

    相关文章

      网友评论

        本文标题:LINUX用户和用户组-学习总结

        本文链接:https://www.haomeiwen.com/subject/fgmeuftx.html