把sudoers或sudoers.d/* 的格式搞坏了,如何抢救

本文介绍了一种利用pkttyagent工具绕过sudo权限限制的方法。通过特定步骤可以在不需要直接sudo权限的情况下执行需要sudo权限的命令。该方法涉及在两个不同的SSH会话中进行操作,最终实现以提升的权限执行命令。

1、用一个可以sudo的用户,打开两个ssh

2、在第一个终端输入

echo $$

 这样会得到pid

3、在第二个终端输入

pkttyagent --process abc123 #上一步的pid


4、第二个终端此时会卡住,回到第一个终端输入

pkexec visudo #或者其他你想执行的命令


5、这时第一个终端也卡住,再回到第二个终端,会提示选用户和输密码

6、输入密码后第二个终端 提示

==== AUTHENTICATION COMPLETE ===

第二个终端又卡住,再回到第一个终端,这时刚才输入的命令就会以sudo的方式执行了,然后就可以修改配置或者删除文件了

### 解决方案 为了防止 `sudoers.d/README` 文件被任何用户写入,可以通过调整文件权限来实现这一目标。以下是具体的解决方案: #### 权限设置分析 在 Linux 系统中,默认情况下,属主拥有最高权限,而其他用户的权限则由文件的权限位决定。如果要完全阻止任何人修改该文件,则需要移除所有用户的写权限。 对于 `sudoers.d/README` 文件,推荐将其权限设置为只读模式,并确保只有 root 用户能够访问它。具体操作如下: 1. **更改文件权限** 使用 `chmod` 命令将文件权限更改为 440 者 400,这会分别表示: - 440:仅允许属主和属组具有读取权限。 - 400:仅允许属主具有读取权限。 ```bash chmod 440 /etc/sudoers.d/README ``` 如果希望进一步限制,使仅有 root 可以读取此文件,则可以运行以下命令[^1]: ```bash chmod 400 /etc/sudoers.d/README ``` 2. **验证文件权限** 运行以下命令确认文件权限已正确应用: ```bash ls -l /etc/sudoers.d/README ``` 输出应类似于以下内容(假设使用的是 400 权限): ``` -r-------- 1 root root 123 Oct 10 12:34 /etc/sudoers.d/README ``` 此处 `-r--------` 表明文件属于 root 用户,且只有 root 用户有读取权限。 3. **更改文件归属权** 确保文件归属于 root 用户及其默认组。通过以下命令完成: ```bash chown root:root /etc/sudoers.d/README ``` #### 安全性增强建议 除了调整文件权限外,还可以采取额外措施加强安全性: - 将 `/etc/sudoers.d/` 目录权限设为 750 更低,从而限制非授权用户进入目录。 ```bash chmod 750 /etc/sudoers.d/ ``` - 启用审计日志记录工具(如 `auditd`),监控对该文件的所有访问尝试。 --- ### 总结 通过以上方法可有效保护 `sudoers.d/README` 文件免受未经授权的写入行为影响。最终配置应当满足业务需求并兼顾安全性和可用性。 ```bash chmod 400 /etc/sudoers.d/README chown root:root /etc/sudoers.d/README ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值