
예를 들어 에 추가한 줄의 경우 /etc/sudoers
:
t ALL=(ALL) NOPASSWD: /path/to/myscript
/path/to
PATH
현재 사용자의 에는 있지만 에는 t
없습니다 .PATH
root
$ sudo /path/to/myscript
비밀번호 없이 작동하지만 run script를 사용할 때마다 스크립트의 경로 이름을 지정해야 합니까 sudo
?
$ sudo myscript
[sudo] password for t:
sudo: changeCpuFreq.sh: command not found
의 myscript
경로가 의 경로가 아니기 때문에 비밀번호를 사용해도 작동하지 않습니다 .PATH
root
$ sudo -E env "PATH=$PATH" myscript
[sudo] password for t:
PATH
가 t
에 복사되었기 때문에 비밀번호를 사용할 수 있지만 root
문제는 여전히 비밀번호가 필요하다는 것입니다.
감사해요.
답변1
그러나 sudoers 자체에서는 전체 경로 이름을 정의할 필요가 없습니다.~해야 한다보안상의 이유로 이렇게 하십시오.
그렇지 않으면 루트 권한을 얻는 것이 상당히 쉽습니다.다른동일한 이름을 가진 바이너리 파일프레스토 악장, 즉각적인 루트 권한.
답변2
당신은 사용자 정의할 수 있습니다스도편집자 /etc/sudoers
./etc/sudoers.d/*
경고하다! ! !만약 당신의뿌리계정이 비활성화되었습니다.비쥬도예강하게편집에 대한 제안스도구성.
sudoer에 대한 다양한 검색 경로는 아래에 정의되어 있습니다.내 사용자:
Defaults:myuser secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"
다음은 sudo를 수행할 때 다양한 검색 경로를 정의합니다.뿌리
Defaults>root secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"
/path/to/myscript
다음은 호출할 때 다른 검색 경로만 정의합니다.스도:
Defaults!/path/to/myscript secure_path="/path/to:/usr/sbin:/usr/bin:/sbin:/bin"
위의 모든 항목은 "NOPASSWD" 규칙과 잘 통합되며 호출 시 경로 접두어가 필요하지 않습니다 sudo myscript
.