사용자가 선택적 명령을 실행하도록 제한 (Linux)


14

사용자가 선택적 명령 만 실행하도록 제한하려면 어떻게해야합니까? tomc 그룹에 사용자 tomc가 있습니다. 이 사용자는 sudo 사용자이고 bash를 제한해야합니다. /etc/sudoers파일 에서 다음 코드를 시도했지만 사용자가 다음과 같은 다른 명령을 실행할 수 있으므로 작동하지 않습니다 mkdir.rm

%tomc ALL=/bin/bash,/usr/bin/vim /*

3
sudo 사용은 특정 명령으로 제한 될 수 있지만 까다로울 수 있으며 약간의 신뢰가 필요합니다. 사용자를 신뢰하지 않는다면 sudo 액세스 권한을 부여하는 것은 나쁜 생각입니다. 루트 권한을 부여하거나 루트 권한을 얻기 위해 공격 할 수있는 집중된 앱을 제공합니다. 누군가를 실행시키는 sudo bash것은 대부분 루트 암호를 갖는 것과 같습니다. sudo bash쉘 에서 관리자 명령을 실행하거나 소프트웨어를 설치 또는 삭제하거나 사용자 및 디렉토리를 삭제할 수 있습니다.
Paul

@Paul u 나에게 더 좋고 실용적인 옵션을 제안 할 수 있습니까?

첫째, 이것은 스택 오버플로에 관한 주제가 아닙니다. 더 좋은 곳은 수퍼 유저, askubuntu 또는 linux & unix입니다. 먼저 tomc가 원하는 것을 정확히 파악하십시오. tomc는 _____는 할 수 있지만 ________해서는 안됩니다. 그런 다음 물어보십시오. Sudo는 루트 (관리자) 권한이 필요한 명령을위한 것입니다. 루트로 실행하지 않고 bash를 이미 실행할 수 있습니다.
Paul

답변:


18

잘못된 길로 가고있을 수 있습니다. 사용자에게 '제한된'bash 쉘을 제공하는 대신 루트로 실행하는 데 필요한 명령에만 액세스 권한을 부여해야합니다. 예를 들어, sudoers 파일에서 :

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

사용자가 vim을 루트로 실행할 수 있도록주의하십시오. Vim에는 쉘로의 이스케이프 및 vim 내에서 명령을 실행하는 기능과 같은 많은 기능이 내장되어 있습니다. 배포판에 따라 sudoedit사용 가능할 수도 있습니다. 이것은 쉘 이스케이프 등을 처리하도록 설계된 것을 제외하고는 일반 Vim과 동일하게 작동합니다.


7
이 라인들 중 어느 것도 안전하지 않습니다. 언급했듯이vim임의의 쉘 명령을 실행할 수 있습니다. 그리고 두 번째 줄은 아마도 허용 할 것입니다less /var/log/myapp/../../../etc/shadow! 내 실험에 따르면 sudo를 안전하게 사용하는 것은 어렵다 ! 그러나을 피하고대신*사용할수 있다면 괜찮을 것입니다. sudoeditvim
joeytwiddle

피하는 *것만으로는 충분하지 않습니다! 사용자 less로 들어가면을 root입력하십시오 !tail /var/log/secure. 기분이 어때? NOEXEC태그를 연구하십시오 . 그러나 @joeytwiddle의 메시지를 기억하십시오. sudo 안전은 실제로 어렵습니다.
Bruno Bronosky

3

DSM 6을 실행하는 내 Synology Diskstation에서 관리자 만 일관되게 ssh를 수행 할 수 있습니다 (관리자가 아닌 사용자는 / etc / passwd에 셸을 / sbin / nologin으로 설정 함). / etc / passwd 파일이 재설정됩니다). 이러한 이유로 / sbin / poweroff와 같이 실행하기 위해서만 존재하는 계정에는 일종의 sudo 제한이 필요합니다. / etc / sudoers의 다음 줄이 나를 위해 일했습니다.

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

번역 : 모든 명령을 허용하지 않고 원하는 명령 만 허용하십시오 (이 경우 암호를 요구하지 않음).

이 구성을 사용하면 sudo가 비밀번호를 요청한 후 화이트리스트에없는 것 이외의 명령에 실패합니다.

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.