관리자가 필요한 일부 사용자가 실행할 수 있도록 하는 스크립트가 있습니다. 물론 나는 그들에게 관리자 권한을 부여하고 싶지 않습니다. 이 스크립트를 안전한 방식으로 실행하려면 어떻게 해야 합니까?
업데이트: 이것은 Ubuntu 9.10 시스템입니다.
답변1
그냥 sudo를 사용하세요. /etc/sudoers
다음과 같이 sudo를 구성해야 합니다 .
fred ALL = (root) NOPASSWD: /path/to/command
fred를 사용자 이름으로 바꾸거나 그룹에 %group을 사용하십시오. NOPASSWD: 옵션을 제거하면 매번 비밀번호를 묻는 메시지가 표시됩니다.
스크립트의 setuid는 안전하지 않으며 Linux에서 작동하지 않습니다.
답변2
sudo와 SUID는 모두매우 불안하다. 스크립팅 언어에 따라 두 가지 중 하나에서 벗어나는 것이 가능하며 쉽습니다. SUID는 단연코 최악이며, 일부 스크립팅 언어는 이 작업이 완료되면 실행조차 되지 않습니다.
안전하게 수행하는 방법에 대한 블로그 게시물이 있습니다.Nagios 검사 플러그인을 루트로 실행그러나 여기에 완벽하게 적용 가능합니다. 스크립트 주위의 래퍼 역할만 하는 작은 C 프로그램(수년 동안 Linux 관리 세계에 떠돌고 있음)이 있습니다. 스크립트의 전체 경로를 포함하도록 C 프로그램 소스를 편집하고, 컴파일한 다음 해당 SUID를 설정합니다(또는 이에 대한 sudo 액세스 권한을 부여). 출처는 내 사이트에 있습니다:setuid-prog.c.
(루트가 아닌 사용자의 경우) 루트로 스크립트를 실행할 때 발생하는 고유한 문제는 많은 언어에서 다양한 기술(잘못된 입력 확인부터 오버플로까지)을 사용하여 실행 중인 스크립트를 중단하고 전체 루트 액세스 권한을 얻을 수 있다는 것입니다. . 많은 예전 유닉스 사용자들은 필요한 작업을 수행하기 위해 C 프로그램을 작성하는 것을 권장합니다. 하지만 다시 말하지만, 대부분은 SA였습니다.필요한C를 능숙하게 작성할 수 있습니다.
답변3
어떤 OS에서?
Linux/Unix에서는 sudo를 통해 실행하도록 허용할 수 있습니다. /etc/sudoers 파일을 수정하여 특정 ID(사용자)에게 지정된 명령에 대한 특정 권한을 부여할 수 있습니다.
또는 SUID 비트를 설정하고 권한 있는 사용자가 소유하도록 스크립트를 변경할 수 있습니다. 그러면 스크립트를 실행하는 사용자가 아닌 해당 사용자로 실행되도록 스크립트가 설정됩니다. 그러나 이는 이를 실행하는 모든 사용자에게 해당됩니다.
답변4
두 가지 방법이 있습니다:
가장 좋은 방법은 SUID 비트를 설정하는 것입니다: chown root yourscript; chmod a+s yourscript
.
또는 을 사용하여 지침을 sudo
실행 하고 따르면 수정할 수 있는 액세스 권한을 부여할 수 있습니다 . 그러나 이는 SUID 비트가 있는 를 visudo
실행하여 작동하므로 불필요합니다 .sudo