사용자가 선택적 명령을 실행하도록 제한 (Linux) 이 사용자는 sudo 사용자이고 bash를

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

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



답변

잘못된 길로 가고있을 수 있습니다. 사용자에게 ‘제한된’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과 동일하게 작동합니다.


답변

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:~$


답변