사용자는 "sudo sudo su -"를 사용하여 루트가 될 수 있습니다.

사용자는 "sudo sudo su -"를 사용하여 루트가 될 수 있습니다.

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.

관련 정보