Linux用户账号与分组

作者: fanyank | 来源:发表于2017-09-15 15:29 被阅读99次

    用户账号

    与用户账号相关的两个文件:

    • /etc/passwd
    • /etc/shadow
    1. /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    fanyank:x:1000:1000:This is my username:/home/fanyank:/bin/bash
    1       2   3    4             5               6          7
    
    • 1.账号名称
    • 2.密码,加密后的位于/etc/shadow中
    • 3.UID,0为root,1 ~ 500为系统账号,500 ~ 65535位其他登录账号
    • 4.GID,初始用户组的GID
    • 5.用户信息说明
    • 6.用户的主文件夹
    • 7.用户登录成功选择的shell版本
    1. /etc/shadow
    root:$6$0OJo2FY.$3beQsSvVUsJ8kgLsMBGczwiKk5jo2HwgP714fgnDB4R0kevyepVfoVvD/dg9VfaVVev8rdONZPe2ZP81MEHDr0:17388:0:99999:7:::
    fanyank:$6$yaE0qxKD$K6BycZBR5SpeG202tH6yVS5..QxAAgTEoMc5rcVLKI.pERh.1ogMphoyhE/t9ftsXfeDHjl86WW1NJH80ZbR91:17388:0:99999:7:::
        1                                                                     2                                   3  4   5   6 789
    
    • 1.账号名称
    • 2.加密后的密码(MD5加密)
    • 3.最近更改密码的日期
    • 4.密码不可变动的天数,0为可以随时变动
    • 5.密码需要重新更改的天数,999999为没有这个限制
    • 6.密码需要更改前提示的天数
    • 7.密码过期后的宽限时间
    • 8.账号失效日期
    • 9.保留

    用户组

    与用户组相关的两个文件:

    • /etc/group
    • /etc/gshadow
    1. /etc/group:
    root:x:0:
    fanyank:x:1000:
        1   2   3   4
    
    • 1.用户组名称
    • 2.用户组密码
    • 3.GID
    • 4.此用户组支持的账号名称

    我们从上可以看出root和fanyank两个用户组并没有包含任何账号,但是实际上root确实属于root用户组,fanyank也是属于fanyank用户组的,这是因为 root和fanyank这两个账号的初始用户组为root和fanyank,初始用户组是不需要填入的

    下面引出两个概念,初始用户组(initial group)有效用户组(effective group)

    • 初始用户组: 当用户登录系统,立刻拥有这个用户组的相关权限,在你新添加一个账号时,默认会新建一个同账号同名的用户组,该用户组也就是这个新建账号的初始用户组

    • 有效用户组: 新建文件或目录属于有效用户组,可以使用 groups 命令查看用户所属的全部分组,第一个即为该用户的有效用户组

    1. /etc/gshadow:
    root:*::
    fanyank:!::
        1   2 3 4
    
    • 1.用户组名
    • 2.密码,开头为!表示无合法密码,所以无用户组管理员(很少用到)
    • 3.用户组管理员的账号
    • 4.属于该组的账号,同/etc/group的4

    使用newgrp切换有效用户组

    newgrp 组名
    

    账号管理

    1. 新增用户:
    useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明] [-d 主文件夹绝对路径] [-s shell] 用户名
    
    • [-M]: 不创建用户主文件夹
    • [-m]: 创建用户文件夹
    1. 修改密码:
    passwd [--stdin]
    
    • [--stdin]: 来自前一个管道的数据,作为密码的输入
    eg: echo "haha" | passwd --stdin fanyank
    
    passwd [-lu] [-S] 账号
    
    • [-l]: 给账号上锁
    • [-u]: 给账号解锁
    • [-S]: 列出相关信息,即shadow中的大部分信息
    1. 修改账号设置:
    usermod [-cdegGlsuLU] 账号
    
    • [-c]: 修改说明
    • [-d]: 修改主文件夹
    • [-g]: 修改初始用户组,GID
    • [-G]: 修改次要用户组
    • [-a]: 增加次要用户组(与-G一起使用)
    eg: usermod -a -G fanyanks fanyank
    
    • [-l]: 修改账号名称
    • [-s]: 修改用户shell
    • [-u]: 修改用户UID
    • [-L]: 锁定账号
    • [-U]: 解锁账号
    1. 删除用户:
    userdel [-r] username
    
    • [-r]: 删除用户主文件夹

    用户组管理

    添加用户组:

    groupadd [-g gid] [-r] 用户组名
    

    修改用户组:

    groupmod [-g gid] [-n group-name] 用户组名
    

    删除用户组

    groupdel 用户组名
    

    用户身份切换

    su [-lm] [-c 命令] [username]
    
    • [-l]: 后接欲切换的账号
    • [-m]: 使用目前的环境配置
    • [-c]: 仅执行一次命令

    单纯的使用su切换,读取变量方式为no-login shell,环境配置不会生效

    sudo

    sudo [-b] [-u 新用户账号]
    
    • [-b]: 将后续的命令让系统自动执行,不与目前的Shell产生影响
    • [-u]: 接欲切换的用户,无此项为root
    eg: sudo -u fanyank touch /tmp/myfile
    注意下例的写法,sh -c "一串命令"
    eg: sudo -u fanyank sh -c "mkdir ~fanyank/www;cd ~fanyank/www;echo 'This is index.html file' > index.html"
    

    相关文章

      网友评论

        本文标题:Linux用户账号与分组

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