
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
프롬프트 없이 루트로 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
은 비밀번호를 물어보면 안 됩니다 .