useradd添加的用户名无法删除问题

Linux用户管理实战

1 创建一个用户名

bintian.xbt@localhost:~$ sudo useradd -m bintian.test
[sudo] password for bintian.xbt:
bintian.xbt@localhost:~$ cd /home/bintian.test/
bintian.xbt@localhost:/home/bintian.test$ ls
examples.desktop
bintian.xbt@localhost:/home/bintian.test$ ls -al
drwxr-xr-x  2 bintian.test bintian.test 4096 Dec 29 21:28 .`这里写代码片`
drwxr-xr-x 80 root         root         4096 Dec 29 21:28 ..
-rw-r--r--  1 bintian.test bintian.test  220 Apr  3  2012 .bash_logout
-rw-r--r--  1 bintian.test bintian.test 3486 Apr  3  2012 .bashrc
-rw-r--r--  1 bintian.test bintian.test 8445 Apr 17  2012 examples.desktop
-rw-r--r--  1 bintian.test bintian.test  675 Apr  3  2012 .profile

2删除用户名

bintian.xbt@localhost:~$ sudo userdel -r bintian.test
[sudo] password for bintian.xbt:
userdel: user bintian.test is currently logged in

查找资料发现:主要是新建的用户还有一些进程在运行 通过 lsof | grep bintian.test or lsof -u bintian.test 命令可以查看
解决办法:pkill -u username or pkill -u uid 杀掉与bintian.test有关的进程就可以了

<think> 我们正在处理一个关于Linux系统管理的问题:使用useradd添加用户后,用户的家目录不存在。这通常发生在使用useradd命令时没有指定创建家目录的选项。我们需要提供解决方案。 根据Linux的useradd命令,默认行为可能不会创建家目录,这取决于系统的配置(如/etc/default/useradd中的设置)或使用的选项。通常,我们需要使用-m选项来创建家目录。 解决方案步骤: 1. 检查当前用户的家目录是否确实不存在。 2. 如果不存在,我们可以考虑手动创建家目录并设置正确的权限,或者使用usermod命令调整,但更简单的办法是删除该用户并重新使用正确的选项添加。 3. 或者,我们也可以直接创建家目录并修复权限。 但是,用户可能不想删除已有用户(因为可能已经设置了其他属性),因此我们将提供手动创建家目录的方法。 具体步骤: a. 创建家目录:使用mkdir命令创建目录,通常家目录在/home/username。 b. 设置正确的所有权:使用chown命令将目录的所有权赋予该用户及其默认组。 c. 设置权限:通常家目录的权限设置为700(仅用户可读、写、执行)。 d. 复制骨架目录(/etc/skel)中的文件到新家目录(可选,如果需要默认的配置文件)。 另外,我们也可以使用usermod命令来修改用户的家目录位置(如果需要改变位置),但这里我们假设我们只是需要创建缺失的家目录。 然而,还有一种情况:用户的家目录在/etc/passwd中记录的位置可能不是/home/username,所以我们应该先检查/etc/passwd文件中该用户的家目录路径。 因此,完整步骤如下: 1. 确认用户的家目录路径: `grep '^username:' /etc/passwd` 输出中最后一个冒号分隔的字段就是家目录路径。 2. 如果该路径不存在,则创建它(假设路径为/home/username): `sudo mkdir /home/username` 3. 设置所有权和权限: `sudo chown username:username /home/username` `sudo chmod 700 /home/username` 4. (可选)复制骨架文件: `sudo cp -r /etc/skel/. /home/username/` 然后确保这些复制的文件的所有权也是该用户: `sudo chown -R username:username /home/username` 5. 如果/etc/passwd中记录的家目录路径不是我们创建的这个路径(比如是其他路径),那么我们需要修改用户的家目录: `sudo usermod -d /home/username username` 注意:在修改家目录位置时,如果该用户已经登录,可能会出现问题。最好在用户未登录时操作。 另外,还有一种方法:在添加用户时,应该使用`-m`选项来确保创建家目录。因此,以后添加用户时,可以使用: `sudo useradd -m username` 如果系统默认配置为不创建家目录,可以修改/etc/default/useradd文件,将其中的CREATE_HOME设置为yes,或者使用别名覆盖(alias useradd='useradd -m'),但修改配置文件需要谨慎。 因此,为了避免将来出现同样的问题,建议在添加用户时始终使用`-m`选项。 现在,针对当前问题,我们给出逐步的解决方案。 注意:如果用户在创建时已经设置了其他选项,而我们不想重新创建用户,那么手动创建家目录并设置权限是最直接的。 综上所述,我们写出解决方案。 </think> ### 使用 `useradd` 添加用户后家目录不存在的解决方案 当使用 `useradd` 命令添加用户时家目录未自动创建,通常是由于未使用 `-m`(`--create-home`)选项或系统配置问题。以下是详细解决步骤: #### 1. **检查用户配置** ```bash grep '新用户名' /etc/passwd # 替换"新用户名"为实际用户名 ``` - 若输出末尾显示 `/nonexistent` 或无效路径(如 `:/home/用户名` 缺失),说明家目录未创建。 #### 2. **手动创建家目录(推荐)** ```bash sudo mkdir /home/用户名 # 创建目录 sudo cp -r /etc/skel/. /home/用户名/ # 复制默认配置文件 sudo chown -R 用户名:用户名 /home/用户名 # 设置所有权 sudo chmod 700 /home/用户名 # 设置权限(仅用户可访问) ``` #### 3. **修改用户配置(可选)** ```bash sudo usermod -d /home/用户名 -m 用户名 # 重置家目录路径并迁移文件 ``` #### 4. **预防措施** - **正确添加用户**: ```bash sudo useradd -m -s /bin/bash 用户名 # -m确保创建家目录 ``` - **修改系统默认配置**: 编辑 `/etc/default/useradd`,将 `CREATE_HOME=no` 改为 `CREATE_HOME=yes`[^1]。 #### 5. **验证修复** ```bash sudo su - 用户名 # 切换用户测试 pwd # 应显示/home/用户名 ``` > **原因分析**: > `useradd` 默认不创建家目录,需显式添加 `-m` 参数。部分 Linux 发行版(如 Debian)通过 `adduser` 封装脚本自动处理,但底层 `useradd` 仍需指定参数[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值