使用visudo -f
某些答案中提到的另一个好处是,有一个相应的选项,-c
或者--check
可以验证您在sudoers.d文件或您可能想要放入sudoers.d中的任何其他文件中没有无效信息。在使用自动化工具提到的情况下,这非常方便,因为您可以运行例如
sudo visudo -c -q -f /home/myuser/mysudoers && \
sudo chmod 600 /home/myuser/mysudoers && \
sudo cp /home/myuser/mysudoers /etc/sudoers.d/mysudoers
这将以静默方式检查文件(由于-q而没有输出),并且只有在不返回错误(退出1表示无效的sudoers文件)的情况下,才会将文件复制到sudoers.d中,这样您就可以创建文件并无需第一次修改就可以对其进行处理(使用sudo visudo -f /etc/sudoers.d/myfile
必须成功,否则,如果您不对其进行修复,则会丢弃该内容)。
同样,从其他答案中对这些陈述要谨慎。
根据我的经验,此目录中文件的规则比/ etc / sudoers宽松。其中包括:
文件中的错误并没有导致sudo失败。但是,该文件被忽略。权限规则似乎不太严格。我允许适用的组读取文件。我不相信使用/ etc / sudo可以实现。
/etc/sudoers.d中的文件必须遵循与/ etc / sudoers相同的语法,因为如果有多个相同的条目,系统会简单地将所有文件与“ wining”中的最后一个文件连接在一起单数设置。
如果/etc/sudoers.d/中的文件的权限极其错误(可写世界),那么它们将被忽略,这可能是导致无效文件被忽略的原因,否则您可以sudo
通过使用无效的sudoers 来严重破坏命令。 d文件具有正确的权限。
您可以允许sudoers文件在世界范围内读取,如果不小心允许'other'写入权限,则需要以其他用户身份或从root终端运行sudo时,请运行此命令。如果文件由root:root以外的其他人拥有,这也会中断。
sudo chmod 644 /etc/sudoers.d/mysudoers
sudo chown root:root /etc/sudoers.d/mysudoers
我刚刚确认,如果我运行,chmod o+w /etc/sudoers.d/vagrant
我就不能再以无业游民的身份使用sudo,它提示我输入密码,然后失败。
当我sudo -l
以另一个有效的sudo用户身份运行以查看应用的命令权限时,我还收到有关文件权限的警告。这是我用来确认“无用”用户丢失sudo的同一命令,当我向o+w
具有该用户sudo权限的文件应用权限时,该用户丢失了sudo 。