UNIX 사용자(sudo! 제외)가 스크립트를 루트로 실행하도록 제한하려면 어떻게 해야 합니까?
답변1
sudo
내가 아는 유일한 다른 방법은 setuid를 사용하는 것입니다 . 이것은 디스크의 프로그램에 일부 비트를 설정할 수 있는 Unix에 내장된 메커니즘으로, 누군가가 프로그램을 실행할 때마다 실행 파일이 사용자가 파일을 실행하는 대신 파일의 소유자로 실행되도록 합니다.
#!/bin/...
그러나 이 기능은 일반적으로 맨 위에 shebang()이 필요한 스크립트나 프로그램 에서는 작동하지 않습니다 . 파일에 이 비트가 활성화되어 있으면 파일 시스템에 다음과 같이 나타납니다.
-rws------ 1 saml saml 3354099 Oct 28 16:07 someapp
다음과 같이 이 비트를 활성화하는 프로그램을 설정할 수 있습니다.
$ chmod u+s someapp
그러나 비트가 활성화된 경우에도 종종 무시되고 이것이 의도된 것임을 이해하지 못하는 사용자를 미치게 만듭니다. 일반적으로 보안상의 이유로 shebang을 사용하는 쉘 스크립트나 프로그램은 이런 방식으로 실행될 수 없습니다.
매뉴얼 페이지( credentials
& capabilities
)에서 이에 대한 일부 내용을 다루고 있습니다.
따라서 일반적으로 이 말을 듣고 싶지 않더라도 가장 좋은 방법은 를 사용하는 것입니다 sudo
.
관련 Unix 및 Linux Q&A
답변2
비밀번호 파일에 해당 사용자에 대한 사용자 ID 0을 지정하고 스크립트를 로그인 쉘로 설정할 수 있습니다. 사용자가 자신의 이름과 비밀번호를 사용하여 로그인하면 스크립트가 루트로 실행되고 종료된 다음 사용자가 로그아웃됩니다. 따라서 사용자는 이 루트 스크립트로 제한됩니다.
답변3
귀하의 질문을 이해하지 못할 수도 있지만 그룹을 사용하여 사용자가 수행할 수 있는 작업을 제어할 수 있습니다.
한 가지 가능성은 사용자를 기존 그룹에 할당하는 것입니다.바퀴. 물론 이것은 다시 다음에 달려 있습니다.Sudoers파일에는 다음과 같은 기본 항목이 있어야 합니다.
%wheel ALL=(ALL) ALL # password required.
또는
%wheel ALL=(ALL) NOPASSWD: ALL # no password required.
다음과 같은 방법으로 이 작업을 수행할 수 있습니다.
usermod -a -G wheel {username}
그러면 {username}이(가) 루트로 실행될 수 있어야 합니다.