描述

  • 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 删除用户帐户和相关文件的更多相关文章

  1. Linux入门:usermod - 修改用户帐户信息

    一.什么是usermod? usermod 命令通过修改系统帐户文件来修改用户账户信息usermod [options] user_name选项(options)-a|--append ##把用户追加 ...

  2. linux基础命令--groupdel 删除群组

    描述 groupdel命令用于删除用户组. groupdel命令会去修改系统下的/etc/group和/group/gshadow文件,删除有关用户组的所有项目(一般来说使用groupadd或user ...

  3. linux基础命令--rmdir 删除空目录

    描述 rmdir命令用于删除空目录. 语法 rmdir [OPTION]... DIRECTORY... 选项列表 选项(常用的已加粗) 说明 --ignore-fail-on-non-empty 忽 ...

  4. Linux基础命令---lprm删除打印任务

    lprm lprm指令用来删除当前打印队列上的任务,如果没有指定,那么就删除当前打印任务.您可以指定一个或多个职务ID编号来取消这些职务,或者使用选项”-”取消所有作业. 此命令的适用范围:RedHa ...

  5. Linux基础命令---显示登录用户w

    w 显示哪些用户登录,并且显示用户在干什么.报头按此顺序显示当前时间.系统运行时间.当前登录用户数以及过去1.5和15分钟的系统平均负载.接着为每个用户显示以下条目:登录名.TTY名称.远程主机.登录 ...

  6. Linux基础命令---显示登录用户logname

    logname 显示当前登录的用户名称.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法        logname   2 ...

  7. userdel -删除使用者帐号及相关档案

    总览 SYNOPSIS userdel [-r] login 描述 userdel 命 令 修 改 系 统 帐 号 档 删 除 所 有 login 会 参 考 的 部 份 . 使 用 者 名 称 必 ...

  8. Linux基础命令汇总109条

    1       文件管理 1.1     basename 1.1.1     功能说明 从文件名中去掉路径和扩展名 例:basename include/stdio.h .h Output &quo ...

  9. 测试常用——linux 基础命令

    测试常用 的 linux 基础命令 1,查看服务器日志vi 查看文件(查找关键字:exception/exception  :  从上往下找,按n查找下一个关键字,按shift+n查找上一个关键字?e ...

随机推荐

  1. 帆软报表(finereport)动态列查询

    新建普通报表,新建一个数据集ds1,sql语句:select * from 销量 设计模板:选择复选按钮组控件 设置  控件名称 paraed , 控件值设置为公式:["列名",& ...

  2. MS SQL Server 查询元数据

    use test -- 查询数据库中所有的表和架构名称select SCHEMA_NAME(schema_id) as table_schema_name, name as table_name fr ...

  3. 论文阅读笔记四十一:Very Deep Convolutional Networks For Large-Scale Image Recongnition(VGG ICLR2015)

    论文原址:https://arxiv.org/abs/1409.1556 代码原址:https://github.com/machrisaa/tensorflow-vgg 摘要 本文主要分析卷积网络的 ...

  4. 2017-2018-2 20155309南皓芯 Exp4 恶意代码分析

    实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控. 答:我会使用sysmon工具来进行监控 ...

  5. MySQL和B树的那些事

    一.零铺垫 在介绍B树之前,先来看另一棵神奇的树——二叉排序树(Binary Sort Tree),首先它是一棵树,“二叉”这个描述已经很明显了,就是树上的一根树枝开两个叉,于是递归下来就是二叉树了( ...

  6. C++运算符重载——输入/输出运算符

    为了与IO标准库一致,重载输入输出运算符函数的第一个行参应该是流的引用,第二个行参是对象的引用. 如果重载为类的成员函数,第一个行参应该是对象的引用,第二个行参是流的引用. 使用方式是 ClassOb ...

  7. VBS教程

    Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子 ...

  8. 用Jmeter进行接口测试

    一.Jmeter 的使用步骤 打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可. 在下图打开的Jmeter 页面中,右键[“测试计划” -& ...

  9. Selenium的webdriver的常用方法,鼠标事件

    就来认识 WebDriver 中最常用的几个方法: get():跳转到的地址clear(): 清除文本. send_keys (value): 模拟按键输入. click(): 单击元素. 示例: f ...

  10. 图书管理系统 (c语言实现) (全部代码)

    直接上代码不解释 #include <stdio.h> #include <stdlib.h> #include <string.h> #define AVAILA ...