루트가 아닌 사용자에 대해 루트 권한이 필요한 명령(예: iftop 또는 유사한 명령)을 실행하는 방법 및아니요이전에 SUDO를 사용해 보셨나요?
아니면 루트가 되지 않고 사용자에게 루트 권한을 부여하는 방법은 무엇입니까?
이상적으로는 다음과 같이 iftop 명령을 실행하고 싶습니다.
[user@pc]$ iftop
그리고아니요좋다:
[user@pc]$ sudo iftop
[root@pc]$ iftop
답변1
SUDO를 사용하지 않고 루트가 아닌 사용자에 대해 루트 권한이 필요한 명령(예: iftop 또는 유사한 명령)을 어떻게 실행합니까?
루트가 아닌 사용자가 iftop을 사용하도록 허용하는 방법에는 최소한 두 가지가 있으며, 둘 다 루트 액세스가 필요합니다.
더 안전한 접근 방식은 cap_net_raw
iftop 바이너리에 기능을 할당하는 것입니다.
sudo setcap cap_net_raw+ep "$(command -v iftop)"
덜 안전한 접근 방식은 setuid 루트를 할당하는 것입니다.
sudo chmod +s "$(command -v iftop)"
아니면 루트가 되지 않고 사용자에게 루트 권한을 부여하는 방법은 무엇입니까?
당신은 할 수 없습니다.
답변2
이는 사용자 ID 파일 속성 설정을 사용하여 수행할 수 있습니다.
# chmod u+s /usr/bin/sleep
# sleep 1000&
# ps aux | grep -w sleep | grep -v grep
root 1234 0.0 0.0 ... 0:00 sleep 1000
이것은 큰 보안 위험입니다!
(여기 대신) 다른 사람으로 무언가를 실행하려면 root
다음이 가능합니다.
# chown pulse /usr/bin/sleep
# chmod u+s /usr/bin/sleep
# sleep 1000&
# ps aux | grep -w sleep | grep -v grep
pulse 1234 0.0 0.0 ... 0:00 sleep 1000
루트가 아닌 경우 다른 사람이 다음과 같은 명령을 실행하도록 허용할 수 있습니다.
# id -nu
john
# ls -l a.out
-rwxr-x--- 1 john users 50923 Mar 25 10:17 a.out
# chmod go+rx,u+s a.out
# ls -l a.out
-rwsr-xr-x 1 john users 50923 Mar 25 10:17 a.out
("rwx..."에 "x"가 있는 "s"에 유의하십시오. 이는 사용자 ID 설정 플래그가 설정되었음을 의미합니다.)
그런 다음 다음과 같이하십시오 jane
.
# id -nu
jane
# ~john/a.out
이 명령은 a.out
으로 실행됩니다 john
.