sudoers 파일에 아래 권한을 부여했습니다.
Cmnd_Alias SUROOT=/bin/su "",\
/bin/su -,\
/bin/su - root,\
/bin/su root,\
/usr/bin/su "",\
/usr/bin/su -,\
/usr/bin/su - root,\
/usr/bin/su root
kj ALL = (ALL) ALL, !SUROOT
액세스하려고 하면 sudo su -
차단되었습니다.
kj@u1804-1:~$ sudo su -
[sudo] password for kj:
Sorry, user kj is not allowed to execute '/bin/su -' as root on u1804-1.
하지만 액세스하려고 하면 sudo sudo su -
허용됩니다.
kj@u1804-1:~$ sudo sudo su -
[sudo] password for kj:
root@u1804-1:~#
루트 사용자에 대한 액세스를 차단해야 합니다. sudo sudo
명령을 차단하려면 어떻게 해야 하나요?
답변1
개별 명령을 차단하면 이를 달성할 수 없습니다. 수십개는 있어도 안되면수백, 사람들이 루트가 되기 위해 사용할 수 있는 명령 중 다음을 통해 sudo
:
sudo -s
sudo -i
sudo bash
sudo env su
sudo /bin/sh
sudo env sudo
sudo busybox sh
sudo unshare
sudo chroot /
sudo systemd-run --shell
sudo nvim -c ":terminal"
sudo perl -e 'exec("bash")'
sudo git -c protocol.ext.allow=always ls-remote ext::"bash -c sh<&2>&2"
차단된 명령의 이름을 바꿀 수 있습니다.
sudo cp -a /sbin/su /sbin/really-not-su && sudo really-not-su
그들은 당신이 설정한 규칙을 간단히 변경할 수 있습니다.
sudo nano /etc/sudoers
요점이 밝혀졌기를 바랍니다. 사람들에게 루트 액세스 권한을 부여하는 경우당신은 그들에게 루트 액세스 권한을 부여하고 있습니다.유일한 옵션은 다음 목록을 갖는 것입니다.허용된명령을 실행하고 다른 모든 것을 차단합니다. 그래도 해당 명령 중 절반은 전체 루트 액세스 권한을 얻을 수 있습니다.
(여기서 AppArmor 또는 SELinux가 도움이 될 수 있습니다.)
답변2
나는 아마도 반대 접근 방식을 제안합니다. 일부 사람에게 무제한 루트 권한을 부여하는 대신 sudo
암호를 지정하지 않고도 일부 명령을 실행할 수 있도록 허용하는 것입니다. 이를 통해 수행해야 하는 작업을 실행할 수 있지만 그 이상은 아닙니다.
파일 sudoers
은 명령에 문자열을 포함할 수 있는 와일드카드를 사용하여 명령에 허용되는 매개변수를 정의할 수도 있습니다.
이 접근 방식은 Unix Stackexchange 게시물의 답변에 가장 잘 설명되어 있습니다.
비밀번호 없이 ssh 명령과 sudo 명령을 원격으로 실행하는 방법.
일부 명령에 대해 비밀번호를 건너뛰도록 sudo에 지시할 수 있습니다.
예를 들어
/etc/sudoers
archemar ALL = (www-data) NOPASSWD: /bin/rm -rf /var/www/log/upload.*
이걸로 내가 사용할 수 있게 해줄게
sudo -u www-data /bin/rm -rf /var/www/log/upload.*
비밀번호 없이 Archemar로.
참고하세요
sudo -u www-data rm -rf /var/www/log/upload.*
rm
와 다르기 때문에 작동하지 않습니다(비밀번호를 묻습니다)/bin/rm
.
/etc/sudoers
반드시 명령을 사용하여 편집하세요visudo
.
sudo
고급 수준 에 도달하면/etc/sudoers.d
.