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 ...
随机推荐
- 使用fiddler模拟重复请求接口
使用fiddler模拟重复请求接口 重复请求某个接口,比如评论一条,这样点击多次就可以造多个评论数据
- 【原创】大数据基础之Hive(1)Hive SQL执行过程之代码流程
hive 2.1 hive执行sql有两种方式: 执行hive命令,又细分为hive -e,hive -f,hive交互式: 执行beeline命令,beeline会连接远程thrift server ...
- 【转载】IIS出现“HTTP 错误 500.0,C:\php\php-cgi.exe - FastCGI 进程意外退出”解决方法
昨天给大家介绍了在windows+iis的平台上搭建支持php+mysql平台的文章,教程步骤都是笔者一步一个操作然后一个记录介绍给大家的,实机演练,教程绝对切实可用,但是不同的同学在不同的环境下按照 ...
- linux下安装redis并开机自启动
分享一个博客地址, 写的太好了, 满满的都是干货 ! https://www.cnblogs.com/renzhicai/p/7773080.html
- linux服务器配置pyspider出现Could not run curl-config 的解决方式
Downloading/unpacking pycurl (from pyspider) Downloading pycurl-7.19.5.1.tar.gz (142kB): 142kB downl ...
- 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程
<一>RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便 ...
- ELK对Tomcat日志双管齐下-告警触发/Kibana日志展示
今天我们来聊一聊Tomcat,相信大家并不陌生,tomcat是一个免费开源的web应用服务器,属于轻量级的应用程序,在小型生产环境和并发不是很高的场景下被普遍使用,同时也是开发测试JSP程序的首选.也 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-12基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- Ios还是安卓的判断
最近在做app的h5页面,涉及到一些小知识点 记录一下 1.微信屏蔽了下载的链接,所以在网页中添加的下载链接都要在浏览器中打开,这里需要一个提示用户在浏览器打开的提示弹框 //判断是否在微信终端打开 ...
- 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)
如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...