비밀번호를 묻지 않고 루트로 특정 프로그램을 어떻게 실행할 수 있나요?

비밀번호를 묻지 않고 루트로 특정 프로그램을 어떻게 실행할 수 있나요?

비밀번호 없이 sudo로 무언가를 실행해야 했기 때문에 visudo이것을 사용하고 sudoers파일에 다음을 추가했습니다.

MYUSERNAME ALL = NOPASSWD: /path/to/my/program

그런 다음 이것을 시도했습니다.

$ sudo /path/to/my/program
[sudo] password for MYUSERNAME: 

비밀번호를 묻는 이유는 무엇입니까? 비밀번호를 묻지 않고 루트가 아닌 사용자로서 루트로 명령을 실행/사용하려면 어떻게 해야 합니까?

답변1

sudo 에 일치하는 항목이 여러 개 있으면 /etc/sudoers마지막 항목이 사용됩니다. 따라서 비밀번호 프롬프트가 있는 명령을 실행할 수 있고 비밀번호 프롬프트 없이 특정 명령을 실행할 수 있으려면 끝에 예외가 필요합니다.

myusername ALL = (ALL) ALL
myusername ALL = (root) NOPASSWD: /path/to/my/program

을 사용하면 (root)프로그램을 루트로 실행할 수 있지만 다른 사용자로는 실행할 수 없습니다. (영향을 고려하지 않은 한 필요한 최소 권한보다 더 많은 권한을 부여하지 마십시오.)

Ubuntu를 실행하지 않거나 기본 sudo 구성을 변경한 독자는 참고하세요(Ubuntu의 sudo는 기본적으로 괜찮습니다).: 높은 권한으로 쉘 스크립트를 실행하는 것은 위험합니다. 깨끗한 환경에서 시작해야 합니다(쉘이 시작되면 너무 늦습니다(참조).쉘 스크립트에 setuid 설정 허용), 따라서 이를 처리하려면 sudo가 필요합니다. 이 옵션 Defaults env_reset/etc/sudoers컴파일 시간 기본값인지 확인하십시오 ( sudo sudo -V | grep env포함되어야 함 Reset the environment to a default set of variables).

답변2

다른 항목이 있습니다.sudoers파일은 일반적으로 에 있으며 /etc/sudoers사용자와도 일치합니다. 이 NOPASSWD규칙이 우선 적용되려면 이 규칙 뒤에 와야 합니다.

이 작업을 완료하면 일반적으로 암호를 묻지 않고 실행할 수 있는 를 sudo제외한 모든 명령에 대해 암호를 묻는 메시지가 표시됩니다 ./path/to/my/program

답변3

경고하다: 이 답변은 안전하지 않은 것으로 간주됩니다. 아래 댓글을 참조하세요

완벽한 솔루션:다음 단계는 원하는 결과를 얻는 데 도움이 됩니다.

  1. 새 스크립트 파일을 만듭니다( create_dir.sh원하는 스크립트 이름으로 바꾸세요).

    vim ~/create_dir.sh
    

    스크립트는 사용자의 홈 디렉터리에 생성됩니다.

  2. rootsudo루트 수준에서 폴더 생성과 같이 사용자만 실행할 수 있는 일부 명령을 추가합니다 .

    mkdir /abc
    

    노트:sudo이 명령에 추가하지 마십시오 . 저장하고 종료합니다( 사용 :wq!)

  3. 다음 명령을 사용하여 실행 권한을 할당합니다.

    sudo chmod u+x create_dir.sh
    
  4. 스크립트에 암호가 필요하지 않도록 변경하십시오.

    1. sudoers파일을 엽니다 :

      sudo visudo -f /etc/sudoers
      
    2. 끝에 다음 줄을 추가합니다.

      ahmad ALL=(root) NOPASSWD: /home/ahmad/create_dir.sh
      

      ahmad사용자 이름으로 바꾸십시오 . 또한 이것이 마지막 줄인지 확인하십시오. 저장 및 종료.

  5. 이제 명령을 실행할 때 sudo명령 앞에 다음을 추가하십시오.

    sudo ./create_dir.sh
    

    그러면 비밀번호를 묻지 않고 스크립트 파일 내에서 명령이 실행됩니다.

여기에 언급된 간단한 단계를 따르세요.http://step4wd.com/2013/09/14/run-root-commands-in-linux-ubuntu-without-password/

답변4

귀하의 구문이 잘못된 것 같습니다. 적어도 나는 나에게 맞는 다음을 사용합니다.

myusername ALL=(ALL) NOPASSWD: /path/to/executable

관련 정보