web-dev-qa-db-ja.com

rootユーザーとしてではなく、Sudoを使用せずにroot権限でコマンドを実行する

Root以外のユーザーからのroot権限を必要とし、なし前にSudoを使用するコマンド(iftopなど)を実行するにはどうすればよいですか?

または、rootになることなくユーザーにroot権限を与えるにはどうすればよいですか?

理想的には、次の方法でiftopコマンドを実行したいと思います。

[user@pc]$ iftop

そしてnot like:

[user@pc]$ Sudo iftop

[root@pc]$ iftop
1
Adam

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権限を与えるにはどうすればよいですか?

できません。

2

これは、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.outjohnとして実行されます。

0
Ned64