lsattr /etc/shadow
如果输出包含 i(如 ----i---------),说明被锁定了。是的,就是这一种
太好了!你已经定位到问题根源了:
✅
/etc/shadow被设置了不可变(immutable)属性(i标志),导致userdel、passwd、chmod等任何修改操作都被系统拒绝。
这是 Linux 的一种安全机制(通过 chattr +i 启用),连 root 用户也无法修改或删除该文件,除非先移除这个属性。
🔓 解决方法:移除不可变属性
步骤 1:确保你是 真正的 root
# 如果你还没切换到 root,请先获取 root 权限
sudo -i
# 或
su -
验证:
id
# 必须显示 uid=0(root)
⚠️ 注意:即使有
i属性,只有 root 才能用chattr -i移除它。普通用户(包括有 sudo 的用户)在未真正成为 root 前无法操作。
步骤 2:移除 /etc/shadow 的不可变属性
chattr -i /etc/shadow
✅ 成功执行后,不会有任何输出(静默成功)。
步骤 3:验证是否已解除
lsattr /etc/shadow
正常输出应为:
---------------- /etc/shadow
(不再有 i)
步骤 4:现在可以安全删除用户了
userdel -r vendor
✅ 这次应该不会再报错了!
🛡️ 额外建议:检查其他关键文件是否也被锁定
有时安全脚本会批量锁定敏感文件,建议顺带检查:
lsattr /etc/passwd
lsattr /etc/group
lsattr /etc/gshadow
如果发现其他文件也有 i,同样用 chattr -i 解除:
chattr -i /etc/passwd
chattr -i /etc/group
# etc.
💡 但注意:不要随意给这些文件重新加
i,除非你明确知道自己在做什么。错误的 immutable 设置会导致系统无法创建/删除用户、改密码等,运维极其困难。
❓为什么会设置 i 属性?
常见原因:
- 安全加固脚本(如等保合规要求)
- 防篡改配置(防止恶意修改密码)
- 误操作(有人执行了
chattr +i /etc/shadow但忘了)
但在云服务器上,一般不建议长期锁定 /etc/shadow,因为它会阻碍正常的用户管理。
✅ 总结命令(一键执行)
sudo -i
chattr -i /etc/shadow
userdel -r vendor
完成后,你的 vendor 用户及其家目录将被彻底删除。
如果你后续还需要创建新用户、修改密码等操作,现在都可以正常进行了。
如有其他问题,欢迎继续提问!
2732

被折叠的 条评论
为什么被折叠?



