Lubuntu 22.04下非root用户无需sudo执行cp替换/etc/hosts失败问题排查
Lubuntu 22.04下非root用户无需sudo执行cp替换/etc/hosts失败问题排查
我来帮你分析下问题所在,核心是你对sudoers配置的作用理解有点偏差,咱们一步步来解决:
1. 最关键的误区:你还是需要用sudo执行命令
你在/etc/sudoers里配置的规则,是允许你的普通用户通过sudo免密执行这条cp命令,而不是让你直接跑cp就拥有root权限。普通用户本身没有写入/etc目录的权限,所以直接运行/usr/bin/cp /path/to/new_hosts /etc/hosts肯定会报Permission denied。
正确的执行方式应该是:
sudo /usr/bin/cp /path/to/new_hosts /etc/hosts
这时候你应该不需要输入root密码就能成功执行了。
2. 再检查sudoers配置的细节
如果按上面的方式执行还是有问题,你可以再确认以下几点:
- 替换配置里的
<username>为你实际的用户名(比如你的用户叫alice,就写alice ALL = (root) NOPASSWD: /usr/bin/cp /path/to/new_hosts /etc/hosts),别留占位符。 - 确保命令和路径完全匹配:sudoers里写的是绝对路径
/usr/bin/cp,执行时也要用这个绝对路径,不要只写cp(避免系统里的cp别名或不同路径的cp影响)。 - 确认
/path/to/new_hosts是实际存在的正确路径,并且你的普通用户有读取这个文件的权限。
3. 如果你真的想完全不用sudo执行(不推荐)
如果你的需求是完全不输入sudo就能执行这个操作,虽然不推荐(存在安全风险),但可以考虑通过polkit配置自定义权限规则,但sudo免密的方式已经足够安全且简单,除非有特殊场景需求,还是建议优先使用前面的sudo方案。
备注:内容来源于stack exchange,提问作者User051209
相关产品推荐
相关产品推荐

