在 Cent OS 7 中编辑 sudoers 文件后出现密码提示?

在 Cent OS 7 中编辑 sudoers 文件后出现密码提示?

我的 sudoers 文件行以 mukesh 开头的部分已编辑:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
mukesh  ALL=(ALL)       SOFTWARE,DRIVERS
mukesh  ALL=(root)      NOPASSWD: /home/mukesh/Desktop/connect.sh

connect.sh的权限

密码

/home/mukesh/Desktop

ls -lrt connect.sh

-rwsr-xr-x. 1 root root 47 Apr  4 20:07 connect.sh

猫连接.sh

#!/bin/bash
sudo pppoe-start

我只想在没有任何提示的情况下以 root 身份运行 connect.sh

编辑 :

[mukesh@centos Desktop]$ ./connect.sh
pppoe-start: You must be root to run this script
[mukesh@centos Desktop]$ sudo ./connect.sh
[sudo] password for mukesh: 
[mukesh@centos Desktop]$ su -
Password: 
Last login: Mon Apr  4 10:27:09 IST 2016 on pts/0
[root@centos ~]# pwd
/root
[root@centos ~]# cd /home/mukesh
[root@centos mukesh]# cd Desktop
[root@centos Desktop]# ./connect.sh
. Connected!
[root@centos Desktop]# 



[mukesh@centos Desktop]$ cat connect.sh
#!/bin/bash
pppoe-start
[mukesh@centos Desktop]$ sudo /home/mukesh/Desktop/connect.sh
[sudo] password for mukesh: 
. Connected!

这是我的完整 sudoers 文件

尝试使用 sudo chmod ox connect.sh 删除权限

-rwxr-xr--.  1 root    root          97 Apr  5 09:30 connect.sh
[mukesh@centos Desktop]$ 
[mukesh@centos Desktop]$ sudo /home/mukesh/Desktop/connect.sh
[sudo] password for mukesh: 
. Connected!

编辑2:

[mukesh@centos Desktop]$ sestatus
SELinux status:                 disabled

答案1

您已经NOPASSWD为脚本设置了/home/mukesh/Desktop/connect.sh,其中没有任何需要sudo密码的内容。

您需要使用以下命令运行脚本sudo

sudo /home/mukesh/Desktop/connect.sh

然后sudo从脚本中删除:

#!/bin/bash
pppoe-start

如果它只是一个命令,那么您只需添加该命令即可sudoers(不需要单独的脚本):

mukesh  ALL=(root)      NOPASSWD: /path/to/pppoe-start

另请注意,在脚本(解释的可执行文件)上设置 SETUID 位将不起作用。


您还有另一个问题,即您为其他人设置了可执行位,即任何用户都可以执行该文件,因此您会被要求输入sudo密码,因为一般权限前面将有特殊权限,例如sudo.

所以你可以删除其他人的执行权限:

sudo chmod o-x /home/mukesh/Desktop/connect.sh

现在sudo不应该询问密码。

相关内容