`sudo -u user script`は/bin/sleepにもアクセスできません。

`sudo -u user script`は/bin/sleepにもアクセスできません。

スクリプトを実行する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.dnoexec

in は!noexec否定!です。これはnoexecオプションを無効にします。

関連情報