用户管理问题
-
用户添加:useradd、userdel
-
用户属性的修改:passwd
-
群组添加:groupadd、groupdel
-
群组属性修改:gpasswd
-
切换用户:su
基本概念
初始群组:在/etc/passwd里面指定的GID。每个用户一登陆,有效群组就被赋值为初始群组。
所属群组(支持群组):用户属于的所有群组,包括初始群组,用户可以获得所有所属群组的权限。
有效群组:用户当前使用的群组。用户创建的所有文件、目录等操作都属于有效群组。
实际问题
有三个用户user1、user2、user3;可以操作目录/srv/pro/下的所有文件;并且每个用户有自己的家目录。
- 首先创建群组pro,将该群组设置为/srv/pro所属的群组(所有操作均在root权限下)
$ groupadd pro
$ mkdir /srv/pro
$ chgrp pro /srv/pro
此时/srv/pro的用户为root,群组为pro
$ ls -dl /srv/pro
drwxr-xr-x. 2 root pro 4096 Oct 29 23:24 /srv/pro
- 修改目录权限,添加SGID权限。当添加了SGID权限之后,用户进入/srv/pro之后有效群组变为pro。即创建的所有文件、目录的所属群组为pro
$ chmod 2770 /srv/pro
- 创建三个用户
$ adduser -G pro user1
$ adduser -G pro user2
$ adduser -G pro user3
$ echo "user1" | passwd --stdin user1
$ echo "user2" | passwd --stdin user2
$ echo "user3" | passwd --stdin user3
此时创建的三个用户都有自己的初始群组(user1、user2、user3),同时也属于群组pro,因此进入/srv/pro之后创建的所有文件都可以互相修改,但是在自己的家目录下的文件是私有的。
- 进入user1创建文件。
[tmp@localhost ~]$ su user1
Password:
[user1@localhost tmp]$ cd /srv/pro
[user1@localhost pro]$ touch main_user1.c
[user1@localhost pro]$ ls -l
total 0
-rw-rw-r--. 1 user1 pro 0 Oct 29 23:42 main_user1.c
创建完文件之后可以看到main_user1.c的用户是user1,群组为pro。当user2、user3进入该目录之后由于有效群组为pro,因此也可以修改main_user1.c