linux基础命令--userdel 删除用户帐户和相关文件
描述
- userdel命令用于删除用户帐户和相关文件。
- userdel命令修改系统账户文件,删除所有涉及用户的信息,指定的用户(LOGIN)必须存在。
语法
userdel [options] LOGIN
选项列表
| 选项(常用的已加粗) | 说明 |
| -f, --force |
强制删除用户账户,即使用户处于登录状态。它强制删除用户家目录和邮件池(一般在/var/spool/mail/目录下),即使其他用户家目录和指定的用户家目录同名或指定的用户没有邮件池。 如果在/etc/login.defs中将USERGROUPS_ENAB定义为yes,并且存在与删除的用户同名的组,那么这个组也会被删除,即使它是另一个用户的主组。 注意:该选项很危险,可能会导致系统处于不一致的情况,谨慎使用。 |
| -r, --remove |
删除用户的家目录和邮件池(文件),包括它们自身。必须搜索和手动删除其他文件系统下的相关文件 |
| -R, --root CHROOT_DIR | 指定在CHROOT_DIR(改变后的根目录)下更改生效以及使用CHROOT_DIR目录下的配置文件 |
| -Z, --selinux-user | 删除用户登录的任何SELinux用户映射 |
说明
- 应该先手动检查所有的文件系统,确保没有任何文件仍然属于该用户。
- 不能删除NIS客户端上的任何NIS属性,这必须在NIS服务器上执行。
- 如果正在运行属于该账户的进程,userdel将不会允许删除该账户;此时,你需要先kill该进程或锁定用户的口令(或账户),然后再删除账户;当前也可以使用-f选项强制删除。
- 如果/etc/login.defs的USERGROUPS_ENAB设置为yes, userdel将删除与用户同名的组。为了避免口令和组数据库中的不一致,userdel会检查该组不会作为另一个用户的主组,否则只会警告而不会删除组。-f选项可以强制删除该组
实例
分别使用-f和-r选项测试删除共享的主组。
[root@pople ~]# ls -la /home/test/ /var/mail/test /var/spool/mail/test
-rw-rw---- 1 test mail 0 Apr 10 13:05 /var/mail/test
-rw-rw---- 1 test mail 0 Apr 10 13:05 /var/spool/mail/test /home/test/:
total 16
drwx------ 2 test test 83 Apr 10 18:53 .
drwxr-xr-x. 5 root root 41 Apr 10 13:05 ..
-rw------- 1 test test 41 Apr 10 18:53 .bash_history
-rw-r--r-- 1 test test 18 Oct 31 01:07 .bash_logout
-rw-r--r-- 1 test test 193 Oct 31 01:07 .bash_profile
-rw-r--r-- 1 test test 231 Oct 31 01:07 .bashrc
[root@pople ~]# useradd -g test test_userdel # 添加一个新用户,设置它的初始主组为用户test的主组
[root@pople ~]# id test && id test_userdel # 共享一个用户组:test
uid=1002(test) gid=1002(test) groups=1002(test)
uid=1003(test_userdel) gid=1002(test) groups=1002(test)
[root@pople ~]# userdel -r test # 删除用户test,提示不能删除组test,因为该组也是另一个用户的主组,但除用户组之外的信息都已经删除了。
userdel: group test is the primary group of another user and is not removed.
[root@pople ~]# tail -2 /etc/passwd && tail -2 /etc/group # 可以发现test组还存在,用户test已删除。
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
test_userdel:x:1003:1002::/home/test_userdel:/bin/bash
tss:x:59:
test:x:1002:
[root@pople ~]# useradd -g test test # 恢复用户test,进行下一步测试。
[root@pople ~]# id test && id test_userdel # 对比两用户信息。
uid=1004(test) gid=1002(test) groups=1002(test)
uid=1003(test_userdel) gid=1002(test) groups=1002(test)
[root@pople ~]# userdel -f test # 可以看到跟使用-r选项不同的是使用-f选项没有报任何异常,强制性删除。
[root@pople ~]# tail -2 /etc/passwd && tail -2 /etc/group # 所有有关用户test的信息已删除,包括其主组,即使该组是另一个用户的主组。
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
test_userdel:x:1003:1002::/home/test_userdel:/bin/bash
stapdev:x:158:
tss:x:59:
[root@pople ~]# id test_userdel # 可以发现/etc/group文件里已经没有组test文件的信息,用户test_userdel的gid是不存在的,无效的。
uid=1003(test_userdel) gid=1002 groups=1002
[root@pople ~]# su - test_userdel
/usr/bin/id: cannot find name for group ID 1002 # 切换到该用户下提示没有找到用户的gid对应的组名
[test_userdel@pople ~]$ touch a.txt # 但是依旧能创建一个文件,不过文件的属组是不存在的。
[test_userdel@pople ~]$ ls -l a.txt
-rw-r--r-- 1 test_userdel 1002 0 Apr 15 15:36 a.txt
总结:删除一个用户账户,应该确保没有任何文件仍然属于该账户,而且应谨慎使用-f选项,手动检查用户组不被其他用户当作主组来使用,否则会导致组信息异常。
linux基础命令--userdel 删除用户帐户和相关文件的更多相关文章
- Linux入门:usermod - 修改用户帐户信息
一.什么是usermod? usermod 命令通过修改系统帐户文件来修改用户账户信息usermod [options] user_name选项(options)-a|--append ##把用户追加 ...
- linux基础命令--groupdel 删除群组
描述 groupdel命令用于删除用户组. groupdel命令会去修改系统下的/etc/group和/group/gshadow文件,删除有关用户组的所有项目(一般来说使用groupadd或user ...
- linux基础命令--rmdir 删除空目录
描述 rmdir命令用于删除空目录. 语法 rmdir [OPTION]... DIRECTORY... 选项列表 选项(常用的已加粗) 说明 --ignore-fail-on-non-empty 忽 ...
- Linux基础命令---lprm删除打印任务
lprm lprm指令用来删除当前打印队列上的任务,如果没有指定,那么就删除当前打印任务.您可以指定一个或多个职务ID编号来取消这些职务,或者使用选项”-”取消所有作业. 此命令的适用范围:RedHa ...
- Linux基础命令---显示登录用户w
w 显示哪些用户登录,并且显示用户在干什么.报头按此顺序显示当前时间.系统运行时间.当前登录用户数以及过去1.5和15分钟的系统平均负载.接着为每个用户显示以下条目:登录名.TTY名称.远程主机.登录 ...
- Linux基础命令---显示登录用户logname
logname 显示当前登录的用户名称.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 logname 2 ...
- userdel -删除使用者帐号及相关档案
总览 SYNOPSIS userdel [-r] login 描述 userdel 命 令 修 改 系 统 帐 号 档 删 除 所 有 login 会 参 考 的 部 份 . 使 用 者 名 称 必 ...
- Linux基础命令汇总109条
1 文件管理 1.1 basename 1.1.1 功能说明 从文件名中去掉路径和扩展名 例:basename include/stdio.h .h Output &quo ...
- 测试常用——linux 基础命令
测试常用 的 linux 基础命令 1,查看服务器日志vi 查看文件(查找关键字:exception/exception : 从上往下找,按n查找下一个关键字,按shift+n查找上一个关键字?e ...
随机推荐
- tarjan 题目汇总(含解析)
下面容许我偷个懒,洛谷上写过的blog我就不来再抄一遍了 洛谷P3436 [[POI2006]PRO-Professor Szu](别称:作死的老教授) 洛谷P4306 [[JSOI2010]连通数] ...
- 【原创】大叔问题定位分享(20)hdfs文件create写入正常,append写入报错
最近在hdfs写文件的时候发现一个问题,create写入正常,append写入报错,每次都能重现,代码示例如下: FileSystem fs = FileSystem.get(conf); Outpu ...
- Python 八皇后问题
八皇后问题描述:在一个8✖️8的棋盘上,任意摆放8个棋子,要求任意两个棋子不能在同一行,同一列,同一斜线上,问有多少种解法. 规则分析: 任意两个棋子不能在同一行比较好办,设置一个队列,队列里的每个元 ...
- css中的宽度
浏览器通过CSS对元素的盒子模型的描述进行页面渲染的.因此,元素的宽度受到父元素.css描述的影响. 通常,元素的宽度是指盒子模型中content-box所占用的宽度.也就是说,默认box-sizin ...
- PHP实现微信开发中提现功能(企业付款到用户零钱)
一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https://pay.weixin.qq.com/wiki/do ...
- 参数ref与out
通常我们向方法中传递的是值,方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不会受到影响. 这种情况是通常的,当然还有另外一种情况,我们向方法传递参数的形 ...
- Java中CountDownLatch和CyclicBarrier的使用和比较
CountDownLatch和CyclicBarrier同为Java1.5开始引入的,应用于多线程编程中的一种工具,二者用途十分相近,十分容易混淆. CountDownLatch CountDownL ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-10项目各种全局帮助类
本文目录 1. 前沿2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装3.XmlHelper快速操作xml文档4.SerializationHe ...
- Selenium断言的使用,等待
自动化测试常用断言的使用方法(python) 自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断. 这 ...
- golang str 首字母大写
首字母大写 //如果是小写字母, 则变换为大写字母 func strFirstToUpper(str string) string { if len(str) < 1 { return &quo ...