Root以外のユーザーからのroot権限を必要とし、なし前にSudoを使用するコマンド(iftopなど)を実行するにはどうすればよいですか?
または、rootになることなくユーザーにroot権限を与えるにはどうすればよいですか?
理想的には、次の方法でiftopコマンドを実行したいと思います。
[user@pc]$ iftop
そしてnot like:
[user@pc]$ Sudo iftop
[root@pc]$ iftop
Root以外のユーザーからのroot権限を必要とし、前にSudoを使用せずに、コマンド(iftopなど)を実行するにはどうすればよいですか?
Root以外のユーザーがiftopを使用できるようにするために使用できる方法は少なくとも2つありますが、どちらもrootアクセスが必要です。
より安全な方法は、cap_net_raw
機能をiftopバイナリに割り当てることです。
Sudo setcap cap_net_raw+ep "$(command -v iftop)"
安全性の低い方法は、setuidrootを割り当てることです。
Sudo chmod +s "$(command -v iftop)"
または、rootになることなくユーザーにroot権限を与えるにはどうすればよいですか?
できません。
これは、set user idfile属性を使用して実行できます。
# 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
これIS大きなセキュリティリスク!
他の誰かとして何かを実行したい場合(ここのように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
Rootでない場合は、他の誰かに次のようにコマンドを実行させることができます。
# 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
(「x」が「rwx ...」にあった「s」に注意してください。これは、ユーザーIDの設定フラグが設定されていることを意味します)
次に、jane
として:
# id -nu
jane
# ~john/a.out
そのコマンドa.out
はjohn
として実行されます。