群组的设置使得用户管理更加便捷。系统管理员可以通过对群组授权(grant)或撤销权限(revoke)而免去了为每个用户设置权限的繁琐工作。此外,设置群组权限可以为群组中的用户建立公共的工作区,管理他们对外设的使用权限。
不同的Linux系统使用不同的理念来设置群组管理。在Ubuntu系统中使用的是UPG(user private group)机制,默认为每个用户设置与用户名同名的群组名。系统中的群组信息保存在/etc/group文件中。
cindy@cindy-ThinkPad-X200:~$cat /etc/grouproot:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:cindy
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:cindy
floppy:x:25:
tape:x:26:
sudo:x:27:cindy
audio:x:29:pulse
dip:x:30:cindy
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:cindy
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
libuuid:x:101:
crontab:x:102:
syslog:x:103:
fuse:x:104:
messagebus:x:105:
bluetooth:x:106:
scanner:x:107:
colord:x:108:
lpadmin:x:109:cindy
ssl-cert:x:110:
lightdm:x:111:
nopasswdlogin:x:112:
netdev:x:113:
whoopsie:x:114:
mlocate:x:115:
ssh:x:116:
avahi-autoipd:x:117:
avahi:x:118:
pulse:x:119:
pulse-access:x:120:
utempter:x:121:
rtkit:x:122:
saned:x:123:
cindy:x:1000:
sambashare:x:124:cindy
winbindd_priv:x:125:
mysql:x:126:
sunny:x:1001:
这个文件中是系统中所有群组的列表。可以看到大部分的群组是服务(mail,news等)和设备(floppy,disk等)。如之前提到的例子,这些系统设备群组对与其相关的文件具有所有权和控制权。添加一个常规用户到一个设备的群组,可以使这个常规用户拥有使用这个设备的权限,如果群组管理员授权给这个常规用户。也就是说将用户cindy添加到cdrom群组,那么使得cindy能够使用光驱设备。
管理群组的工具
Ubuntu提供了命令行工具来管理群组,也提供了GUI工具来管理群组。相比较而言,命令行工具更为强大和灵活。常用的群组管理命令行工具主要有:
groupadd——创建一个新的群组
groupdel——删除一个现有的群组
groupmod——创建一个群组名或GID,但不添加或删除群组中的成员
gpasswd——创建一个群组密码。每个群组可以有一个群组密码和群组管理员。使用参数-A指定一个用户为群组管理员。
useradd -G——参数-G在创建用户时添加该用户到一个群组
usermod -G——允许你添加一个不在线的用户到群组中
grpck——检查/etc/group文件,防止拼写错误
下面用一个简单的例子来说明群组管理命令行工具的使用方法。现在有一个DVD-RW设备(/dev/scd0),系统管理员希望给予常规用户sunny这个设备的访问权限。可以有以下几步:
1)用groupadd命令创建一个群组dvdrw
sudo groupadd dvdrw
2)用chgrp命令将设备DVD-RW(/dev/scd0)的群组属性更改为dvdrw
sudo chgrp dvdrw /dev/scd0
3)用usermod命令将授权用户添加到这个群组中
sudo usermod -G dvdrw sunny
4)用gpasswd指定sunny为组管理员,这样他可以添加新的用户到这个群组中
sudo gpasswd -A sunny
现在sunny拥有DVD-RW驱动的访问权限,超级用户和sunny都有添加新用户到这个群组的能力,因为sunny是群组管理员。
系统也提供了群组管理的GUI工具,可以在系统设置->用户账户中找到。如下图所示: