linux下修改passwd文件的恢复方法

本文介绍了一个因误操作导致Linux系统/etc/passwd文件内容被更改,进而无法正常登录系统的案例,并详细记录了解决过程。通过GRUB引导界面修改启动参数,最终成功修复了/etc/passwd文件。

    学习linux的时候,访问一些文件或执行一些操作:例如拷贝文件。需要输入sudo密码,为了不执行这个操作,可以执行一下配置:

$ sudoedit /etc/sudoers 进入文件后,修改 %XXX ALL=(ALL) ALL 为 %XXX ALL=(ALL) NOPASSWD:ALL,其中XXX是用户名。不建议这样做,因为会无意间改变受sudo保护的文件。

    由于没有经常这样做,无意间把这个功能的实现,记成了对/etc/passwd的修改,一个巨大的悲剧。

    我的错误操作如下:sudo进入/etc/passwd, 在passwd中的项中,把我的用户名后面的主目录和shell部分全部屏蔽掉了,然后保存退出vim。之后我再次执行sudo命令,系统就提示 I have no name@ ,原因是我把passwd中我的用户名信息中的关键两项屏蔽了。再也进不去了。于是重启,更大麻烦出现了,登陆不了系统,用户名uid已经不存在!!!

    解决办法:启动系统进入grub引导界面。高亮系统启动项的时候,按 e 进入编辑界面,修改下面的项目:

linux   /boot/vmlinuz-2.6.32-21-generic root=UUID=99a490b5-1a10-43d5-b61c-4bd3c020d37a ro   quiet splash vga=normal nomodeset

    把quiet splash 去掉,ro改为rw init=/bin/bash ,其他部分不变。ctrl+x启动,成功进入bash字符界面,成功修改/etc/passwd,重启后成功进入系统。问题解决,不需要重新安装系统,吼吼。

 

Linux系统中,当用户尝试修改 `/etc/passwd` 文件时遇到 `Permission denied` 错误,通常是由于权限不足或文件被锁定所致。以下是几种可能的解决方案: 1. **使用 `sudo` 提升权限** 在执行编辑命令时,确保使用 `sudo` 来获得管理员权限。例如,使用 `sudo vi /etc/passwd` 或 `sudo nano /etc/passwd` 可以绕过普通用户的权限限制。 2. **检查文件锁定状态** `/etc/passwd` 文件可能被系统锁定以防止意外修改。可以使用 `lsattr /etc/passwd` 命令检查文件属性。如果看到 `i` 标志(表示文件不可变),则需要使用 `chattr -i /etc/passwd` 命令解除锁定。 3. **确保 root 用户拥有文件所有权** 如果文件的所有权被更改,可能导致普通用户无法修改。可以通过 `chown root:root /etc/passwd` 命令将文件的所有权恢复为 root 用户和 root 组,前提是当前用户具有足够的权限来更改所有权。 4. **修改文件权限** 如果 `/etc/passwd` 的权限被修改,可以尝试使用 `chmod 644 /etc/passwd` 来恢复默认权限设置。这将允许 root 用户写入,其他用户只读。 5. **使用专用工具管理用户和组** Linux 提供了多种工具来管理用户和组,例如 `useradd`、`usermod` 和 `groupadd`,这些工具可以在不直接编辑 `/etc/passwd` 的情况下完成用户和组的管理任务[^2]。 6. **检查 SELinux 或 AppArmor 策略** 如果系统启用了 SELinux 或 AppArmor,某些安全策略可能会阻止对 `/etc/passwd` 的修改。可以通过临时禁用这些安全模块来确认是否是它们导致的问题。例如,对于 SELinux,可以使用 `setenforce 0` 命令临时禁用;对于 AppArmor,则可以使用 `systemctl stop apparmor` 命令。 7. **使用 `mkpasswd` 工具生成密码条目** 如果需要向 `/etc/passwd` 添加新用户条目,可以使用 `mkpasswd` 工具生成符合格式的密码条目,例如 `mkpasswd -l > /etc/passwd` 可用于更新本地用户的密码文件[^3]。 通过以上方法,应该能够解决大多数与 `/etc/passwd` 文件权限相关的错误。如果问题仍然存在,建议进一步检查系统日志以获取更多线索。 --- ```bash # 检查文件属性 lsattr /etc/passwd # 解除文件锁定 chattr -i /etc/passwd # 修改文件所有权 chown root:root /etc/passwd # 恢复文件默认权限 chmod 644 /etc/passwd # 临时禁用 SELinux setenforce 0 # 临时禁用 AppArmor systemctl stop apparmor # 使用 mkpasswd 更新密码文件 mkpasswd -l > /etc/passwd ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值