无法绕过密码,/etc/sudoers 不生效

无法绕过密码,/etc/sudoers 不生效

我需要能够以 sudo 身份运行两个 bash 脚本,而无需提供密码。

其中一个脚本在启动时运行,它会检查是否存在不活动状态,如果是,则使我的笔记本电脑的背光键变暗。

另一个脚本是我经常使用的,因此无需密码即可方便地运行它。

我用这个工具工作了一段时间,但在最近的一次更新中,我的 /etc/sudoers 文件被覆盖了。我保存了更改后的副本,但出于某种原因,我输入的行不再起作用,系统要求我提供密码。

我在 Ubuntu 16.04 上。这是我当前的 /etc/sudoers 文件:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# CUSTOM:       
ali ALL= NOPASSWD: /usr/local/bin/dim_keyboard.sh
ali ALL= NOPASSWD: /usr/local/bin/go

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

这些行:

ali ALL= NOPASSWD: /usr/local/bin/dim_keyboard.sh
ali ALL= NOPASSWD: /usr/local/bin/go

都是我放进去的。

通过查看类似的问题,我似乎使用了正确的语法,但由于某种原因,这些行仍然不起作用。

有任何想法吗?

答案1

为什么我们甚至需要使用sudo这个应用程序?

您可以使用以下程序shc将你的 shell 脚本“编译”成一个独立的可执行二进制文件,你可以直接将其添加到文件中sudoers。或者,你甚至可以设置setuid少量因此它实际上以 root 身份运行而不需要sudo

那么,让我们尝试一个例子:

shc -f myscript.sh -o myscript
sudo chown -R root:root myscript
sudo chmod a+x myscript
sudo chmod u+s myscript

这将获取一个 shell 脚本,并将其转换为具有 root 权限的 C 可执行文件setuid。无论何时调用此脚本(带或不带sudo),它都应始终以 root 用户身份(有效地)运行。

相关内容