Xubuntu visudo sudoers 编辑不起作用

Xubuntu visudo sudoers 编辑不起作用

我一直在尝试指定一个脚本,我希望在运行时不提示输入密码。经过多次谷歌和堆栈搜索以及多次不同的语法更改后,我仍然无法让它工作。一个奇怪的事情是,当输入sudo visudonano 时会打开文件进行编辑。我从未指定 nano 作为编辑器,但我可能首先使用 nano 编辑了文件。这会使 nano 成为默认编辑器吗?如果是这样,这会导致问题。感谢您的帮助。

这是我的 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:$

# Host alias specification

# User alias specification

# Cmnd alias specification

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

# 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
pat     ALL=NOPASSWD: /home/pat/test.sh

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

#includedir /etc/sudoers.d

答案1

根据您的评论:

请注意,除非以 root 身份运行,否则 su 要求您提供要使用 su 的用户的密码。 sudo ./test.sh 之所以有效,是因为您正在以 root 身份运行 test.sh!(如果您不提供 -u 开关,sudo 默认为 root。

因此如果您希望脚本能够以 su 方式切换到另一个用户,则必须以 root 身份运行(不要这样做)。

为什么不在脚本中使用“sudo -u pat”,而不是“su pat -c”?

答案2

visudo 默认编辑器是 nano,没问题。

1)你需要对生产线进行一些改变

pat     ALL=NOPASSWD: /home/pat/test.sh

它应该包含计算机的名称以及“=”前后的空格:

username computername = NOPASSWD: /path/to/script

像这样:

pat patcomputer = NOPASSWD: /home/pat/test.sh

2) 该脚本应由 root 拥有。在终端运行此脚本:

sudo chown root:root /home/pat/test.sh  

3)设置正确的权限:

sudo chmod 705 /home/pat/test.sh  

4)享受!

相关内容