用户帐号
Linux系统中通常有三种类型的用户:超级用户(super user),常规用户(regular user)和系统用户(system user)。
超级用户的UID和GID都是0系统用户并不是一个人,也被称为逻辑用户或伪用户,系统用户没有相应的/home目录和密码,系统帐号通常是Linux系统使用的一个管理日常服务的管理帐号。
例如,系统用户www-data拥有Apache web服务器和它相关的文件,只有系统用户www-data和超级用户具有这些文件的访问权限,在passwd中系统用户表示如下:www-data:x:33:33:www-data:/var/www:/bin/sh
群组的设置
系统管理员可以通过对群组授权(grant)或撤销权限(revoke)而免去了为每个用户设置权限的繁琐工作。此外,设置群组权限可以为群组中的用户建立公共的工作区,管理他们对外设的使用权限。
不同的Linux系统使用不同的理念来设置群组管理,在Ubuntu系统中使用的是UPG(user private group)机制,默认为每个用户设置与用户名同名的群组名。系统中的群组信息保存在/etc/group文件中。这个文件中是系统中所有群组的列表。可以看到大部分的群组是服务(mail,news等)和设备(floppy,disk等)。如之前提到的例子,这些系统设备群组对与其相关的文件具有所有权和控制权。添加一个常规用户到一个设备的群组,可以使这个常规用户拥有使用这个设备的权限,如果群组管理员授权给这个常规用户。也就是说将用户adm001添加到cdrom群组,那么使得adm001能够使用光驱设备。
管理群组的工具
Ubuntu提供了命令行工具来管理群组,也提供了GUI工具来管理群组。相比较而言,命令行工具更为强大和灵活。常用的群组管理命令行工具主要有:
groupadd 创建一个新的群组
groupdel 删除一个现有的群组
groupmod 创建一个群组名或GID,但不添加或删除群组中的成员
gpasswd 创建一个群组密码,每个群组可以有一个群组密码和群组管理员,使用参数-A指定一个用户为群组管理员。
useradd -G 参数-G在创建用户时添加该用户到一个群组
usermod -G 允许你添加一个不在线的用户到群组中
grpck 检查/etc/group文件,防止拼写错误
下面用一个简单的例子来说明群组管理命令行工具的使用方法。
现在有一个DVD-RW设备(/dev/scd0),系统管理员希望给予常规用户adm002 这个设备的访问权限,可以有以下几步:
1)用groupadd 命令创建一个群组dvdrw
sudo groupadd dvdrw
2)用chgrp命令将设备DVD-RW(/dev/scd0)的群组属性更改为dvdrw
sudo chgrp dvdrw /dev/scd0
3)用usermod命令将授权用户添加到这个群组中
sudo usermod -G dvdrw adm002
4)用gpasswd指定adm002为组管理员,这样他可以添加新的用户到这个群组中
sudo gpasswd -A adm002
现在adm002拥有DVD-RW驱动的访问权限,超级用户和adm002都有添加新用户到这个群组的能力,因为adm002是群组管理员。
用户管理
和群组类似,Ubuntu提供了命令行工具来管理用户,也提供了GUI工具来管理用户。相比较而言,命令行工具更为强大和灵活。
常用的用户管理命令行工具主要有:
useradd 添加一个新用户到Linux系统,可以定制的选项主要有,用户的/home目录(默认的/home目录是/home/username,默认的群组名为用户名),起始群组等。
useradd -D 定制系统创建新用户时的默认设置,当不使用任何参数时,将返回系统当前的默认设置。
userdel 命令完全移除用户帐号(包括删除用户的/home目录以及目录下的所有文件)。
passwd 更新密码管理系统使用的"authentication tokens"
usermod 更改用户属性,最常使用的参数有-s更改shell,-u更改UID,当用户登陆系统或者运行程序时,不可更改用户属性。
chsh 命令更改用户的默认shell,对于Ubuntu系统而言,默认的shell是/bin/bash,即Bourne Again Shell。
下面通过一个简单的例子来创建一个用户,在这里我们使用-p选项设置密码,-s选项设定shell,-u选项设置UID(当使用默认设置创建用户时,不需要指定这些选项)。
sudo useradd testuser -p AbcDe -s /bin/zsh -u 1042
监测系统中的用户活动
w命令可以告诉系统管理员,当前登陆系统的用户有哪些,分别在哪里登陆,目前正在做什么。
在w命令后加上用户名,讲只返回特定用户的状态。
ac命令可以返回用户总的链接时间,它从/var/log/wtmp文件中获取信息,想要使用ac命令,需要安装acct软件包。
last命令从/var/log/wtmp中获取信息,列出所有用户从该文件创建起的登陆记录。
lastb命令输出所有失败的/错误的登陆,对于系统维护有很好的指导意义。
锁住一个用户的帐号可以使用以下命令:sudo passwd -l username,撤销时可以使用-u选项,也即sudo passwd -u username。