基本上,我有一个预设的Debian安装,它在第一次登录时以root用户的身份运行一个postinstall bash脚本。当sudo组中的任何用户使用sudo时,此脚本应该编辑sudoers以使密码成为可选的:
sed -i.bak 's/%sudo ALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD:ALL/' /etc/sudoers然而,有些地方似乎出了问题,用户仍然需要一个密码才能使用sudo长话短说--这实际上意味着没有人拥有sudo,因为所有用户都是使用禁用的密码创建的。是的,我意识到这可能不是理想的/正确的/聪明的/安全的方式,但这就是它的本质。
我需要弄清楚的是,出了什么问题?为什么?该脚本每隔一次使用它一次,它显然会运行其他命令,比如更新某些包,那么为什么它没有正确地编辑/etc/sudoers呢?我如何在没有根的情况下检查sudoers,或者找出它为什么无法编辑?
发布于 2017-01-24 16:21:15
嗯,我们真的猜不出来,因为这取决于你的环境。我的钱就在你想要取代的那条线上,而不是存在于/etc/sudoers中。(至少,不是看上去的那样)。这意味着它永远不会被替换,所以它也没有被设定为“NOPASSWD”。
我的意思是,你依赖的是特定数量的空间和特定的行格式,如果它与你的正则表达式不匹配.它永远不会被修改。
我建议答案是用您想要的值向/etc/sudoers.d/添加一个文件,然后(可能吗?)作为能够“sudo”的用户,请使用sed删除目标行。(如果它们不能,则会失败--您可以测试返回代码)。
https://unix.stackexchange.com/questions/339803
复制相似问题