スクリプトを実行するbla
とき
sudo -u otheruser ./bla
私が得た出力は、スクリプトが実行されたため、外部コマンドが利用できないことを示します。
otheruser
./bla: line 3: /bin/sleep: Permission denied
./bla: line 4: /bin/sleep: Permission denied
スクリプト自体は簡単です。
#!/bin/bash
echo $USER
/bin/sleep 1
sleep 1
最後のエラーメッセージは、実際にはbashは実行されていませんが、組み込みコマンドでsleepがないシェルであることを示すようです。そうでなければ文句を言わないでしょう/bin/sleep
。
文書を読みながら請求書に合ったNOEXECを見つけましたが、/ etc / sudoersはNOEXECを意味しません。
私のNOEXECは正しい方向に行きますか?それでは、存在せず、/etc/sudoers
プロンプトも表示されませんが、sudo -V
なぜ有効になりますか?
編集:コメントで要求されたように、出力は次のようになりますsudo -l -l
。
Matching Defaults entries for xxxxx on this host:
always_set_home, env_reset, env_keep="LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE", targetpw, !authenticate, noexec, syslog=local5, env_reset,
always_set_home
User xxxxx may run the following commands on this host:
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
LDAP Role: CENSORED
RunAsUsers: root
Options: !noexec
Commands:
/bin/su - solr
LDAP Role: T-SOLRSEARCH
RunAsUsers: root
Options: !noexec
Commands:
ALL
いいですね。!noexec
「!」で何が起こっていますか?
答え1
Matching Defaults entries for xxxxx on this host: …, noexec, …
ユーザーはxxxxx
すべてのプログラムを実行できますが、そのプログラムは他のプログラムを実行できません。 rootでコマンドを実行すると例外があります。セキュリティの制限として、これは意味がありません。ただ実行できるならどのその後、プログラムを実行しpasswd
てrootアカウントのパスワードを変更できます。ルートとしてプログラムを実行できる場合は、すべてのユーザーとしてプログラムを実行できます。したがって、これは誤った設定です。
このオプションを含むファイルDefaults
で/etc/sudoers
行を見つけます。/etc/sudoers.d
noexec
in は!noexec
否定!
です。これはnoexec
オプションを無効にします。