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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

2、在第一个终端输入

echo $$

 这样会得到pid

3、在第二个终端输入

pkttyagent --process abc123 #上一步的pid


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

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


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

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

==== AUTHENTICATION COMPLETE ===

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

### 问题分析 当尝试通过 `sudo` 访问 `/etc/sudoers.d/01_always_set_sudoers_home` 文件时,如果出现 `Permission denied` 错误,则可能是由于以下几个原因之一: 1. **文件权限不正确**:该文件可能具有错误的权限设置,允许不必要的写入其他用户的访问。 2. **所有权问题**:文件的所有者可能不是 `root` 用户其所属组不是 `root` 组。 3. **SELinux AppArmor 配置冲突**:某些安全模块可能会阻止对该路径的访问。 --- ### 解决方法 #### 方法一:检查并修复文件权限 确保 `/etc/sudoers.d/01_always_set_sudoers_home` 的权限仅限于 `root` 用户可读和写。可以通过以下命令验证和修正权限: ```bash ls -l /etc/sudoers.d/01_always_set_sudoers_home chmod 440 /etc/sudoers.d/01_always_set_sudoers_home chown root:root /etc/sudoers.d/01_always_set_sudoers_home ``` 解释如下: - 使用 `chmod 440` 设置文件权限为只读模式,只有 `owner` 和 `group` 可以读取[^1]。 - 使用 `chown root:root` 将文件的所有权更改为 `root` 用户及其默认组[^2]。 #### 方法二:使用 `visudo` 编辑配置 为了防止手动编辑 `/etc/sudoers.d/*` 文件时引入语法错误,建议始终使用 `visudo` 工具来编辑这些文件。执行以下命令可以打开目标文件进行安全编辑: ```bash sudo visudo -f /etc/sudoers.d/01_always_set_sudoers_home ``` 此工具会在保存前自动检测语法错误,并提示用户修复它们[^4]。 #### 方法三:排查 SELinux/AppArmor 影响 如果系统启用了 SELinux AppArmor 安全策略,可能导致即使权限正确也无法访问指定文件。运行以下命令检查当前状态: ```bash getenforce # 检查 SELinux 是否启用 aa-status # 检查 AppArmor 状态 ``` 如果是 SELinux 导致的问题,临时将其切换到宽容模式测试效果: ```bash setenforce 0 ``` 永久更改需修改 `/etc/selinux/config` 中的 `SELINUX=enforcing` 参数为 `permissive` `disabled`[^3]。 对于 AppArmor,禁用相关配置项将特定路径加入白名单通常能解决问题。 #### 方法四:确认插件加载无误 部分情况下,SUDO 插件未能正常初始化也会引发类似的权限拒绝现象。查看日志文件(如 `/var/log/auth.log` `/var/log/messages`),寻找类似以下记录的信息: ``` error in /etc/sudo.conf, line X while loading plugin Y fatal error, unable to load plugins ``` 按照实际报错调整对应插件路径重新安装缺失组件即可恢复功能。 完成以上操作后再次尝试调用涉及的目标脚本者命令看是否恢复正常运作。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值