테스트 머신 중 하나에 액세스 할 수 sudo
있으며 나를 제한하는 명령은 다음과 같습니다.
user_sree@sel8585:~> sudo -l
user_sree's password:
User user_sree may run the following commands on this host:
(ALL) ALL, (ALL) !/bin/sh, !/bin/bash, !/bin/ksh, (ALL) !/bin/su, (ALL) !/usr/bin/passwd, !/usr/sbin/useradd, !/usr/sbin/userdel, !/usr/sbin/usermod,
!/usr/sbin/visudo
이것은 내가 달릴 수 없다는 visudo
것을 의미합니다 /usr/sbin/visudo
. 나는 이것을 확인했습니다 :
user_sree@sel8585:~> sudo /usr/sbin/visudo
Sorry, user user_sree is not allowed to execute '/usr/sbin/visudo' as root on sel8585.
이제 호기심에 심볼릭 링크를 만들었습니다 /usr/sbin/visudo
.
ln -s /usr/sbin/visudo myvi`
이 소프트 링크를 호출하여 sudoers 파일에 액세스하려고 시도했는데 제대로 작동했습니다.
user_sree@sel8585:~> sudo /home/user_sree/myvi
myvi: /etc/sudoers.tmp unchanged
마찬가지로, 소프트 링크를 생성하여 다른 제한된 명령을 실행할 수 있습니다.
다른 사람을 위해 구성하고 싶은 경우 sudo
다른 사람이 구성하지 못하게 하려면 어떻게 해야 합니까? 나는 그들이 소프트 링크를 생성하는 것을 제한하고 싶지 않습니다.
user_sree@sel8585:~> sudo -l | grep bash
(ALL) ALL, (ALL) !/bin/sh, !/bin/bash, !/bin/ksh, (ALL) !/bin/su, (ALL) !/usr/bin/passwd, !/usr/sbin/useradd, !/usr/sbin/userdel, !/usr/sbin/usermod,
비슷하게:
user_sree@sel8585:~> sudo sh -c 'ls'
Sorry, user user_sree is not allowed to execute '/usr/bin/sh -c ls' as root on sel8585.
이제 심볼릭 링크는 mybash
다음으로 연결됩니다 /bin/bash
. (내 시스템에서는 /usr/bin/sh
다음으로 연결됩니다 /bin/bash
.)
user_sree@sel8585:~> sudo /home/user_sree/mybash -c 'ls'
빈 mybash myvi sudoers.back test.pp
user_sree@sel8585:~> ll my*
lrwxrwxrwx 1 user_sree users 9 Jul 16 14:10 mybash -> /bin/bash
lrwxrwxrwx 1 user_sree users 16 Jul 16 14:13 myvi -> /usr/sbin/visudo
첨부된:
Cmnd_Alias NSHELLS = /bin/sh,/bin/bash,/bin/ksh
Cmnd_Alias NSU = /bin/su
Cmnd_Alias NCMDS = /usr/bin/passwd,/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod,/usr/sbin/visudo
user_sree ALL=(ALL) ALL, !NSHELLS, !NSU, !NCMDS
/etc/sudoers
위는 파일의 항목 입니다 .
답변1
솔직히 말해서, 사용자가 몇 가지 명령만 빼고 모든 것을 실행하도록 허용한다면 문제가 생길 것입니다.
user*
예를 들어 명령 에 대한 액세스를 비활성화 하더라도 사용자는 vipw
텍스트 편집기를 사용하여 계속해서 암호 및 섀도우 파일을 실행하거나 편집할 수 있습니다. 예를 들어, 액세스를 잠그면 vi
다른 텍스트 편집기를 설치하고 사용하는 것을 막는 이유는 무엇입니까? 아니면 cat
내장된 셸을 사용하여 echo
새 사용자를 추가할 수도 있나요?
sudo
"이 몇 가지 명령을 제외한 모든 것" 에 액세스할 수 없습니다 . 대신 ALL
항목을 제거하고 허용되는 항목을 정의한 다음 허용된 명령에만 액세스 권한을 부여하세요.