用户组的所有信息都存放在/etc/group 文件中。此文件 的格式也类似于/etc/passwd 文件,由冒号(隔开若干个字段,这些字段有: 1)“组名”是用户组的名称,由字母或数字构成。与/etc/passwd 中的登录名一样,组名不应 重复。 2)“口令”字段存放的是用户组加密后的口令字。一般 Linux 系统的用户组都没有口令,即 这个字段一般为空,或者是*。 3)“组标识号”与用户标识号类似,也是一个整数,被系统内部用来标识组。 4)“组内用户列表”是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个 用户组可能是用户的主组,也可能是附加组。 /etc/group 文件的一个例子如下: # cat /etc/group 四、添加批量用户 添加和删除用户对每位 Linux 系统管理员都是轻而易举的事, 比较棘手的是如果要添加 几十个、上百个甚至上千个用户时,我们不太可能还使用 useradd 一个一个地添加,必然要 找一种简便的创建大量用户的方法。Linux 系统提供了创建大量用户的工具,可以让您立即 创建大量用户,方法如下: (1)先编辑一个文本用户文件,每一列按照/etc/passwd 密码文件的格式书写,要注意 每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入 x 号。 一个范例文件 user.txt 内容如下: (2)以 root 身份执行命令/usr/sbin/newusers,从刚创建的用户文件 user.txt 中导入数据,创 建用户: 然后可以执行命令 vipw 或 vi /etc/passwd 检查/etc/passwd 文件是否已经出现这些用户的数据, 并且用户的宿主目录是否已经创建。 (3)执行命令/usr/sbin/pwunconv,将/etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow 的 shadow 密码栏删掉。这是为了方便下一步的密码转换工 作,即先取消 shadow password 功能。 (4)编辑每个用户的密码对照文件,范例文件 passwd.txt 内容如下: (5)以 root 身份执行命令/usr/sbin/chpasswd,创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入/etc/passwd 的密码栏。 (6)确定密码经编码写入/etc/passwd 的密码栏后,执行命令/usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入/etc/shadow。 这样就完成了大量用户的创建了,之后您可以到/home 下检查这些用户宿主目录的权限设置 是否都正确,并登录验证用户密码是否正确。 五、赋予普通用户特殊权限 在 Linux 系统中,管理员往往不止一人,若每位管理员都用 root 身份进行管理工作, 根 本无法弄清楚谁该做什么。所以最好的方式是:管理员创建一些普通用户,分配一部分系统 管理工作给他们。 我们不可以使用 su 让他们直接变成 root,因为这些用户都必须知道 root 的密码,这种 方法很不安全,而且也不符合我们的分工需求。一般的做法是利用权限的设置,依工作性质 分类,让特殊身份的用户成为同一个工作组,并设置工作组权限。例如:要 wwwadm 这位 用户负责管理网站数据,一般 Apache Web Server 的进程 httpd 的所有者是 www,您可以设 置用户 wwwadm 与 www 为同一工作组,并设置 Apache 默认存放网页目录 /usr/local/httpd/htdocs 的工作组权限为可读、可写、可执行,这样属于此工作组的每位用户 就可以进行网页的管理了。 但这并不是最好的解决办法, 例如管理员想授予一个普通用户关机的权限, 这时使用上 述的办法就不是很理想。这时您也许会想,我只让这个用户可以以 root 身份执行 shutdown 命令就行了。完全没错,可惜在通常的 Linux 系统中无法实现这一功能,不过已经有了工具 可以实现这样的功能——sudo。 sudo 通过维护一个特权到用户名映射的数据库将特权分配给不同的用户,这些特权可 由数据库中所列的一些不同的命令来识别。 为了获得某一特权项, 有资格的用户只需简单地 在命令行输入 sudo 与命令名之后,按照提示再次输入口令(用户自己的口令,不是 root 用 户口令) 。例如,sudo 允许普通用户格式化磁盘,但是却没有赋予其他的 root 用户特权。 1、sudo 工具由文件/etc/sudoers 进行配置, 该文件包含所有可以访问 sudo 工具的用户列表并 定义了他们的特权。一个典型的/etc/sudoers 条目如下: 这个条目使得用户 liming 作为超级用户访问所有应用程序,如用户 liming 需要作为超级用 户运行命令,他只需简单地在命令前加上前缀 sudo。因此,要以 root 用户的身份执行命令 format,liming 可以输入如下命令: 注意:命令要写绝对路径,/usr/sbin 默认不在普通用户的搜索路径中,或者加入此路径: PATH=$PATH:/usr/sbin;export PATH。另外,不同系统命令的路径不尽相同,可以使用命令 “whereis 命令名”来查找其路径。 这时会显示下面的输出结果: 如果 liming 正确地输入了口令,命令 useradd 将会以 root 用户身份执行。 注意:配置文件/etc/sudoers 必须使用命令 Visudo 来编辑。 只要把相应的用户名、主机名和许可的命令列表以标准的格式加入到文件/etc/sudoers,并保 存就可以生效,再看一个例子。 2、例子: 管理员需要允许 gem 用户在主机 sun 上执行 reboot 和 shutdown 命令, 在/etc/sudoers 中加入: 注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患。 然后保存退出,gem 用户想执行 reboot 命令时,只要在提示符下运行下列命令: 输入正确的密码,就可以重启服务器了。 如果您想对一组用户进行定义,可以在组名前加上%,对其进行设置,如: 3、另外,还可以利用别名来简化配置文件。别名类似组的概念,有用户别名、主机别名和 命令别名。 多个用户可以首先用一个别名来定义, 然后在规定他们可以执行什么命令的时候 使用别名就可以了,这个配置对所有用户都生效。主机别名和命令别名也是如此。