第七章:用户管理
——>实验专题<——
#1、用户信息#/etc/passwd 用户信息文件roo:x:1000:1000:root:/home/roo:/bin/bash// 用户名:密码位:用户UID:组GID:用户说明:用户家目录:登录shell#/etc/shadow 影子文件roo:$6$53k21lEt38FMlIOL$V.v8s7hereixVZEqAuganjS2tfP7LMj5OtI4kusRhoGYDO/iHMHazpFzc5qFIl8J1KbD2EXFmoyxuKJHKDUxM.:18662:0:99999:7:::// 用户名:加密密码:密码最近更改时间:两次密码的修改间隔时间:密码有效时间:密码修改到期前警告天数:密码过期后宽限天数:密码失效时间 :保留#/etc/group 组信息文件roo:x:1000:// 组名:组密码位:GID:此组支持的其它用户:初始组:附加组#/etc/gshadow 组密码文件roo:!::#/etc/skel/ 用户模板目录[root@server11 ~]# cat /etc/default/useradd #添加用户默认的值配置文件[root@server11 ~]# cat /etc/login.defs #添加用户默认的值的配置文件#[root@server11 ~]#history -c #清空历史命令#修改用户的密码修改时间改为0[root@server11 ~]# chage -d 0 yanqi#使用字符串设置密码[root@server11 ~]# echo "123" | passwd --stdin yanqi#将yanqi1和yanqi2添加到yanqi组里[root@server11 ~]# usermod -G yanqi yanqi1 #将yanqi1用户添加到yanqi组里[root@server11 ~]# usermod -G yanqi yanqi2 #将yanqi2用户添加到yanqi组里[root@server11 ~]# cat /etc/groupyanqi:x:1001:yanqi1,yanqi2[root@server11 ~]# userdel -r test #删除用户-r同步删除用户家目录#3、手动把用户添加到组里[root@server11 ~]# gpasswd -a yanqi1 yanqigroup #推荐使用gpasswd添加用户到附加组里#4、 删除组内用户[root@server11 ~]# gpasswd -d yanqi1 yanqigroup[root@server11 ~]# id yanqi #查询用户相关信息uid=1001(yanqi) gid=1001(yanqi) groups=1001(yanqi)[root@server11 ~]# whoami #查看当前登录用户root
一、用户相关文件
1、 /etc/passwd 用户信息文件
root:x:0:0:root:/root:/bin/bash// 第一列:用户名// 第二列:密码位// 第三列:用户 ID// 0 超级用户 UID。如果用户 UID 为 0,代表这个账号是管理员账号。那 Linux 中如何把普通用户升级成为管理员呢?就是把其他用户的 UID 修改为 0 就可以了,这点和Windows 是不同的。不过不建议建立多个管理员账号。// 1-499 系统用户(伪用户)UID。这些 UID 账号是系统保留给系统用户的 UID,也就是说 UID 是 1-499 范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中// 1-99 是系统保留的账号,系统自动创建。100-499是预留给用户创建系统账号的。// 500-60000 普通用户 UID。建立的普通用户 UID 从 500 开始,最大到 60000。这些用户足够使用了,但是如果不够也不用害怕,2.6.x 内核以后的 Linux 系统用户 UID 已经可以支持 2 这么多了。// 第四列: 组 ID GID 添加用户时,如果不指定用户所属的初始组,那么会建立和用户名相同的组// 第五列: 用户说明// 第六列: 用户家目录 ~// 第七列: 登录 shell /bin/bash# 如何把普通用户变成超级用户:把用户 UID 改为 0#说明:#[root@server11 ~]# cat /etc/passwd 用户信息文件#roo: x:1 000: 1000: root: /home /roo:/bin/bash#用户名:密码位:用户UID:组GID:用户说明:用户家目录:登录shell
2 、/etc/shadow 影子文件
root:$6$9w5Td6lg$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fI38RH15wzVoomff9isV1PzdcXmixzhnMVhMxbv0:15775:0:99999:7:::// 第一列:用户名// 第二列:加密密码// 我们也可以在密码前人为的加入“!”或“*”改变加密值让密码暂时失效,使这个用户无法登陆,达到暂时禁止用户登录的效果。// 注意所有伪用户的密码都是“!!”或“*”,代表没有密码是不能登录的。当然我新创建的用户如果不设定密码,它的密码项也是“!!”,代表这个用户没有密码,不能登录// 第三列:密码最近更改时间, 1970 年 1 月 1 日作为标准时间时间戳转日期[root@localhost ~]# date -d "1970-01-01 15775 days"2013 年 03 月 11 日 星期一 00:00:00 CST// 日期转时间戳[root@localhost ~]# echo $(($(date --date="2013/03/11" +%s)/86400+1))15775// 第四列:两次密码的修改间隔时间(和第 3 字段相比)// 第五例:密码有效期(和第 3 字段相比)// 第六列:密码修改到期前的警告天数(和第 5 字段相比)// 第七列:密码过期后的宽限天数(和第 5 字段相比)// 第八列:密码失效时间这里同样要写时间戳,也就是用 1970 年 1 月 1 日进行时间换算。如果超过了失效时间,就算密码没有过期,用户也就失效无法使用了// 第九列:保留#说明:[root@server11 ~]# cat /etc/shadowroo:$6$53k21lEt38FMlIOL$V.v8s7hereixVZEqAuganjS2tfP7LMj5OtI4kusRhoGYDO/iHMHazpFzc5qFIl8J1KbD2EXFmoyxuKJHKDUxM.:18662:0:99999:7:::#用户名:加密密码:密码最近更改时间:两次密码的修改间隔时间:密码有效时间:密码修改到期前警告天数:密码过期后宽限天数:密码失效时间 :保留
3、 /etc/group 组信息文件
root:x:0:root// 第一列:组名// 第二列:组密码位// 第三列:GID// 第四列:此组中支持的其他用户.附加组是此组的用户// 初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为初始组// 附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组#说明:[root@server11 ~]# cat /etc/grouproo:x:1000:#组名:组密码位:GID:此组支持的其它用户:初始组:附加组
4、组密码文件/etc/gshadow
// 如果我给用户组设定了组管理员,并给该用户组设定了组密码,组密码就保存在这个文件当中。组管理员就可以利用这个密码管理这个用户组了。
5、用户的家目录
6、用户邮箱目录
// 这个邮箱在/var/spool/mail 目录当中,例如 user1 用户的邮箱就是/var/spool/mail/user1 文件
7、用户模板目录/etc/skel/
二、用户管理命令
1 添加用户
// 1.1 手工删除用户// 手工删除用户试验:手工删除,如果可以正常建立用户,证明用户删除干净。/etc/passwd/etc/shadow/etc/group/etc/gshadow/home/user1/var/spool/mail/user1 // 邮箱// 1.2 useradd 命令// useradd 选项 用户名// 选项:// -u 550 指定 UID// -g 组名 指定初始组 不要手工指定// -G 组名 指定附加组,把用户加入组,使用附加组// -c 说明 添加说明// -d 目录 手工指定家目录,目录不需要事先建立// -s shell /bin/bash.// 例如:[root@localhost ~]# groupadd lamp1// 先手工添加 lamp1 用户组,因为我一会要把 lamp1 用户的初始组指定过来,如果不事先建立,会报错用户组不存在[root@localhost ~]# useradd -u 550 -g lamp1 -G root -d /home/lamp1 \-c "test user" -s /bin/bash lamp1// 建立用户 lamp1 的同时指定了 UID(550),初始组(lamp1),附加组(root),家目录(/home/lamp1),用户说明(test user)和用户登录 shell(/bin/bash)[root@localhost ~]# grep "lamp1" /etc/passwd /etc/shadow /etc/group// 同时查看三个文件/etc/passwd:lamp1:x:550:502:test user:/home/lamp1:/bin/bash// 用户的 UID、初始组、用户说明、家目录和登录 shell 都和命令手工指定的一致/etc/shadow:lamp1:!!:15710:0:99999:7:::// lamp1 用户还没有设定密码/etc/group:root:x:0:lamp1// lamp1 用户加入了 root 组,root 组是 lamp1 用户的附加组/etc/group:lamp1:x:502:// GID502 的组是 lamp1 组[root@localhost ~]# ll -d /home/lamp1/drwx------ 3 lamp1 lamp1 4096 1 月6 01:13 /home/lamp1/// 家目录也建立了啊。不需要手工建立家目录// 1.3 useradd 默认值// useradd 添 加 用 户 时 参 考 的 默 认 值 文 件 主 要 有 两 个 , 分 别 是 /etc/default/useradd 和/etc/login.defs1)/etc/default/useradd[root@localhost ~]# vi /etc/default/useradd// useradd defaults fileGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes// 挨个解释下:GROUP=100// 这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。目前我们采用的机制私有用户组机制。HOME=/home// 这个选项是用户的家目录的默认位置,所以所有的新建用户的家目录默认都在/home/下。INACTIVE=-1// 这个选项就是密码过期后的宽限天数,也就是/etc/shadow 文件的第七个字段。如果是天数,比如 10 代表密码过期后 10 天后失效;如果是 0,代表密码过期后立即失效;如果是-1,则代表密码永远不会失效。这里默认值是-1,所以所有新建立的用户密码都不会失效。EXPIRE=// 这个选项是密码失效时间,也就是/etc/shadow 文件的第八个字段。也就说用户到达这个日期后就会直接失效。当然这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时间,永久有效。SHELL=/bin/bash// 这个选项是用户的默认 shell 的。/bin/bash 是 Linux 的标志 shell,所以所有新建立的用户默认都具备 shell 赋予的权限。SKEL=/etc/skel// 这个选项就是定义用户的模板目录的位置,/etc/skel/目录中的文件都会复制到新建用户的家目录当中。CREATE_MAIL_SPOOL=yes// 这个选项定义是否给新建用户建立邮箱,默认是创建,也就是说所有的新建用户系统都会新建一个邮箱,放在/var/spool/mail/下和用户名相同。2)/etc/login.defs[root@localhost ~]# vi /etc/login.defs#这个文件有些注释,把注释删除掉,文件内容就变成下面这个样子了MAIL_DIR /var/spool/mailPASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_MIN_LEN 5PASS_WARN_AGE 7UID_MIN 500UID_MAX 60000GID_MIN 500GID_MAX 60000CREATE_HOME yesUMASK 077USERGROUPS_ENAB yesENCRYPT_METHOD SHA512// 我们一行一行解释下文件内容:MAIL_DIR /var/spool/mail// 这行指定了新建用户的默认邮箱位置。比如 user1 用户的邮箱是就是/var/spool/mail/user1。PASS_MAX_DAYS 99999// 这行指定的是密码的有效期,也就是/etc/shadow 文件的第五字段。代表多少天之后必须修改密码,默认值是 99999。PASS_MIN_DAYS 0// 这行指定的是两次密码的修改间隔时间,也就是/etc/shadow 文件的第四字段。代表第一次修改密码之后,几天后才能再次修改密码。默认值是 0。PASS_MIN_LEN 5// 这行代表密码的最小长度,默认不小于 5 位。但是我们现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。PASS_WARN_AGE 7// 这行代表密码修改到期前的警告天数,也就是/etc/shadow 文件的第六字段。代表密码到底有效期前多少天开始进行警告提醒,默认值是 7 天。UID_MIN 500UID_MAX 60000// 这两行代表创建用户时,最小 UID 和最大的 UID 的范围。我们 2.6.x 内核开始,Linux 用户的 UID32UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500-549 之间的 UID 没有使用(小于 500 的 UID 是给伪用户预留的)。GID_MIN 500// 最大可以支持 2 这么多,但是真正使用时最大范围是 60000。还要注意如果我手工指定了一个用户的GID_MAX 60000// 这两行指定了 GID 的最小值和最大值之间的范围。CREATE_HOME yes// 这行指定建立用户时是否自动建立用户的家目录,默认是建立UMASK 077// 这行指定的是建立的用户家目录的默认权限,因为 umask 值是 077,所以新建的用户家目录的权限是 700,umask 的具体作用和修改方法我们可以参考下一章权限设定章节。USERGROUPS_ENAB yes// 这行指定的是使用命令 userdel 删除用户时,是否删除用户的初始组,默认是删除。ENCRYPT_METHOD SHA512// 这行指定 Linux 用户的密码使用 SHA512 散列模式加密,这是新的密码加密模式,原先的 Linux只能用 DES 或 MD5 方式加密
——>实验专题<——
#——>所有值使用默认值添加用户<——#1、用户添加用户[root@server11 ~]# useradd yanqi[root@server11 ~]# cat /etc/passwdyanqi:x:1001:1001::/home/yanqi:/bin/bash#2、为用户设置密码[root@server11 ~]# passwd yanqiNew password:Retype new password:[root@server11 ~]# cat /etc/shadowyanqi:$6$ScNDYxzB$OxNktWeWuW4Y0BkbHpqbPTZYmhm9oW7/UN96ZAw0HiK7jp8/3obeQcpgvF6rF31Me0D8X3Wy2V1wCLueFhm5l0:18696:0:99999:7:::#——>添加特定值的用户<——生产环境不会使用[root@server11 ~]# useradd -u 550 -c "test yanqitest" -d /yanqitest -s /bin/bash yanqitest[root@server11 ~]# cat /etc/passwdyanqitest:x:550:100cat2:test yanqitest:/yanqitest:/bin/bash#——>添加组名<——生产环境中会使用到的//添加2个用户并把它指定到yanqi组里[root@server11 ~]# useradd -g yanqi yanqitest1[root@server11 ~]# useradd -G yanqi yanqitest2[root@server11 ~]# cat /etc/passwdyanqitest1:x:1002:1001::/home/yanqitest1:/bin/bashyanqitest2:x:1003:1003::/home/yanqitest2:/bin/bash[root@server11 ~]# cat /etc/groupyanqitest2:x:1003:#说明:说明yanqitest1是没有建立的组;若是需要把用户加入到特定组里,建议使用-G#——>useradd的默认值<——[root@server11 ~]# cat /etc/default/useraddGROUP=100 #建立用户的默认组HOME=/home #用户家目录位置INACTIVE=-1 #密码过去后的宽限天数EXPIRE= #密码的失效时间SHELL=/bin/bash #使用bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes #给每一个用户创建邮箱[root@server11 ~]# cat /etc/login.defsPASS_MAX_DAYS 99999 #最大密码间隔时间PASS_MIN_DAYS 0 #密码最小间隔时间PASS_MIN_LEN 5 #最小密码长度PASS_WARN_AGE 7 #密码修改天数UID_MIN 1000 #UID的设定范围UID_MAX 60000SYS_UID_MIN 201 #GID的设定范围SYS_UID_MAX 999
2、设定密码
[root@localhost ~]#passwd [选项] 用户名// 选项:// -l: 暂时锁定用户。仅 root 用户可用// -u: 解锁用户。仅 root 用户可用// --stdin: 可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用[root@localhost ~]#passwd// passwd 直接回车代表修改当前用户的密码// 也可以使用字符串作为密码:[root@localhost ~]# echo "123" | passwd --stdin user1// 更改用户 user1 的密码 。// 可以通过命令,把密码修改日期归零(shadow 第 3 字段).这样用户一登陆就要修改密码,例如:[root@localhost ~]# chage -d 0 user1
——>实验专题<——
#超级用户可以修改任何用户的密码#普通用户只能修改自己的密码[yanqi@server11 ~]$ passwd #普通用户修改自己的密码,直接使用passwd即可(current) UNIX password:New password:#锁定用户[root@server11 ~]# passwd -l yanqiLocking password for user yanqi.passwd: Success[root@server11 ~]# cat /etc/shadowyanqi:!!$6$ScNDYxzB$OxNktWeWuW4Y0BkbHpqbPTZYmhm9oW7/UN96ZAw0HiK7jp8/3obeQcpgvF6rF31Me0D8X3Wy2V1wCLueFhm5l0:18696:0:99999:7:::#在密码位前加入2个感叹号;锁定密码#解锁用户[root@server11 ~]# passwd -u yanqiUnlocking password for user yanqi.passwd: Success[root@server11 ~]# cat /etc/shadowyanqi:$6$ScNDYxzB$OxNktWeWuW4Y0BkbHpqbPTZYmhm9oW7/UN96ZAw0HiK7jp8/3obeQcpgvF6rF31Me0D8X3Wy2V1wCLueFhm5l0:18696:0:99999:7:::#使用字符串设置密码[root@server11 ~]# echo "123" | passwd --stdin yanqiChanging password for user yanqi.passwd: all authentication tokens updated successfully.#修改用户的密码修改时间改为0[root@server11 ~]# chage -d 0 yanqiyanqi:$6$.brNdrPm$KYibkCHjlTOnvCO89WY.Sy39tIpVlod6tf.PGAti5NOVgFFDoiXBatzSK6kdhujS6O7GvNWW3kLuOE3aEDIQ00:0:0:99999:7:::#重新登录yanqi用户,会让你强制更改密码WARNING! The remote SSH server rejected X11 forwarding request.You are required to change your password immediately (root enforced)Last login: Thu Feb 4 10:06:47 2021 from 20.20.20.240WARNING: Your password has expired.You must change your password now and login again!Changing password for user yanqi.Changing password for yanqi.(current) UNIX password: #强制修改新的密码[root@server11 ~]# cat /etc/shadowyanqi:$6$NmOAT5Cs$jZ84jnrfWzMy0mBjON6N8a.NLnaapYPRag2BXBnENNqRZjWujhJO8T4LOigM9GxcJh0Rp.bYN7On20BkU2TOv/:18696:0:99999:7:::
3、用户信息修改
// usermod 命令是修改已经添加的用户的信息的,命令如下:[root@localhost ~]#usermod [选项] 用户名// 选项:// -u UID: 修改用户的 UID// -d 家目录: 修改用户的家目录。家目录必须写绝对路径// -c 用户说明: 修改用户的说明信息,就是/etc/passwd 文件的第五个字段// -g 组名: 修改用户的初始组,就是/etc/passwd 文件的第四个字段// -G 组名: 修改用户的附加组,其实就是把用户加入其他用户组// -s shell: 修改用户的登录 Shell。默认是/bin/bash// -e 日期: 修改用户的失效日期,格式为“YYYY-MM-DD”。也就是/etc/shadow文件的第八个字段// -L: 临时锁定用户(Lock)// -U: 解锁用户(Unlock)// 有学员突发奇想,问超哥,那用户可以修改用户名吗?当然可以:[root@localhost ~]# usermod -l 新名 旧名// 改名// 但是真不建议改名,这样及其容易把管理员自己搞晕菜,建议删除旧用户,再建立新用户!
——>实验专题<——
#修改已存在的用户到特定组里#将yanqi1和yanqi2添加到yanqi组里[root@server11 ~]# usermod -G yanqi yanqi1 #将yanqi1用户添加到yanqi组里[root@server11 ~]# usermod -G yanqi yanqi2 #将yanqi2用户添加到yanqi组里[root@server11 ~]# cat /etc/groupyanqi:x:1001:yanqi1,yanqi2
4 删除用户
[root@localhost ~]# userdel [-r] 用户名// 选项:// -r:在删除用户的同时删除用户的家目录
——>实验专题<——
[root@server11 ~]# ll /home/drwx------ 3 test test 78 Mar 10 20:46 testdrwx------ 3 yanqi yanqi 78 Mar 10 20:37 yanqidrwx------ 3 yanqi1 yanqi1 78 Mar 10 20:39 yanqi1drwx------ 3 yanqi2 yanqi2 78 Mar 10 20:39 yanqi2#删除用户[root@server11 ~]# userdel -r test #删除用户-r同步删除用户家目录
5 切换用户身份
// su 命令可以切换成不同的用户身份,命令格式如下:[root@localhost ~]# su [选项] 用户名// 选项:// -:选项只使用“-”代表连带用户的环境变量一起切换// -c 命令:仅执行一次命令,而不切换用户身份// “-”不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量。
——>实验专题<——
[root@server11 ~]# su yanqi[yanqi@server11 ~]$ su root #直接写入root环境变量不会发生变化Password: 空格[root@server11 ~]# envUSER=yanqi[yanqi@server11 ~]$ su - root #和环境变量一起切换[root@server11 ~]# envUSER=root
三 组管理命令
1、添加用户组:groupadd
// 添加用户组的命令是 groupadd,命令格式如下:[root@localhost ~]# groupadd [选项] 组名// 选项:// -g GID:指定组 ID// 添加用户组的命令比较简单,举个例子:[root@localhost ~]# groupadd group1// 添加 group1 组[root@localhost ~]# grep "group1" /etc/groupgroup1:x:502:
2、删除用户组:groupdel
// groupdel 命令用于删除用户组,命令格式如下:[root@localhost ~]#groupdel 组名// 例子:[root@localhost ~]#groupdel testgrp// 删除 testgrp 组// 不过大家要注意,要删除的组不能是其他用户的初始组,也就是说这个组中没有初始用户才可以删除。如果组中有附加用户,则删除组时不受影响。
4、把用户添加进组或从组中删除:gpasswd
// 其实 gpasswd 命令是用来设定组密码并指定组管理员的,不过我们在前面已经说了,组密码和组// 管理员功能很少使用,而且完全可以被 sudo 命令取代,所以 gpasswd 命令现在主要用于把用户添加进组或从组中删除。命令格式如下:[root@localhost ~]# gpasswd [选项] 组名// 选项:// -a 用户名:把用户加入组// -d 用户名:把用户从组中删除// 举个例子:[root@localhost ~]# groupadd grouptest// 添加组 grouptest[root@localhost ~]# gpasswd -a user1 grouptestAdding user user1 to group grouptest// 把用户 user1 加入 grouptest 组[root@localhost ~]# grep "user1" /etc/groupuser1:x:501:grouptest:x:505:user1// 查看一下,user1 用户已经作为附加用户加入 grouptest 组[root@localhost ~]# gpasswd -d user1 grouptestRemoving user user1 from group grouptest// 把用户 user1 从组中删除[root@localhost ~]# grep "grouptest" /etc/groupgrouptest:x:505:// 组中没有 user1 用户了// 大家注意,也可以使用 usermod 命令把用户加入某个组,不过 usermod 命令的操作对象是用户,// 命令是“usermod -G grouptest user1”,把用户名作为参数放在最后;而 gpasswd 命令的操作对象是组,命令是“gpasswd -a user1 grouptest”,把组名作为参数放在最后。
5、改变有效组:newgrp
// 我们说过,每个用户可以属于一个初始组(用户是这个组的初始用户),也可以属于多个附加组// (用户是这个组的附加用户)。既然用户可以属于这么多用户组,那么用户在创建文件后,默认生效// 的组身份是哪个呢?当然是初始用户组的组身份生效了,因为初始组是用户一旦登录就直接获得的组// 身份。也就是说,用户在创建文件后,文件的属组是用户的初始组,因为用户的有效组默认是初始组。// 既然用户属于多个用户组,那么能不能改变用户的有效组呢?使用命令 newgrp 就可以切换用户的有// 效组。命令格式如下:[root@localhost ~]# newgrp 组名// 举个例子,我们已经有了普通用户 user1,默认会建立 user1 用户组,user1 组是 user1 用户的// 初始组。我们再把 user1 用户加入 group1 组,那么 group1 组就是 user1 用户的附加组。当 user1 用// 户创建文件 test1 时,test1 文件的属组是 user1 组,因为 user1 组是 user1 用户的有效组。通过 newgrp// 命令就可以把 user1 用户的有效组变成 group1 组,当 user1 用户创建文件 test2 时,就会发现 test2// 文件的属组就是 group1 组。命令如下:[root@localhost ~]# groupadd group1// 添加组 group1[root@localhost ~]# gpasswd -a user1 group1Adding user user1 to group group1// 把 user1 用户加入 group1 组[root@localhost ~]# grep "user1" /etc/groupuser1:x:501:group1:x:503:user1// user1 用户既属于 user1 组,也属于 group1 组[root@localhost ~]# su – user1// 切换成 user1 身份,超级用户切换成普通用户不用密码[user1@localhost ~]$ touch test1// 创建文件 test1[user1@localhost ~]$ ll test1-rw-rw-r-- 1 user1 user1 0 1 月14 05:43 test1// test1 文件的默认属组是 user1 组[user1@localhost ~]$ newgrp group1// 切换 user1 用户的有效组为 group1 组[user1@localhost ~]$ touch test2// 创建文件 test2[user1@localhost ~]$ ll test2-rw-r--r-- 1 user1 group1 0 1 月 14 05:44 test2// test2 文件的默认属组是 group1 组// 通过这个例子明白有效组的作用了吗?其实就是当用户属于多个组时,在创建文件时哪个组身份生效。使用 newgrp 命令可以在多个组身份之间切换。
6. 组权限实验
——>实验专题<——
#1、添加组[root@server11 ~]# groupadd yanqigroup#2、删除组[root@server11 ~]# groupdel yanqigroup#3、手动把用户添加到组里[root@server11 ~]# gpasswd -a yanqi1 yanqigroup #推荐使用gpasswd添加用户到附加组里Adding user yanqi1 to group yanqigroup[root@server11 ~]# gpasswd -a yanqi2 yanqigroupAdding user yanqi2 to group yanqigroup#查看添加是否成功[root@server11 ~]# cat /etc/groupyanqigroup:x:1004:yanqi1,yanqi2#4、 删除组内用户[root@server11 ~]# gpasswd -d yanqi1 yanqigroupRemoving user yanqi1 from group yanqigroup[root@server11 ~]# gpasswd -d yanqi2 yanqigroupRemoving user yanqi2 from group yanqigroup[root@server11 ~]# cat /etc/groupyanqigroup:x:1004:#5、若是初始用户存在,是不可以删除用户的初始组[root@server11 ~]# useradd -g yanqigroup yanqi3[root@server11 ~]# useradd -g yanqigroup yanqi4[root@server11 ~]# userdel -r yanqi4 #删除用户4[root@server11 ~]# groupdel yanqigroupgroupdel: cannot remove the primary group of user 'yanqi3'#若是想删除这个组,必须删除组内的初始用户[root@server11 ~]# userdel -r yanqi3 #删除组之前,必须没有初始用户,否则是删除不了的。[root@server11 ~]# groupdel yanqigroup#6、改变有效组:newgrp#查询用户相关信息[root@server11 ~]# id yanqiuid=1001(yanqi) gid=1001(yanqi) groups=1001(yanqi)#查看当前登录用户[root@server11 ~]# whoamiroot#7、组权限实验:组内用户可以上传修改自己的文件,且对组内文件有没有控制权限;示例如下[root@server11 ~]# mkdir /www[root@server11 ~]# ll -d /www/drwxr-xr-x 2 root root 6 Mar 10 21:17 /www/#新建用户并创建组,并且把用户添加到该组里面[root@server11 ~]# useradd www1[root@server11 ~]# passwd www1[root@server11 ~]# useradd www2[root@server11 ~]# passwd www2[root@server11 ~]# groupadd www#将用户添加到组里[root@server11 ~]# gpasswd -a www1 wwwAdding user www1 to group www[root@server11 ~]# gpasswd -a www2 wwwAdding user www2 to group www[root@server11 ~]# cat /etc/groupwww:x:1005:www1,www2#改变目录所有者和所属组[root@server11 ~]# ll -d /www/drwxr-xr-x 2 root root 6 Mar 10 21:17 /www/[root@server11 ~]# chown www1:www /www/[root@server11 ~]# ll -d /www/drwxr-xr-x 2 www1 www 6 Mar 10 21:17 /www/#改变文件权限[root@server11 ~]# chmod 770 /www/[root@server11 ~]# ll -d /www/drwxrwx--- 2 www1 www 6 Mar 10 21:17 /www/
END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!




推荐阅读
Recommended reading


JavaBBS
Git → https://www.javabbs.cn/git
JavaBBS大数据→ https://www.javabbs.cn/dsj
JavaBBS云存储→ https://www.javabbs.cn/ycc
JavaBBS数据库→ https://www.javabbs.cn/sjk
JavaBBS云计算→ https://www.javabbs.cn/yjs
JavaBBSIT.Log→ https://www.javabbs.cn/itl
JavaBBSNginx→ https://www.javabbs.cn/ngx
JavaBBSzabbix→ https://www.javabbs.cn/zbx
JavaBBSJavaSE→ https://www.javabbs.cn/jse JavaBBS社区文章→ https://www.javabbs.cn/bwz
JavaBBS社区资料→ https://www.javabbs.cn/bzl





