美文网首页
用户和组

用户和组

作者: 毛利卷卷发 | 来源:发表于2018-06-05 16:53 被阅读0次

    3A认证

    Authentication:认证,传统的认证方式比如密码,其他的比如使用公钥和私钥来认证
    Authorization:授权,给予用户相应的权限
    Accouting:审计,对用户的行为进行审查等等

    用户和组

    在Linux系统中,有用户和组两个概念,用户是被包含在组里面的

    用户

    分为两大类

    管理员:就是root,UID:0

    普通用户:系统用户(为了能够让有些后台进程以非管理员的身份运行,通常为此创建很多的系统用户,该类用户不用登陆系统),UID:1-499(centos6),1-999(centos7)。登录用户,UID:500+(centos6),1000+(centos7)

    组也有自己的GID,不同类型组的取值范围也是不一样的,同样也是16位二进制。组按照不同的分类可以分为以下3种类型的组:

    按管理员组和普通用户组

    管理员组:对系统有着管理权限的组,GID为0

    普通用户组:系统用户组: 1-499(centos6),1-999(centos7)。登陆用户组:500+(centos6),1000+(centos7)

    按主要组和附加组

    主要组:用户在创建的时候,都会默认创建一个与其名字相同的基本组

    附加组:一个用户属于一个基本组后,也可以添加多个其他的组,这些其他的组就成为附加组

    按用户数目

    私有组:组名同用户名且只包含一个用户

    公有组:组内包含多个用户

    用户和组的相关配置文件

    /etc/passwd

    用户及其属性信息

    [root@centos7 ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    ......
    fanjie:x:1002:1002::/home/fanjie:/bin/bash
    

    会看到一行从左到右被冒号分割成了7个部分,下面就这七个部分作出解释,我们以最后一行为例:

    1. fanjie:用户名
    2. x:密码位,默认使用了pwconv将密码映射到了/etc/shadow中,可以使用pwunconv将密码替代x,这样的话/etc/shadow文件就会被删除
    3. 1002:UID,用户的ID
    4. 1002:GID,用户的组ID
    5. GECOS:用户的全名或者注释
    6. /home/fanjie:用户的家目录
    7. /bin/bash:用户登陆后的默认shell,如果设置为/sbin/nologin,表示为不可交互式

    /etc/shadow

    用户密码及其相关属性

    [root@centos7 ~]# cat /etc/shadow
    root:$6$t7YfBMG2kWqZvykg$.nk3ovmX9ldIQVYHXtOxCr4nmjZqxrgRhIDLC1i1f2p2HNkGVD.DuFAUruVoCw2ceyx8QQN1QhEnm5BTLwE0X1::0:99999:7:::
    ......
    fanjie:!!:17673:0:99999:7:::
    

    会看到一行被冒号分为了9个部分,我们以root为例子来说明:

    1. fanjie:登陆的用户名
    2. 密码位:分为三个部分,$6为加密类型,$t7YfBMG2kWqZvykg为盐(salt),加盐的作用就是即使存在相同的密码,生成的密码也具有唯一性,$...为sha512加密后的密文,当密码前有!或者*代表这个用户被禁用了
    3. 17673:用户最近修改密码的日期,用天数表示,表示操你个1970年1月1日到被修改那天之间的天数
    4. 0:密码最短使用天数,0表示可以随时修改密码,如果为3,那么表示用户只能在当前日期的三天后才可以修改密码
    5. 99999:密码最长使用天数,相当于永久
    6. 7:密码失效前多少天提醒用户修改密码,默认为7天
    7. 密码过期多少天账户会被锁定
    8. 账号失效时间,也就是基于1970年1月1日的天数,当用户到了这个时间的时候,就无法在使用了
    9. 保留位

    /etc/group

    组及其信息

    [root@centos7 ~]# cat /etc/group
    root:x:0:
    ......
    fanjie:x:1000:
    

    每一行被冒号从左至右分割成了4个部分,还是以fanjie这一行来说明:

    1. fanjie:组名,默认创建一个用户,就会创建一个与其同名的组
    2. x:组密码占位符
    3. 1000:GID
    4. 是一个以逗号分隔的用户列表,为此组为附加组的用户列表

    /etc/gshadow

    组密码及其相关属性

    [root@centos7 ~]# cat /etc/gshadow
    root:::
    ......
    fanjie:!::
    

    每一行被冒号从左至右分割成了4个部分,还是以fanjie这一行来说明:

    1. fanjie:组名
    2. 如果为!或者是*,那么其他用户就不需要密码就可以加入到这个组中,如果组是设置密码的,则为一串密文,如果为空,则表示只有该组的成员可以获得组的权限
    3. 用户组的管理员,是一个以逗号分隔的用户列表,用户管理员可以修改密码和组成员,也跟组里其他成员拥有相同的权限
    4. 成员,是一个以逗号分隔的用户列表,以此组为附加组的用户的用户列表,应该要和/etc/group下的用户列表一样

    用户和组常用的管理命令

    pwck

    校验密码文件的完整性

    grpck

    校验组文件的完整性

    useradd

    创建一个新的用户,常用选项:

    • -u:创建用户时指定用户的ID
    • -o:配合-u选项,不检查UID的唯一性
    • -g:指定用户所属的基本组,可以为组名,也可以是GID
    • -c:指定用户的注释信息
    • -d:以指定的路径为家目录
    • -s:指定用户的默认shell
    • -G:指定用户附加组,组必须事先存在,多个组以逗号分隔
    • -N:不创建私有组为主组,使用users(默认存在的组,GID为100)
    • -r:创建系统用户
    • -m:创建家目录,属于系统用户
    • -M:不创建家目录,用于非系统用户
    [root@centos7 ~]# useradd -u 1009 fanjie8
    [root@centos7 ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    ......
    fanjie8:x:1009:1009::/home/fanjie8:/bin/bash
    

    用户在创建的时候会有一些默认值,默认值的设定在/etc/default/useradd中

    [root@centos7 ~]# cat /etc/default/useradd 
    # useradd defaults file
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    

    在新建普通用户的时候,会为其创建一个家目录,我们会发现一个用户家目录下默认会有很多隐藏文件,这些隐藏文件就是来自/etc/skel下

    [root@centos7 ~]# ls -a /etc/skel/
    .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
    

    还有其他的配置是保存在/etc/login.defs,比如是否创建家目录,UMASK,密码的时间的设置等等都在里面。

    chage

    查看和修改用户密码的相关时间,比如查看一个用户的时间

    [root@centos7 ~]# chage -l fanjie
    Last password change                    : May 22, 2018
    Password expires                    : never
    Password inactive                   : never
    Account expires                     : never
    Minimum number of days between password change      : 0
    Maximum number of days between password change      : 99999
    Number of days of warning before password expires   : 7
    

    getent

    可以用来查看系统的数据库中的相关记录,比如查看用户的passwd信息或shadow信息

    [root@centos7 ~]# getent passwd fanjie
    fanjie:x:1000:1000::/home/fanjie:/bin/bash
    [root@centos6 ~]# getent shadow fanjie
    fanjie:!!:17678:0:99999:7:::
    

    usermod

    用户属性的修改,常用选项:

    • -u:指定新的用户ID
    • -g:指定新的组
    • -G:指定新的附加组
    • -s:指定新的shell
    • -c:指定新的注释信息
    • -d:指定新的家目录不会自动创建,若要自动创建并移动原始家目录的数据,需要配合-m选项来使用
    • -l:修改登录名
    • -L:锁定用户,也就是在/etc/shadow密码栏前面加上!
    • -U:解锁用户,也就是拿掉!
    [root@centos7 ~]# getent shadow fanjie
    fanjie:$6$e3uZLz9r$69IndMMaEizzorAUkxXbhO.Ns9eEa41jC0egRZpSPHxcmrAZ9GbwV1L00SppzYPaMhRSjsi2cLLlrpJONNKak/:17673:0:99999:7:::
    [root@centos7 ~]# usermod -L fanjie
    [root@centos7 ~]# getent shadow fanjie
    fanjie:!$6$e3uZLz9r$69IndMMaEizzorAUkxXbhO.Ns9eEa41jC0egRZpSPHxcmrAZ9GbwV1L00SppzYPaMhRSjsi2cLLlrpJONNKak/:17673:0:99999:7:::
    

    userdel

    删除用户,默认情况下不删除用户的家目录,使用-r选项同时删除用户的家目录

    [root@centos7 ~]# userdel fanjie
    [root@centos7 ~]# useradd fanjie
    useradd: warning: the home directory already exists.
    Not copying any file from skel directory into it.
    Creating mailbox file: File exists
    

    id

    查看用户的相关信息,常用选项:

    • -u:显示UID
    • -g:显示GID
    • -G:显示所有的组ID
    • -n:显示名称,需要配合ugG使用
    [root@centos7 ~]# id fanjie
    uid=1002(fanjie) gid=1002(fanjie) groups=1002(fanjie),1003(test)
    [root@centos7 ~]# id -u fanjie
    1002
    [root@centos7 ~]# id -g fanjie
    1002
    [root@centos7 ~]# id -G fanjie
    1002 1003
    [root@centos7 ~]# id -Gn fanjie
    fanjie test
    

    su

    切换用户,root用户su到任何用户都不需要密码

    su username:非登录切换,不会读取目标用户的配置文件,不会变更当前的工作目录

    su - username:登录切换,会读取目标用户的配置文件。切换至目标用户的家目录

    # 使用目标用户执行命令
    [root@centos7 ~]# su - fanjie -c "mkdir /app/fanjie"
    mkdir: cannot create directory ‘/app/fanjie’: Permission denied
    

    passwd

    修改用户密码,常用选项:

    • -l:锁定指定的用户
    • -u:解锁用户
    • -e:强制用户下次登录修改密码
    • --stdin:从标准输入接受用户的密码
    # 强制用户下次登录修改密码
    [root@centos6 ~]# passwd -e fanjie
    Expiring password for user fanjie.
    passwd: Success
    [root@centos6 ~]# su - fanjie1
    [fanjie1@centos6 ~]$ su - fanjie
    Password: 
    You are required to change your password immediately (root enforced)
    Changing password for fanjie.
    (current) UNIX password: 
    New password: 
    Retype new password: 
    
    # 从标准输入修改密码
    [root@centos6 ~]# echo 123 |passwd --stdin fanjie
    Changing password for user fanjie.
    passwd: all authentication tokens updated successfully.
    

    finger

    用来显示用户的相关信息

    [root@centos7 ~]# finger
    Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
    root      root       pts/0          May 22 16:26                           (172.18.118.140)
    

    练习

    1. 创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

      [root@centos7 ~]# useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo
      
    2. 创建用户sarah,不可交互登录系统

      [root@centos7 ~]# useradd -s /sbin/nologin sarah
      [root@centos7 ~]# su - sarah
      This account is currently not available.
      

    group

    新增组,常用选项:

    • -g:指定GID
    • -r:创建系统组

    groupmod

    修改组的信息,常用选项:

    • -g:修改GID
    • -n:修改组名称

    groupdel

    删除组

    gpasswd

    设置组密码,也能添加或者删除组成员,常用选项:

    • -a:添加单个用户到指定组(组管理员可执行)
    • -d:删除指定的组中单个用户(组管理员可执行)
    • -r:将指定的组密码删除(组管理员可执行)
    • -R:禁止切换该组,该组的密码被设置为了!,仅仅只有组成员才可以使用newgroup切换到该组
    • -M:可以一次性设置多个组成员,但会覆盖掉原来的组成员信息,组管理员不可执行,仅仅只有root用户可以执行,用逗号分隔成员,若不想覆盖,直接追加,可以配合-a选项
    • -A:设置组管理员的列表,用逗号分隔

    newgrp

    切换到一个新组,用户在切换到自己的附加组的时候,是不需要输入密码的,但是切换到其他的 组中的时候,需要验证密码。切换的时候会打开一个子shell

    groupmems

    • -g:指定组的名字,配合以下选项使用
      • -a:将指定的用户加到指定的组
      • -d:将指定的用户从组中删除
      • -p:清除该组的所有成员
      • -l:列出组成员列表

    groups

    查看用户属于哪些组(包含主要组)

    chown

    修改文件的属主和属组,常用选项:

    • -R:递归修改
    • ./::修改属组
    • --reference=目标名 待修改的文件名:将指定文件的从属关系设置为目标文件的从属关系
    [root@centos7 app]# ll
    total 0
    -rw-r--r--. 1 root   root    0 May 24 09:25 b
    dr-x------. 4 fanjie fanjie 87 May 23 20:46 test
    [root@centos7 app]# chown wangcai.wangwu b
    [root@centos7 app]# ll
    total 0
    -rw-r--r--. 1 wangcai wangwu  0 May 24 09:25 b
    dr-x------. 4 fanjie  fanjie 87 May 23 20:46 test
    [root@centos7 app]# chown --reference=test b
    [root@centos7 app]# ll
    total 0
    -rw-r--r--. 1 fanjie fanjie  0 May 24 09:25 b
    dr-x------. 4 fanjie fanjie 87 May 23 20:46 test
    

    chgrp

    修改文件的属组,所属人要修改时,所属人一定要属于目标组,可配合-R递归删除

    相关文章

      网友评论

          本文标题:用户和组

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