これはLinuxの権限についてもっと学びたいという好奇心に近いです。したがって、パスワードを入力しなくてもいくつかのコマンドを実行できますが、他のコマンドは実行できない理由を理解できません。私は/usr/bin/sudoにSUIDビットがあることを知っています。これは明らかに意味があります。権限をrootに昇格しようとしていますが、/usr/bin/sudoをどのように使用できるかを知りたいです。 (これは承認されたコンピュータにあるので心配しないでください。)
ここで私は実際にDavidだと言います。
david@traverxec:~/bin$ id
uid=1000(david) gid=1000(david) groups=1000(david),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)
/usr/bin/sudoのSUIDビット設定と2つの関連バイナリの権限を表示します。
david@traverxec:~/bin$ ls -la /usr/bin/sudo
-rwsr-xr-x 1 root root 157192 Oct 12 09:49 /usr/bin/sudo
david@traverxec:~/bin$ ls -la /usr/bin/ls
-rwxr-xr-x 1 root root 138856 Feb 28 2019 /usr/bin/ls
david@traverxec:~/bin$ ls -la /usr/bin/journalctl
-rwxr-xr-x 1 root root 67672 Aug 20 2019 /usr/bin/journalctl
sudoを使用してWebサーバーのログを確認する以下の特定のコマンドは完全に機能します。そして、パスワードを求めるメッセージも表示されません!
david@traverxec:~/bin$ /usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service | /usr/bin/cat
-- Logs begin at Mon 2020-03-02 12:00:21 EST, end at Mon 2020-03-02 12:11:05 EST. --
Mar 02 12:00:44 traverxec su[22169]: pam_unix(su:auth): authentication failure; logname= uid=33 euid=0 tty=pts/0 ruser=www-data rhost= user=david
Mar 02 12:00:46 traverxec su[22169]: FAILED SU (to david) www-data on pts/0
Mar 02 12:07:26 traverxec nhttpd[23957]: /../../../../bin/sh sent a bad cgi header
Mar 02 12:07:38 traverxec nhttpd[24009]: /../../../../bin/sh sent a bad cgi header
sudoを使用して他のコマンドを実行しようとしたときシステムがパスワードを入力するように求められます。
david@traverxec:~/bin$ /usr/bin/sudo /usr/bin/ls /etc/shadow
[sudo] password for david:
なぜこれですか?
答え1
Kusalanandaがすでに述べたように、説明した動作を保持できる設定ファイルを介してsudoを設定します。
ユーザーは特定のコマンドを呼び出すためにパスワードを入力する必要はありません。それは完全なアクセス権があるという意味ではありませんsudo
。単一のコマンドを実行する権限のみがあります。
構成例:
david ALL=(ALL) NOPASSWD: /usr/bin/journalctl
(詳細はhttps://askubuntu.com/questions/147241/execute-sudo-without-password)
- ユーザー "david"のパスワードがあっても自動的に使用できるという意味ではありません
sudo
。 - sudoを介して保持する権限を一覧表示するコマンドはありません(アクセスは必要ありません
/etc/sudoers
)。 sudoの仕組みを通して推論されます。 Sudoはコマンドを呼び出すときに設定を確認するだけで、このプロセスにはスーパーユーザー権限が必要です。したがって、設定を一覧表示する権限のないツールを持つことは不可能です。
個人的な提案:特権を高めるために別の方法を試してください。 Sudoは正しく設定されていると非常に安全です。
答え2
sudo
入力したパスワードは記憶され、しばらく(設定によっては)再びメッセージが表示されません。
ファイルには次の構成が/etc/sudoers
あります。sudo
- どのユーザー
- どのようなコマンドを発行しますか?
- パスワードが必要かどうか。
パスワードなしで特定のコマンドを実行できるように設定されている可能性があります。
これらすべては set-uid ビットとは関係ありません。あなたはプログラムにroot権限を与えることを知っているようです(機能:rootが死んでいるので、機能が長続きするを参照してください)。人々はsudo
何でもすることができ、コードと設定ファイルに基づいて何をするかを決定します。