Mukeshで始まるsudoersファイル行の一部が編集されています。
## 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の権限
pwd
/home/mukesh/Desktop
ls -lrt connect.sh
-rwsr-xr-x. 1 root root 47 Apr 4 20:07 connect.sh
cat connect.sh
#!/bin/bash
Sudo pppoe-start
プロンプトなしでconnect.shをrootとして実行したいだけです
編集:
[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!
Sudo chmod o-xconnect.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!
EDIT2:
[mukesh@centos Desktop]$ sestatus
SELinux status: disabled
スクリプトに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
はパスワードを尋ねるべきではありません。