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の権限
パスワード
/home/mukesh/Desktop
ls -lrt 接続.sh
-rwsr-xr-x. 1 root root 47 Apr 4 20:07 connect.sh
catconnect.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!
権限を削除するには、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
はパスワードを聞いてはいけません。