루트 권한이 필요한 명령 목록을 실행할 수 있는 Linux 사용자("bob"이라고 함)가 필요합니다. 따라서 에 표시된 대로 루트 /sbin/firstcommand
및 /sbin/secondcommand
(악명 높은 bob-daemon의 일부) 로 실행하도록 요청하게 됩니다 sudo firstcommand
. 비밀번호가 필요하지 않습니다.
/etc/sudoers
지금까지 내가 한 일은 다음과 같습니다.
Cmnd_Alias BOBCOMMANDS = /sbin/firstcommand, /sbin/secondcommand
bob ALL=(root) NOPASSWD:BOBCOMMANDS
결과적으로 bob$ sudo firstcommand
루트 로 성공적으로 실행되지만 비밀번호가 제공되더라도 bob$ sudo secondcommand
실행에 실패합니다. 이는 나에게 완벽하다고 느낍니다.bob$ sudo mount ... ...
bob
이제 앞서 언급한 bob-daemon1을 사용자 로 실행하기를 원합니다 . 실제로 는 이 명령이 실행될 때 root
마다 실행되기를 원합니다.BOBCOMMANDS
bob$ firstcommand
bob$ sudo firstcommand
별칭이 이 문제를 해결할 것 같습니다. bob$ alias firstcommand="sudo firstcommand"; alias secondcommand="sudo secondcommand"
실제로는 작동하지만 Bob에게 홈 디렉토리가 없으면 별칭을 유지할 수 없습니다.
마지막으로 언급하고 싶은 점은 bob을 생성하고 sudoers
.
해결책이 있나요?
1 내가 단순화한 것
답변1
사용자가 루트 권한으로 명령을 실행해야 한다고 말씀 하셨나요 /sbin/firstcommand
?/sbin/secondcommand
이러한 명령이 실제로 에 있는 경우 /sbin
일반 사용자에게는 해당 디렉토리가 기본적으로 포함되지 않습니다. PATH
이를 활용하면 매우 간단한 두 개의 스크립트를 생성할 수 /usr/local/bin/firstcommand
있으며 /usr/local/bin/secondcommand
그 내용은 기본적 으로 각각 sudo /sbin/firstcommand
및 입니다 sudo /sbin/secondcommand
.
사용자의 셸은 일반적 으로 /usr/local/bin
표준 및 셸 /usr/bin
보다 먼저 나타나 므로 /bin
시스템 관리자는 필요한 경우 표준 시스템 명령을 로컬 버전으로 재정의할 수 있습니다. 마찬가지로, 사용자가 를 실행하면 자신의 프로그램에서 처음으로 찾을 수 있는 버전이 무엇 firstcommand
이든 실행하게 됩니다 firstcommand
... PATH
이는 선택한 스크립트일 수 있으며 /sbin/firstcommand
접두사 sudo
및/또는 일부 인수가 추가된 실제 버전을 실행할 수 있습니다. 필요한.
sudo
실제 프로그램 파일과 기타 시스템 파일은 액세스하는 데 필요한 구성을 제외하고는 전혀 수정할 필요가 없습니다.
답변2
이것이 데몬 프로세스인 경우 표준 관행은 init 스크립트 파일에 다음과 같은 내용을 넣는 것입니다.
USER=bob
...
su -c '/command/to/start/actual/daemon' "$USER"
실행해야 하는 스크립트 파일에서 해당 명령어 앞에만 bob
넣어주시면 됩니다 .sudo
또한 꼭 읽어보세요.이것비대화형 Bash 쉘(예: 스크립트 또는 데몬에 의해 시작된 쉘)에서 별칭 확장 활성화와 관련됩니다.