root以外のユーザーに対してroot権限を必要とするコマンド(iftopなどのコマンド)を実行する方法といいえ以前はSUDOを試してみましたか?
または、rootにならずにユーザーにroot権限を付与する方法は?
理想的には、次のようにiftopコマンドを実行したいと思います。
[user@pc]$ iftop
そしていいえ良い:
[user@pc]$ sudo iftop
[root@pc]$ iftop
答え1
SUDOを使用せずにroot以外のユーザーに対してroot権限を必要とするコマンド(iftopなどのコマンド)をどのように実行しますか?
root以外のユーザーがiftopを使用できるようにする方法は少なくとも2つあります。どちらもrootアクセスが必要です。
より安全なアプローチは、cap_net_raw
iftopバイナリに機能を割り当てることです。
sudo setcap cap_net_raw+ep "$(command -v iftop)"
安全性の低いアプローチは、setuid ルートを割り当てることです。
sudo chmod +s "$(command -v iftop)"
または、rootにならずにユーザーにroot権限を付与する方法は?
あなたはできません。
答え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
。