场景:
在做渗透测试发现网站存在任意文件删除漏洞,测试删除了/etc/passwd,那么删除后该如何恢复?
一、 /etc/passwd文件的作用
/etc/passwd 是 Linux 系统中存储用户账户信息的关键文件,包含用户名、UID、GID、主目录路径和默认 Shell 等。删除 /etc/passwd 仍会导致以下问题:
- 用户无法登录(包括 SSH 和本地登录)
- 系统服务依赖用户身份时可能崩溃
- sudo、su 等权限管理工具失效
二、 恢复 /etc/passwd的两种场景
场景一:当前会话仍保持活跃
当前的 SSH 会话或终端会话尚未断开,且当前用户拥有 root 权限,可通过以下步骤恢复:
cp /etc/passwd- /etc/passwd
场景二:会话已断开,需进入单用户模式
若会话丢失,需通过物理控制台或虚拟化平台访问系统:
重启服务器,进入单用户模式,再执行cp /etc/passwd- /etc/passwd
,重启即可恢复
如果不清楚如何进入单用户模式,可查看往期文章:🧲CentOS忘记密码常见重置方法🧲
三、/etc/passwd- 文件的来源
自动备份机制:/etc/passwd-是/etc/passwd文件的备份文件,比如使用useradd、usermod等命令添加或修改用户信息时。旧文件将会以连字符“-
”结尾保存,系统安装后默认保存一份,这一机制同样适用于/etc/shadow-、/etc/gshadow-和/etc/group-等文件,当它们被修改时,旧文件也会以添加-
后缀的方式进行备份。
四、防护措施:防止误删或恶意删除
方法一:使用 chattr设置不可变属性
通过 chattr 为文件添加不可修改/删除属性(即使 root 用户也无法直接操作):
chattr +i /etc/passwd
chattr +i /etc/shadow
解除属性(需时):
chattr -i /etc/passwd
# 取消不可变属性后再修改
方法二:定期备份与版本控制
采用整机备份或手动备份关键文档,例如
cp /etc/passwd /etc/passwd.bak
cp /etc/shadow /etc/shadow.bak
参考🔗:
https://www.cnblogs.com/linuxprobe/p/12551075.html
https://access.redhat.com/solutions/106363