UNIX中用户账户的创建、删除和管理
脚本之家
创建用户的12个步骤
1、分配一个惟一的UID
查看系统策略中是否有关于选择UID的规定。使用下一个可用的UID,然后确保它不是保留UID,没有其他的用户使用,或者没有与安装文件系统的远程服务器中的UID发生冲突。
2、选择一个默认的GID
查看系统策略中是否有关于选择GID的规定,并且判断哪个GID适合于该用户使用。
检查用户是否需要添加到任何其他组中,无论是本地(在/etc/groups中)或者远程(如在NIS netgroups映射中)。
3、分配一个唯一的用户名
查看系统策略中关于生成用户名的规定。以确保推荐使用的用户名不属于保留范畴,并且没有其他用户使用。
4、分配home目录空间
查看系统策略中是否有关于分配新用户home目录的规定。确保系统中有足够的空间用于创建用户,还要分配额外的合理空间,使用户可以创建文件。
5、选择shell
查看系统策略中是否有关于选择新用户登录shell的规定。以确认在所有相关的系统中都有推荐使用的shell,并且存在于/etc/shells中。
6、创建/etc/passwd项
在前一个步骤所选择的参数的基础上,使用vipw手动在/etc/passwd文件中创建一个项。注意,大家可以使用任意文本编辑器来完成这项工作,但vipw会进行文件锁检查,并且可以防止损坏root项。
或者立即禁用新帐户,或者为它设置一个安全的密码。
7、在必要时修改/etc/group和netgroups
编辑/etc/group文件,另外还要修改新用户的非默认组所有权。
8、创建home目录
使用mkdir命令来创建用户选择的home目录。
9、复制配置文件
查看系统策略中关于本地策略、帮助和点文件的规定,将它们复制到用户相应的home目录中。
10、设置配额
查看系统策略中关于在home和其它文件系统中设置 配额的规定。为每个文件系统设置配额。
11、设置所有权
用户需要有权访问自己的home目录和文件。使用chown -Rh命令来设置用户和组所有权。使用该选项时,chown命令可以递归浏览所有的子目录,但不会废弃(dereference)任何符号链接。
12、测试
花一些时间来验证新用户账户——这样可以省去很多麻烦。以用户身份登录,进入用户预订的环境(如果可能)。
删除用户的12个步骤
1、删除帐户的步骤
1)先锁定用户帐户,可使用passwd命令
2)使用户所有文件失效,find / -user UID -xdev -exec {} chmod 000 \; ,这里-xdev的作用是只在本文件系统中搜索。默认情况下,find命令不会废弃链接文件,他只是修改链接文件的所有者,而不是链接文件所指向的文件的所有者。
3)查看用户的状态,要确保用户没有登录到系统中,也没有某个进程正在使用该用户。
4)将账户信息和用户所属文件(用户的home目录),包括邮件备份到可移动存储上。
5)邮件转发处理
6)检查哪些文件系统为用户设置了配额。
7)删除/etc/passwd和/etc/shadow中的项,用vipw删除,运行pwck来确保文件的一致性。调用pwconv来更新shadow文件的内容。要记住,一旦从主email服务器中删除/etc/passwd项,用户就不能再接受本地邮件。用户名和UID可以返回到池中,以供新帐户使用,但是在一段时间内,不应该再次进行分配,防止用户恢复使用。
8)从/etc/group中删除对用户名的引用,运行grpck来验证文件的一致性。
9)删除home目录及相关文件。
10)删除邮件目录
11)查看无主文件,find / -xdev -nouser,不要自动删除无主文件,某些关键的系统文件属于不存在的用户,这种情况有其合法原因,也可能是因为疏忽。
12)删除用户配额。
在确定用户处于非活动状态后就可以使用userdel -r命令来删除用户账户。但是该命令的用途很有限,有些功能还需要手动去执行和检查。
关于UNIX用户管理的注意点
最佳操作
对策略的考虑
l 提前定义策略。
l 了解可以忽视和违反策略的人。
l 确保所有的管理员都知道策略,并且在适当的时候可以很好地使用。
l 清晰地定义可以用帐户的人。
l 清晰地定义生成用户名的方式。
l 清晰地定义指派帐户、发布帐户和回收帐户的方式。
对用户名和UID的操作
l 强制用户与帐户一对一地映射。
l 将小于100的UID保留为系统帐户。
l 保证UID的惟一性。
l 保证用户名的惟一性。
l 定期运行pwck。
对组名和GID的操作
l 保证GID的惟一性。
l 保证组名的惟一性。
l 尽可能指派小于60000的GID
l 不要让用户超出本地最大的组成员数(通常是16)
l 定期运行grpck(如果提供gpasswd,就要提高运行频率)
帐户锁定时的操作
l 强制锁定失败的登录尝试。
l 在密码散列值域中使用特殊字符“*”和“!”。最好使用特定的字符短语,如“*LK*”。
l 虽然从技术上来讲可以清空密码散列值域,但是不要这样做。
l 通过就爱那个登录shell指定为/dev/null或者/bin/true或者/bin/false,来锁定shell访问。