UNIX 사용자가 특정 스크립트만 사용하도록 제한하는 방법은 무엇입니까?

UNIX 사용자가 특정 스크립트만 사용하도록 제한하는 방법은 무엇입니까?

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}이(가) 루트로 실행될 수 있어야 합니다.

관련 정보