运行全新安装的 Ubuntu 服务器 16.04.1,我尝试添加一个文件,/etc/sudoers.d/以便为某个命令授予一个用户 root 权限。
我添加了/etc/sudoers.d/servicetest具有以下内容的文件:
servicetest ALL = (root) NOPASSWD: /bin/systemctl status *
Run Code Online (Sandbox Code Playgroud)
该文件/etc/sudoers保持不变。它包含#includedir /etc/sudoers.d作为最后一行。不幸的是,此设置不起作用,当以 sudo 作为用户执行适当的命令时servicetest,我仍然被要求输入密码。但是,如果我将文件的内容/etc/sudoers.d/servicetest移到 的末尾/etc/sudoers,则一切都按预期进行。
这个问题的原因可能是什么?我怎样才能让文件/etc/sudoers.d/工作?
小智 14
在我的 CentOS 7 中,如果文件名中有一个点,系统将无法识别该文件。例如:
/etc/sudoers.d/user.perms # This file doesn't work
/etc/sudoers.d/userperms # This file does
Run Code Online (Sandbox Code Playgroud)
Ian*_*anC 11
显然,/etc/sudoers出于安全原因,文件中包含的文件必须具有 0440 权限。这样,只有 root 可以编辑文件,并且只有所有者和所有者组的成员可以读取它,从而不太可能将文件用作提升权限的尝试。
您可以在 上查看对包含文件的要求/etc/sudoers.d/README,但另外两个要求是文件名不应以 a .(隐藏文件)开头或以 a ~(备份文件约定)结尾。
感谢@steeldriver 确认理论并找到/etc/sudoers.d/README文件!
问题是不是由IanC作为回答,引起文件权限(sudo愉快地接受了由所拥有的文件root:root 0644,因为我现在可以确认,虽然它当然应该是root:root 0440出于安全原因),但是通过的末尾为新行文件前面有一个 windows 风格的行尾 ( \r\n)。
sudo只接受\n作为行结尾。
| 归档时间: |
|
| 查看次数: |
16781 次 |
| 最近记录: |