사용자가 선택적 명령 만 실행하도록 제한하려면 어떻게해야합니까? tomc 그룹에 사용자 tomc가 있습니다. 이 사용자는 sudo 사용자이고 bash를 제한해야합니다. /etc/sudoers
파일 에서 다음 코드를 시도했지만 사용자가 다음과 같은 다른 명령을 실행할 수 있으므로 작동하지 않습니다 mkdir
.rm
%tomc ALL=/bin/bash,/usr/bin/vim /*
사용자가 선택적 명령 만 실행하도록 제한하려면 어떻게해야합니까? 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과 동일하게 작동합니다.
vim
임의의 쉘 명령을 실행할 수 있습니다. 그리고 두 번째 줄은 아마도 허용 할 것입니다less /var/log/myapp/../../../etc/shadow
! 내 실험에 따르면 sudo를 안전하게 사용하는 것은 어렵다 ! 그러나을 피하고대신*
사용할수 있다면 괜찮을 것입니다. sudoedit
vim
*
것만으로는 충분하지 않습니다! 사용자 less
로 들어가면을 root
입력하십시오 !tail /var/log/secure
. 기분이 어때? NOEXEC
태그를 연구하십시오 . 그러나 @joeytwiddle의 메시지를 기억하십시오. sudo 안전은 실제로 어렵습니다.
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:~$
sudo bash
것은 대부분 루트 암호를 갖는 것과 같습니다.sudo bash
쉘 에서 관리자 명령을 실행하거나 소프트웨어를 설치 또는 삭제하거나 사용자 및 디렉토리를 삭제할 수 있습니다.