鸟哥的linux私房菜学习笔记《二十五》账号管理

  1. 概述
    每一个文件都会有所谓的拥有者 ID 与拥有群组 ID ,当我们有要显示文件属性的需求时,系统会依据 /etc/passwd与 /etc/group 的内容, 找到 UID / GID 对应的帐号与群组名称再显示出来。
  2. 查看特定用户密码文件

    [root@CentOS ~]# grep 'kevin' /etc/passwd
    kevin:x:500:500::/home/kevin:/bin/bash
    [root@CentOS ~]# ll -d /etc/passwd
    -rw-r--r--. 1 root root 2548 Mar  2 05:50 /etc/passwd
    
  3. 输入账号后,系统处理流程
    1 . 先找寻 /etc/passwd 里面是否有你输入的帐号?如果没有则跳出,如果有的话则将该帐号对应的 UID 与 GID (在 /etc/group 中) 读出来,另外,该帐号的主文件夹与 shell 设置也一并读出;
    2 . 再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的帐号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
    3 . 如果一切都 OK 的话,就进入 Shell 控管的阶段
  4. 两个文件:
    一个是管理使用者UID/GID 重要参数的 /etc/passwd ,一个则是专门管理密码相关数据的 /etc/shadow,详细的说明可以参考 man 5 passwd 及 man 5 shadow
  5. /etc/passwd字段详解(冒号隔开,七个字段)

    [root@CentOS ~]# head -n 4 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin

    1 . 用户账号
    2 . 密码:被改到/etc/shadow,所以显示x
    3 . UID
    这里写图片描述
    4 . GID:规定组名与GID的对应而已
    5 . 用户信息说明列:解释账号的意义
    6 . 主文件夹
    7 . Shell:当使用者登陆系统后就会取得一个 Shell 来与
    系统的核心沟通以进行使用者的操作任务。那为何默认 shell 会使用 bash 呢?就是在这
    个字段指定的啰! 这里比较需要注意的是,有一个 shell 可以用来替代成让帐号无法取得shell 环境的登陆动作,那就是 /sbin/nologin 。

  6. /etc/shadow字段详解(冒号隔开,九个字段)

    [root@CentOS ~]# head -n 4 /etc/shadow
    root:$6$/FNg5CtP$KsYAYM4LBgkAYbvD5MiPAOSMcmAnohDcANoZspPblw7Eh9MqwlQzhmsyCgvTMg5E.yAWyhWHg/lufHCd6sbU21:17227:0:99999:7:::
    bin:*:15980:0:99999:7:::
    daemon:*:15980:0:99999:7:::
    adm:*:15980:0:99999:7:::
    

    1 . 账号名称:必须与/etc/passwd的账号相同
    2 . 密码:真正的密码
    “当你让这个字段的长度改变后,该密码就会失效(算不出来)”。 很多软件通过这个功能,在此字段前加上 ! 或 * 改变密码字段长度,就会让密码“暂时失效”了。
    3 . 最近更改密码的日期:从1970.1.1开始的累加日期
    4 . 密码不可被改动的天数(与第三个字段相比)
    如果是 0 的话, 表示密码随时可以更动的意思。如果设置为 20 天的话,那么当你设置了密码之后, 20 天之内都无法改变这个密码。
    5 . 密码需要重新更改的天数(与第三个字段相比)
    必须要在这个天数内重新设置你的密码,否则这个帐号的密码将会“变为过期特性”。 而如果像上面的 99999 (计算为 273 年) 的话,那就表示密码的变更没有强制性之意。
    6 . 密码需要更改期限前的警告天数(与第五个字段相比)
    系统会依据这个字段的设置,发出“警告”言论给这个帐号,提醒他“再过 n 天你的密码就要过期了,请尽快重新设置你的密码
    7 . 密码过期后的账号宽限时间
    如果密码过期了, 那当你登陆系统时,系统会强制要求你
    必须要重新设置密码才能登陆继续使用喔,这就是密码过期特性
    8 . 账号失效日期
    这个帐号在此字段规定的日期之后,将无法再使用。
    9 . 保留

    
    # 想要计算某个日期的累加日数:
    
    [root@CentOS ~]# echo $(($(date --date="2008/09/04" +%s)/86400+1))
    14126
  7. /etc/group字段详解(冒号隔开,三个字段)

    [root@CentOS ~]# head -n 4 /etc/group
    root:x:0:
    bin:x:1:bin,daemon
    daemon:x:2:bin,daemon
    sys:x:3:bin,adm

    1 . 用户组名称
    2 . 用户组密码:/etcgshadow中,此处为x
    3 . GID
    4 . 此用户组支持的账号名称,逗号隔开
    这里写图片描述

  8. 有效用户组和初始用户组
    1 . 添加有效用户组

    [root@CentOS ~]# usermod -G users kevin
    [root@CentOS ~]# grep kevin /etc/passwd /etc/group /etc/gshadow
    /etc/passwd:kevin:x:500:500::/home/kevin:/bin/bash
    /etc/group:users:x:100:kevin
    /etc/group:kevin:x:500:
    /etc/gshadow:users:::kevin
    

    我将kevin加入 users这个群组当中,由于 users 这个群组并非是 kevin的初始群组,因此, 我必须要在/etc/group 这个文件中,找到 users 那一行,并且将kevin这个帐号加入第四栏, 这样kevin才能够加入 users 这个用户组。
    2 . groups:有效与支持用户组的查看

    [root@CentOS ~]# groups
    root sfcb
    [root@CentOS ~]# groups kevin
    kevin : kevin users
    [root@CentOS ~]# 
    
    # 第一个输出的用户组即为有效用户组
    
    
    [kevin@CentOS ~]$ groups
    kevin users
    [kevin@CentOS ~]$ touch test
    [kevin@CentOS ~]$ ll
    -rw-rw-r--. 1 kevin kevin    0 Mar 18 12:48 test
    
    # 以有效用户组创建文件
    

    3 . newgrp:有效用户组的切换
    想要切换的群组必须是你已经有支持的群组

    [kevin@CentOS ~]$ groups
    kevin users
    [kevin@CentOS ~]$ newgrp users
    [kevin@CentOS ~]$ groups
    users kevin
    [kevin@CentOS ~]$ touch test2
    [kevin@CentOS ~]$ ll
    -rw-r--r--. 1 kevin users    0 Mar 18 12:53 test2
    
  9. /etc/gshadow字段详解(冒号隔开,四个字段)

    [root@CentOS ~]# head -n 4 /etc/gshadow
    root:::
    bin:::bin,daemon
    daemon:::bin,daemon
    sys:::bin,adm
    
    # 如果密码栏上面是“!”或空的时,表示该用户组不具有用户组管理员
    

    1 . 群组名称
    2 . 密码栏,同样的,开头为 ! 表示无合法密码,所以无群组管理员
    3 . 群组管理员的帐号 (相关信息在 gpasswd 中介绍)
    4 . 有加入该群组支持的所属帐号 (与 /etc/group 内容相同!)
    gshadow 最大的功能就是创建用户组管理员
    该用户组管理员就能够将那个帐号加入自己管理的用户组中! 可以免去 root 的忙碌

  10. useradd:新增用户
    参数:
    -u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个帐号;
    -g :后面接的那个群组名称就是我们上面提到的 initial group 。该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。
    -G :后面接的群组名称则是这个帐号还可以加入的群组。这个选项与参数会修改 /etc/group 内的相关数据!
    -M :强制!不要创建使用者主文件夹!(系统帐号默认值)
    -m :强制!要创建使用者主文件夹!(一般帐号默认值)
    -c :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设置的啦~
    -d :指定某个目录成为主文件夹,而不要使用默认值。务必使用绝对路径!
    -r :创建一个系统的帐号,这个帐号的 UID 会有限制 (参考 /etc/login.defs)
    -s :后面接一个 shell ,若没有指定则默认是 /bin/bash 的啦~
    -e :后面接一个日期,格式为“YYYY-MM-DD”此项目可写入 shadow 第八字段,亦即帐号失效日的设置项目;
    -f :后面接 shadow 的第七字段项目,指定密码是否会失效。0为立刻失效,
    -1 为永远不失效(密码只会过期而强制于登陆时重新设置而已。)

    
    # 参照默认值,新建用户user1
    
    [root@CentOS ~]# useradd user1
    [root@CentOS ~]# ll -d /home/user1
    drwx------. 4 user1 user1 4096 Mar 18 13:00 /home/user1
    
    # 默认权限700
    
    
    [root@CentOS ~]# grep user1 /etc/passwd /etc/shadow /etc/group
    /etc/passwd:user1:x:501:501::/home/user1:/bin/bash
    /etc/shadow:user1:!!:17243:0:99999:7:::
    /etc/group:user1:x:501:
    
    # 默认创建一个与账号一模一样的用户组
    
    
    
    # 创建一个系统账户
    
    [root@CentOS ~]# useradd -r user2
    [root@CentOS ~]# ll -d /home/user2
    ls: cannot access /home/user2: No such file or directory
    
    # 不会主动创建主目录
    
    [root@CentOS ~]# grep user2 /etc/passwd /etc/shadow /etc/group
    /etc/passwd:user2:x:494:489::/home/user2:/bin/bash
    /etc/shadow:user2:!!:17243::::::
    /etc/group:user2:x:489:
    
    # 系统账户,UID和GID都会小于500
    

    在用useradd创建用户时,CentOS 这些默认值主要会帮我们处理几个项目:
    1 . 在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建UID/GID/主文件夹等;
    2 . 在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
    3 . 在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;
    4 . 在 /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700

  11. useradd参考文件

    
    # useradd的默认值可以使用下面方法调出来:
    
    [root@CentOS ~]# useradd -D
    GROUP=100  #新建账号的初始用户组使用GID为100者
    HOME=/home  #默认主目录所在目录
    INACTIVE=-1  # 密码失效日,shadow第七列,-1代表永久不会失效
    EXPIRE=  #账号失效日,shadow第八列
    SHELL=/bin/bash  #默认shell
    SKEL=/etc/skel  #用户主目录的内容参考的目录
    CREATE_MAIL_SPOOL=yes  #是否创建邮箱
    
    # 这些数据其实是/etc/default/useradd调用出来的
    
    
    # CentOS默认的用户组为与账号名相同的用户组
    
    
    # CentOS使用私有用户组机制
    
    
    # user1 主文件夹 /home/user1 内的各项数据,都是由 /etc/skel 所复制过去的,所以,未来如果我想要让新增使用者时,该使用者的环境变量 ~/.bashrc 就设置妥当的话,您可以到 /etc/skel/.bashrc去编辑一下,也可以创建 /etc/skel/www 这个目录,那么未来新增使用者后,在他的主文件夹下就会有 www 那个目录了.
    

    除了这些基本的帐号设置值之外, UID/GID 还有密码参数又是在哪里参考的呢?那就得要看一下 /etc/login.defs 啦! 这个文件的内容有点像下面这样:
    这里写图片描述
    使用 useradd 这支程序在创建 Linux 上的帐号时,至少会参考:
    /etc/default/useradd
    /etc/login.defs
    /etc/skel/*

  12. passwd: 设置密码
    参数:
    –stdin :可以通过来自前一个管线的数据,作为密码输入,对 shell script 有帮助!
    -l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
    -u :与 -l 相对,是 Unlock 的意思!
    -S :列出密码相关参数,亦即 shadow 文件内的大部分信息。
    -n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数
    -x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码
    -w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数
    -i :后面接“日期”,shadow 的第 7 字段,密码失效日期

    
    # root给user1修改密码
    
    Changing password for user user1.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    
    # root要帮一般帐号创建密码需要使用“ passwd帐号 ”的格式,使用“ passwd ”表示修改root自己的密码
    

    新的 distributions 是使用较严格的 PAM 模块来管理密码,这个管理的机制写在 /etc/pam.d/passwd 当中。而该文件与密码有关的测试模块就是使用:pam_cracklib.so,这个模块会检验密码相关的信息, 并且取代 /etc/login.defs 内的 PASS_MIN_LEN 的设置。
    理论上,你的密码最好符合如下要求:
    (1) . 密码不能与帐号相同;
    (2) . 密码尽量不要选用字典里面会出现的字串;
    (3) . 密码需要超过 8 个字符;
    (4) . 密码不要使用个人信息,如身份证、手机号码、其他电话号码等;
    (5) . 密码不要使用简单的关系式,如 1+1=2, Iamvbird 等;
    (6) . 密码尽量使用大小写字符、数字、特殊字符($,_,-等)的组合。

    
    # 使用标准输入创建用户,会在历史记录显示密码,一般用在脚本批量用户使用
    
    [root@CentOS ~]# echo "abc543CC" | passwd --stdin user2
    
    # 管理user2的密码,使其具有60天更改,10天密码失效的设置
    
    [root@CentOS ~]# passwd -S user2
    user2 PS 2017-03-18 0 99999 7 -1 (Password set, SHA512 crypt.)
    [root@CentOS ~]# passwd -x 60 -i 10 user2
    Adjusting aging data for user user2.
    passwd: Success
    [root@CentOS ~]# passwd -S user2
    user2 PS 2017-03-18 0 60 7 10 (Password set, SHA512 crypt.)
    
    
    # 让user2的账号失效,查看完毕后让其失效
    
    [root@CentOS ~]# passwd -l user2
    Locking password for user user2.
    passwd: Success
    [root@CentOS ~]# passwd -S user2
    user2 LK 2017-03-18 0 60 7 10 (Password locked.) # LK,LocK,使之无法登陆
    [root@CentOS ~]# grep user2 /etc/shadow
    user2:!!$6$TevlYaoU$UNDeQmI/NdCIAttIhTf2RFhEsqSUc1Z6JAAJId1VIe5Z8btJ4JPiWQSyZkTe3tqUh1gJBcYXedmijXMFZgTXI1:17243:0:60:7:10::  # 在密码部分加上!!
    [root@CentOS ~]# passwd -u user2
    Unlocking password for user user2.
    passwd: Success
    [root@CentOS ~]# grep user2 /etc/shadow
    user2:$6$TevlYaoU$UNDeQmI/NdCIAttIhTf2RFhEsqSUc1Z6JAAJId1VIe5Z8btJ4JPiWQSyZkTe3tqUh1gJBcYXedmijXMFZgTXI1:17243:0:60:7:10::  # 密码恢复正常
    
  13. chage:显示详细密码参数
    参数:
    -l :列出该帐号的详细密码参数;
    -d :后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD
    -E :后面接日期,修改 shadow 第八字段(帐号失效日),格式 YYYY-MM-DD
    -I :后面接天数,修改 shadow 第七字段(密码失效日期)
    -m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
    -M :后面接天数,修改 shadow 第五字段(密码多久需要进行变更)
    -W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)

    
    # 列出user2的详细密码参数
    
    [root@CentOS ~]# chage -l user2
    Last password change                    : Mar 18, 2017
    Password expires                    : May 17, 2017
    Password inactive                   : May 27, 2017
    Account expires                     : never
    Minimum number of days between password change      : 0
    Maximum number of days between password change      : 60
    Number of days of warning before password expires   : 7
    
    
    # 新建一个用户user3,该账号第一次登录后使用默认密码,但必须要更改密码后才能够登录系统作为bash环境
    
    [root@CentOS ~]# useradd user3
    [root@CentOS ~]# echo "agetest" | passwd --stdin user3
    Changing password for user user3.
    passwd: all authentication tokens updated successfully.
    [root@CentOS ~]# chage -d 0 user3
    
    # 让登录后即修改密码
    
    
  14. usermod:修改用户账号
    参数:
    -c :后面接帐号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些帐号的说明。
    -d :后面接帐号的主文件夹,即修改 /etc/passwd 的第六栏;
    -e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦!
    -f :后面接天数,为 shadow 的第七字段。
    -g :后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段!
    -G :后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~
    -a :与 -G 合用,可“增加次要群组的支持”而非“设置”喔!
    -l :后面接帐号名称。亦即是修改帐号名称, /etc/passwd 的第一栏!
    -s :后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。
    -u :后面接 UID 数字啦!即 /etc/passwd 第三栏的数据;
    -L :暂时将使用者的密码冻结,让他无法登陆。其实仅改 /etc/shadow 的密码栏。
    -U :将 /etc/shadow 密码栏的 !

    
    # 修改user2的说名列,加上“kevin test”的说明
    
    [root@CentOS ~]# usermod -c "kevin test" user2
    [root@CentOS ~]# grep user2 /etc/passwd
    user2:x:494:489:kevin test:/home/user2:/bin/bash
    
    
    # 用户user2密码在2018/12/31失效
    
    [root@CentOS ~]# usermod -e "2019/12/31" user2
    [root@CentOS ~]# grep user2 /etc/shadow
    user2:$6$TevlYaoU$UNDeQmI/NdCIAttIhTf2RFhEsqSUc1Z6JAAJId1VIe5Z8btJ4JPiWQSyZkTe3tqUh1gJBcYXedmijXMFZgTXI1:17243:0:60:7:10:18261: # 18261
    [root@CentOS ~]# echo $(($(date --date="2019/12/31" +%s)/86400+1))
    18261
    
    
    # 详解user4这个系统账号时并没有给予主目录,请新建主目录
    
    [root@CentOS ~]# useradd -r user4
    [root@CentOS ~]# ll -d user4
    ls: cannot access user4: No such file or directory
    [root@CentOS ~]# cp -a /etc/skel /home/user4
    [root@CentOS ~]# chown -R user4:user4 /home/user4
    [root@CentOS ~]# chmod 700 /home/user4
    [root@CentOS ~]# ll -a /home/user4
    total 32
    drwx------. 4 user4 user4 4096 Mar  2 05:25 . #主目录权限
    drwxr-xr-x. 7 root  root  4096 Mar 18 14:03 ..
    -rw-r--r--. 1 user4 user4   18 Jul 18  2013 .bash_logout
    -rw-r--r--. 1 user4 user4  176 Jul 18  2013 .bash_profile
    -rw-r--r--. 1 user4 user4  124 Jul 18  2013 .bashrc
    -rw-r--r--. 1 user4 user4  500 May  7  2013 .emacs
    drwxr-xr-x. 2 user4 user4 4096 Nov 12  2010 .gnome2
    drwxr-xr-x. 4 user4 user4 4096 Mar  2 05:06 .mozilla
    
    # 使用 chown -R 是为了连同主文件夹下面的使用者/群组属性都一起变更的意思;
    
    
    # 使用 chmod 没有 -R ,是因为我们仅要修改目录的权限而非内部文件的权限。
    
  15. userdel:删除用户
    参数:
    -r :连同使用者的主文件夹也一起删除

    
    # 删除user4
    
    [root@CentOS ~]# userdel -r user4
    

    通常我们要移除一个帐号的时候,你可以手动的将/etc/passwd 与 /etc/shadow 里头的该帐号取消即可!一般而言,如果该帐号只是“暂时不启用”的话,那么将 /etc/shadow 里头帐号失效日期 (第八字段) 设置为 0 就可以让该帐号无法使用,但是所有跟该帐号相关的数据都会留下来! 使用 userdel 的时机通常是“你真的确定不要让该用户在主机上面使用任何数据了!”

  16. finger:查阅用户相关信息
    参数:
    -s :仅列出使用者的帐号、全名、终端机代号与登陆时间等等;
    -m :列出与后面接的帐号相同者,而不是利用部分比对 (包括全名部分)

    
    # 查看user3的用户相关账号属性
    
    root@kali:~# finger user3
    Login: user3                    Name: 
    Directory: /home/user3                  Shell: /bin/sh
    Never logged in.
    No mail.
    No Plan.

    列出的信息说明如下:
    (1) Login:为使用者帐号,亦即 /etc/passwd 内的第一字段;
    (2)Name:为全名,亦即 /etc/passwd 内的第五字段(或称为注解);
    (3)Directory:就是主文件夹了;
    (4)Shell:就是使用的 Shell 文件所在;
    (5)Never logged in.:figner 还会调查使用者登陆主机的情况喔!
    (6)No mail.:调查 /var/spool/mail 当中的信箱数据;
    (7)No Plan.:调查 ~vbird1/.plan 文件,并将该文件取出来说明!

  17. chfn:修改用户详细信息
    参数:
    -o :您办公室的房间号码;
    -p :办公室的电话号码;
    -h :家里的电话号码!

    
    # user3更改自己的相关信息
    
    [user3@CentOS ~]$ chfn
    Password: 
    Changing the user information for user3
    Enter the new value, or press ENTER for the default
        Full Name: 
        Room Number []: dafe
        Work Phone []: 010-00001111
        Home Phone []: 010-00002222
    
    [user3@CentOS ~]$ grep user3 /etc/passwd
    user3:x:1000:1000:,dafe,010-00001111,010-00002222:/home/user3:/bin/sh
    
    [user3@CentOS ~]$ finger user3
    Login: user3                    Name: 
    Directory: /home/user3                  Shell: /bin/sh
    Office: dafe, 010-00001111      Home Phone: 010-00002222
    Never logged in.
    No mail.
    No Plan.
    
  18. chsh:修改shell
    参数:
    -l :列出目前系统上面可用的 shell ,其实就是 /etc/shells 的内容!
    -s :设置修改自己的 Shell

    
    # 用user3的身份列出系统上所有合法的shell,并指定csh为自己的shell
    
    [user3@CentOS ~]$ chsh -l
    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/dash
    /bin/tcsh
    /bin/csh
    
    # 其实上面的信息在/etc/shells
    
    
    [user3@CentOS ~]$ chsh -s /bin/csh; grep user3 /etc/passwd
    Changing shell for user3.
    Password: 
    Shell changed.
    user3:x:502:502::/home/user3:/bin/csh
    
    
    # 还原更改
    
    [user3@CentOS ~]$ chsh -s /bin/bash
    Changing shell for user3.
    Password: 
    Shell changed.
    
    
    # 查看文件权限(SUID)
    
    [user3@CentOS ~]$ ll $(which chsh)
    -rws--x--x. 1 root root 15432 Nov 22  2013 /usr/bin/chsh
    

    不论是 chfn 与 chsh ,都是能够让一般使用者修改 /etc/passwd 这个系统文件的!这两个文件的权限就是 SUID 的功能

  19. id :查看用户ID信息

    
    # 查看自己的相关ID信息:
    
    [root@CentOS ~]# id
    uid=0(root) gid=0(root) groups=0(root),490(sfcb) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
    
    # 查看keivn的相关ID信息:
    
    [root@CentOS ~]# id kevin
    uid=500(kevin) gid=500(kevin) groups=500(kevin),100(users)
    
  20. groupadd:新建用户组
    参数:
    -g :后面接某个特定的 GID ,用来直接给予某个 GID
    -r :创建系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。

    
    # 新建用户组group1
    
    [root@CentOS ~]# groupadd group1
    [root@CentOS ~]# grep group1 /etc/group /etc/gshadow
    /etc/group:group1:x:503:
    /etc/gshadow:group1:!::
    
    # 如果要创建用户组的话,最好能够使用“ groupadd -r 用户组组名”的方式来创建
    
  21. groupmod:删除用户组
    参数:
    -g :修改既有的 GID 数字;
    -n :修改既有的群组名称

    
    # 新建group2,然后修改为mygroup,GID为201
    
    [root@CentOS ~]# groupadd group2
    [root@CentOS ~]# groupmod -g 201 -n mygroup group2
    [root@CentOS ~]# grep mygroup /etc/group /etc/gshadow
    /etc/group:mygroup:x:201:
    /etc/gshadow:mygroup:!::
    
  22. groupdel:删除用户组

    
    # 删除用户组
    
        [root@CentOS ~]# groupdel group1
        [root@CentOS ~]# groupdel kevin
        groupdel: cannot remove the primary group of user 'kevin'
        # 为什么 mygroup 可以删除,但是 vbird1 就不能删除呢?原因很简单,“有某个帐号(/etc/passwd) 的 initial group (初始用户组)使用该群组
  23. gpasswd : 用户组管理成员功能
    参数:
    :若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)
    -A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员)
    -M :将某些帐号加入这个群组当中!
    -r :将 groupname 的密码移除
    -R :让 groupname 的密码栏失效
    -a :将某位使用者加入到 groupname 这个群组当中!
    -d :将某位使用者移除出 groupname 这个群组当中。

    
    # 新建一个新用户组,名称为testgroup且用户组交由kevin管理
    
    [root@CentOS ~]# groupadd testgroup
    [root@CentOS ~]# gpasswd testgroup
    Changing the password for group testgroup
    New Password: 
    Re-enter new password: 
    [root@CentOS ~]# gpasswd -A kevin testgroup
    [root@CentOS ~]# grep testgroup /etc/group /etc/gshadow
    /etc/group:testgroup:x:503:
    /etc/gshadow:testgroup:$6$FBSd6/5ai.p/diy1$3s07ow3EIWW5hx/jdAnugEco.zsf36Ey8blbEluC58x2Fn2h9F4p5PZYusGlwnD.OyjDbJfC6x8v6iDZr1VEg/:kevin:
    
    # kevin拥有testgroup这个用户组的主控权
    
    
    
    # 以kevin登录系统,并且让他加入user1,user2成为testgroup成员
    
    [root@CentOS ~]# id
    uid=0(root) gid=0(root) groups=0(root),490(sfcb) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [root@CentOS ~]# gpasswd -a user1 testgroup
    Adding user user1 to group testgroup
    [root@CentOS ~]# gpasswd -a user2 testgroup
    Adding user user2 to group testgroup
    [root@CentOS ~]# grep testgroup /etc/group
    testgroup:x:503:user1,user2
    
  24. 账号管理练习
    这里写图片描述

    
    # 先处理账号相关属性
    
    [root@CentOS ~]# groupadd group1
    [root@CentOS ~]# useradd -G group1 -c "1st user" myuser1
    [root@CentOS ~]# useradd -G group1 -c "2nd user" myuser2
    [root@CentOS ~]# useradd -c "3rd" -s /sbin/nologin myuser3
    
    
    # 在处理密码相关属性
    
    [root@CentOS ~]# echo "password" | passwd --stdin myuser1
    [root@CentOS ~]# echo "password" | passwd --stdin myuser2
    [root@CentOS ~]# echo "password" | passwd --stdin myuser3
    

    任务二:我的使用者 pro1, pro2, pro3 是同一个专案计划的开发人员,我想要让这三个用户在
    同一个目录下面工作, 但这三个用户还是拥有自己的主文件夹与基本的私有群组。假设我要
    让这个专案计划在 /srv/projecta 目录下开发, 可以如何进行?

    
    # 创建用户和用户组
    
    [root@CentOS ~]# useradd -G projecta -c "projecta user" pro1
    [root@CentOS ~]# useradd -G projecta -c "projecta user" pro2
    [root@CentOS ~]# useradd -G projecta -c "projecta user" pro3
    [root@CentOS ~]# echo "password" | passwd --stdin pro1
    [root@CentOS ~]# echo "password" | passwd --stdin pro2
    [root@CentOS ~]# echo "password" | passwd --stdin pro3
    
    # 新建项目的开发目录
    
    [root@CentOS ~]# mkdir /srv/projecta
    [root@CentOS ~]# chgrp projesta /srv/projecta/
    chgrp: invalid group: `projesta'
    [root@CentOS ~]# chmod 2770 /srv/projecta/
    [root@CentOS ~]# ll -d /srv/projecta/
    drwxrws---. 2 root root 4096 Mar 18 15:00 /srv/projecta/
    [root@CentOS ~]# 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值