web-dev-qa-db-ja.com

Cent OS 7でsudoersファイルを編集した後にパスワードプロンプトを取得しますか?

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!

これが私の完全なsudoersファイルです

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
1
munish

スクリプトにNOPASSWDを設定しました/home/mukesh/Desktop/connect.shSudoパスワードを必要とするものは含まれていません。

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はパスワードを尋ねるべきではありません。

2
heemayl