14.5.2 userdel命令实践
14.5.2 userdel命令实践
在企业场景中,如果不能确认用户相关的目录有没有重要数据,就不能使用-r。
以下是删除经验小结。
• vi/etc/passwd,然后注释掉用户,观察1个月,这样若出问题还可以还原。相当于进行操作前备份。
• 将登录Shell修改为/sbin/nologin。
提示:只要是修改和删除,都要小心谨慎!
范例14-10:删除用户alex。
[root@oldboy ~]# grep alex /etc/passwd
alex:x:506:508::/home/alex:/bin/bash
[root@oldboy ~]# userdel alex #<==该方法仅用于删除用户alex本身,但不删除其家目录及相关文件。
[root@oldboy ~]# grep alex /etc/passwd #<==/etc/passwd中已经不存在了。
[root@oldboy ~]# ls -ld /home/alex/ #<==但/home/alex家目录仍然存在。
drwx------. 2 506 508 4096 May 1 11:27 /home/alex/
使用“userdel用户名”这样的方法删除用户时,只会删除用户本身,其家目录及用户的相关文件并不会被删除。一般在生产场景中,如果无法确定被删用户的家目录等是否有用,或者有不规范的用户已在家目录下存在业务脚本或程序的时候,就不要使用“userdel-r用户名”这样危险的命令了,而是直接使用“userdel用户名”命令删除即可。
当然,我们还可以直接使用vi编辑/etc/passwd,找到要处理的用户,先注释一段时间,确认真的没问题了,然后再清理其家目录,注释的作用与userdel命令删除的效果一样,就是实现了被注释的用户无法登录(注释掉用户当前行即可)的功能,注释的作用有些类似于回收站,一旦发现问题,可以及时进行恢复工作。当然对于大门户上千台服务器大规模运维的情况,可以使用ldap等服务实现账户统一认证登录,批量地进行添加、删除和管理,此部分内容请参见老男孩教育针对门户运维的解决方案的相关文档或课程,因为这些内容超越了本书讲解的范围,所以这里不再赘述。
范例14-11:删除oldboyedu用户及所有与用户相关的文件目录。
如果在userdel命令后加上了参数-r,则表示在删除该用户的同时,将用户的家目录及本地邮件存储的目录和文件一并删除。因此,一定要谨慎使用。具体实现代码如下:
[root@oldboy ~]# touch /home/zuma/test.txt #<==在zuma家目录下建立测试文件。
[root@oldboy ~]# ls -l /home/zuma/test.txt #<==查看建立的测试文件。
-rw-r--r--. 1 root root 0 May 1 17:40 /home/zuma/test.txt
[root@oldboy ~]# userdel -r zuma #<==带-r参数删除用户。
[root@oldboy ~]# ls -l /home/zuma/test.txt
ls: cannot access /home/zuma/test.txt: No such file or directory
#<==测试文件test.txt也被删除了。
提示:处于登录状态中的用户无法被删除。
在生产场景中,请不要轻易使用-r参数,这会在删除用户的同时删除用户家目录下的所有文件和家目录。如果非要删除家目录,那么当用户家目录下包含了重要的文件时,建议在删除之前先进行备份。操作前进行备份在任何场合都是一个优秀运维人员应该具备的好习惯。

