Linux -- 用户组篇
Linux -- 用户与用户组
1.Linux 系统中有三种角色:所有者(用户),用户组与其他人,一张图可以说明用户与用户组的关系。
如图,某公司相当于一个用户组,该用户组下有A,B两个用户,用户拥有各自的私密空间和公用空间,不是该用户组下的就是其他人,其他人无法访问用户组下的内容。
2.GID 与 UID
UID 可以理解为 user ID,也就是 用户ID,GID 可以理解为 group ID,也就是 用户组ID,这两个 ID 值非常重要,一般不建议更改,比如 Linux 中会根据 UID 和 GID 来判断一个文件属于哪个用户和用户组,如果随意改动 UID 和 GID,导致无法找到用户下的文件或者对文件没有了权限,会很麻烦。
用户ID 的范围不同,在 Linux 中代表的特性也不同,在学习对用户组操作前,先了解一下不同 UID 的范围对应的不同特性。
查看用户的 UID 和 GID id username ,如
[root@localhost ~]# id sherlock uid=505(sherlock) gid=505(holmes) 组=505(holmes)
3.用户组和用户常用的相关系统文件
/etc/passwd - 使用者账号咨询
/etc/shadow - 使用者账号咨询加密
/etc/group - 用户组信息
Linux -- 用户组
1.groupadd 新增用户组
用法:groupadd [-g gid [-o]] [-r] [-f] group
[root@localhost home]# groupadd holmes [root@localhost home]# grep holmes /etc/group /etc/gshadow /etc/group:holmes:x:505: /etc/gshadow:holmes:!::
2.groupmod 修改 group 参数
-n 修改组名
-g 修改GID
[root@localhost home]# groupmod -n demo holmes #将holmes重命名为demo [root@localhost home]# grep demo /etc/group /etc/gshadow /etc/group:demo:x:505: /etc/gshadow:demo:!::
3.groupdel 删除用户组
需要保证没有用户使用该用户组作为初始用户组,如果有用户将要删除的用户组做为初始用户组,那么可以将修改用户的GID,或者删除这个用户,然后再删除用户组
[root@localhost home]# groupdel home groupdel: cannot remove the primary group of user 'tom' #删除 tom 用户/修改 tom 的GID后,可以进行删除操作 [root@localhost home]# groupdel home
4.gpasswd 用户管理员功能
所谓用户管理员就是为一个用户组设置管理员,管理员可以管理账户进行加入或者移出该用户组。
用法:gpasswd [option] group
gpasswd [-ad] user group
root操作 -A 将某个用户设为某个用户组的管理员 -M 将某些账号加入到用户组中 -r 将用户组的密码删除 -R 让用户组的密码栏失效 用户组管理员操作 -a 将用户加入到用户组中 -d 将用户移除用户组中
- 创建用户组 home 的管理员 tom (用root创建)
[root@localhost home]# gpasswd -A tom home [root@localhost home]# grep home /etc/group /etc/gshadow /etc/group:home:x:505: /etc/gshadow:home:!:tom:
- 切换到 tom 管理员下,将 jun 加入到 home 用户组中
[tom@localhost ~]$ id jun uid=493(jun) gid=492(jun) 组=492(jun) [tom@localhost ~]$ gpasswd -a jun home Adding user jun to group home [tom@localhost ~]$ id jun uid=493(jun) gid=492(jun) 组=492(jun),505(home)
- 将 jun 移出 home 用户组下
[tom@localhost ~]$ gpasswd -d jun home Removing user jun from group home [tom@localhost ~]$ id jun uid=493(jun) gid=492(jun) 组=492(jun)
用户功能
1.finger 查阅用户相关信息
用法:finger [-lmsp] [user ...] [user@host ...]
-s 单行显示
-l 多行显示
[root@localhost ~]# finger -s tom
Login Name Tty Idle Login Time Office Office Phone
tom * * No logins
[root@localhost ~]# finger -l tom # -l 可省略 Login: tom Name: Directory: /home/tom Shell: /bin/bash Never logged in. No mail. No Plan.
- 新建一个计划
[tom@localhost ~]$ echo "I will work hard this year" >~/.plan [tom@localhost ~]$ finger tom Login: tom Name: Directory: /home/tom Shell: /bin/bash Never logged in. No mail. Plan: I will work hard this year
- 查看系统上登录的用户与登录时间
[tom@localhost ~]$ finger Login Name Tty Idle Login Time Office Office Phone jun pts/3 7d Jan 25 14:09 (192.168.123.123) root root pts/2 Feb 1 19:32 (192.168.111.111)
2.chfn 修改 finger 的信息
用法:chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username](一般没什么用)
[tom@localhost ~]$ chfn Changing finger information for tom. 密码: Name []: tom Office []: 088-88888888 #办公室电话 Office Phone []: 18899990000 #办公室手机号 Home Phone []: 088-666666 #家里电话 Finger information changed.
3.chsh 修改用户的shell
用法:chsh [-s shell] [-l] [-u] [-v] [username]
- 查看自己的shell
[tom@localhost ~]$ chsh -l /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
- 修改自己的shell (一般别乱改)
[tom@localhost ~]$ chsh -s /bin/csh
关于用户的内容见 用户与用户组之用户篇