11.1 用户,组及私有用户组
管理用户和组历来是枯燥和乏味的。红帽子LINUX拥有若干系统工具和约定措施,相当有用,使用户和组的管理简单了许多。
管理用户和组最为简单的方法是使用控制面板上的“UsersandGroups”模块(有关控制面板的详细信息请看第9节,9.1节上用户和组模块的详细描述)。您还可以以命令行的方式用adduser命令创建新用户。
11.1.1 Standard Users
表81 列出了系统在安装过程中创建的标准用户(其中所列内容与/etc/passwd文件的描述是一致的)。表中的组ID号是用户所在的首要组的代号。请到11.1.3节查看有关组的知识。
| User |
UID |
GID |
Home Directory |
Shell |
| root |
0 |
0 |
/root |
/bin/bash |
| bin |
1 |
1 |
/bin |
|
| daemon |
2 |
2 |
/sbin |
|
| adm |
3 |
4 |
/var/adm |
|
| lp |
4 |
7 |
/var/spool/lpd |
|
| sync |
5 |
0 |
/sbin |
/bin/sync |
| shutdown |
6 |
0 |
/sbin |
/sbin/shutdown |
| halt |
7 |
0 |
/sbin |
/sbin/halt |
| mail |
8 |
12 |
/var/spool/mail |
|
| news |
9 |
13 |
/var/spool/news |
|
| uucp |
10 |
14 |
/var/spool/uucp |
|
| operator |
11 |
0 |
/root |
|
| games |
12 |
100 |
/usr/games |
|
| gopher |
13 |
30 |
/usr/lib/gopher-data |
|
| ftp |
14 |
50 |
/home/ftp |
|
| nobody |
99 |
99 |
/ |
|
表81: 标准用户
11.1.2 标准用户组
表82列出了系统安装过程中创建的标准用户组(其中就是/etc/group文件所描述的内容)。
| Group |
GID |
Members |
| root |
0 |
root |
| bin |
1 |
root,bin,daemon |
| daemon |
2 |
root,bin,daemon |
| sys |
3 |
root,bin,adm |
| adm |
4 |
root,adm,daemon |
| tty |
5 |
|
| disk |
6 |
root |
| lp |
7 |
daemon,lp |
| mem |
8 |
|
| kmem |
9 |
|
| wheel |
10 |
root |
| mail |
12 |
mail |
| news |
13 |
news |
| uucp |
14 |
uucp |
| man |
15 |
|
| games |
20 |
|
| gopher |
30 |
|
| dip |
40 |
|
| ftp |
50 |
|
| nobody |
99 |
|
| users |
100 |
|
| floppy |
19 |
|
图表82:标准用户组
11.1.3 私有用户组
为了使传统UNIX用户组更易于使用,红帽子LINUX使用了一种叫做私有用户组(UPG)的模式。私有用户组模式并不改变以往UNIX处理组的任一环节。它仅仅提供了一种新的管理用户组的方式。您一旦创建了一个新用户,默认的就会拥有一个唯一的用户组。该模式的原理如下:
- 私有用户组
- 系统中的每一个用户都拥有并属于一个首要组。
- umask = 002
-
传统UNIX的umask值是022,这样就可以防止同属于该组的其他用户以及任何别的组的用户修改该用户的文件。既然每个用户都拥有并属于一个自己的私有组,这种“组保护模式”不在需要了。将umask值设置为002就可以阻止用户篡改他人的私有文件。
umask值是在/etc/profile文件中设置的。
-
目录的SGID位如果您设置了目录的SGID位(使用命令:chmodg+s目录名),在该目录中创建的文件的属组将与该目录的属组相同。大多数站点都喜欢为每一个主要的项目创建用户组,然后把用户分配到相应的组中去。在以往,管理文件的存取是困难的,尽管用户创建的文件的属组会被设置成该用户所属的首要组。但是,也恰恰如此,当某个用户工作于多个工程项目时,将某个文件的属主设置为与工程相关的组。然而在用户私有组(UPG)模式下,文件将会根据工程的不同被设为相应的属组,这样会使管理多用户组的工程相当简单。让我们举个例子,比如说您有一个庞大的工程名字叫做devel,很多人要在名为devel的目录下编辑文件。创建一个用户组名为devel,用chgrp将devel目录的属主设置为devel,把所有参加devel工程的人员的用户组设置为devel。这样所有属于devel组的用户就可以在devel目录下创建文件了。由于所建文件的属组均会被自动设置为devel,则所有属于devel组的用户都可以编辑其中的文件了。如果您有多个类似于devel的工程,并且有用户要参与多个的话,用户将没必要当自己要从一个项目转到另一个时而改变自己的组或umask值了。因为,每个工程目录上的SGID位将为文件进行自动的属组设置。既然每个用户的HOME目录的属主是该用户而属组是该用户的私有组,设置HOME目录的SGID位是安全的。然而由于创建文件的属组默认被设置为用户的首要组,因此,这种情形下设置SGID位似乎是多余的。
11.1.3.1 用户私有组
由于用户私有组模式(UPG)是新东西,许多人对它提出质疑。人们怀疑它的存在的必要性。以下将对其作出解释。
-
打个比方,您想使一些人编辑/usr/lib/emacs/site-lisp下的文件。您信任这些人,让他们任意操纵这个目录下的文件,可当然不是信任所有的人。
- 于是,您键入:
chown -R root.emacs /usr/lib/emacs/site-lisp
然后把合适的用户增加到该组中。
- 为使用户能真正在目录下创建文件,执行:
chmod 775 /usr/lib/emacs/site-lisp
- 但是当用户在该目录下创建新文件时,它的属主被设置为该用户的默认组(通常为users)。为防止这种默认设置,您应键入:
chmod 2775 /usr/lib/emacs/site-lisp
- 但是文件的权限必须被设置为664才可以使emacs组的其他用户来编辑它。这只要将umask值设置为002就可以了。
-
好了,一切都很正常,但是有一点例外,那就是如果您的默认组是“users”的话,您在您的HOME下创建的每一个文件都可被同属于“users”的用户改写。
- 为了防止这种操作,您应使每一个用户将其默认组设置为一个该用户所私有的用户组。
至此,通过设置umask值为002和分配每个用户一个私有的用户组为默认组,您就可以轻而一举的建立用户无须任何其他操作就可以方便使用的组了。您所要做的仅仅是创建组,增加用户到组,然后象以上所述的那样用chown和chmod设置组目录。
|