2

基本的に、PHP Web ページからサービスを再起動しようとしています。

コードは次のとおりです。

<?php
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
?>

しかし、/var/log/httpd/error_log私は得る

sudoers gid に変更できません: 操作は許可されていません

そして /var/log/messages で、私は得る

9 月 22 日 15:01:56 ri カーネル: audit(1222063316.536:777): avc: pid=4851 の { getattr } が拒否されました comm="sh" name="var" dev=dm-0 ino=114241 scontext=root:system_r :httpd_sys_script_t tcontext=system_u:object_r:var_t tclass=dir
Sep 22 15:01:56 ri カーネル: audit(1222063316.549:778): avc: pid=4851 comm="sudo" scontext=root:system_r の { setrlimit } が拒否されました: httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=process
Sep 22 15:01:56 ri カーネル: audit(1222063316.565:779): avc: pid=4851 の { read } が拒否されました comm="sudo" name="shadow" dev= dm-0 ino=379669 scontext=root:system_r:httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=ファイル
9 月 22 日 15:01:56 ri カーネル: audit(1222063316.568:780): avc: pid=4851 comm="sudo" name="shadow" dev=dm-0 ino=379669 scontext=root:system_r の拒否された { read } :httpd_sys_script_t tcontext=system_u:object_r:shadow_t tclass=file
9 月 22 日 15:01:56 ri カーネル: audit(1222063316.571:781): avc: pid=4851 の { setgid } が拒否されました comm="sudo" capability=6 scontext=root :system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability
Sep 22 15:01:56 ri カーネル: audit(1222063316.574:782): avc: pid=4851 comm="sudo" capability=7 scontext の { setuid } が拒否されました=root:system_r:httpd_sys_script_t tcontext=root:system_r:httpd_sys_script_t tclass=capability
9 月 22 日 15:01:56 ri カーネル: 監査 (1222063316.577:783): avc: pid=4851 の { setgid } が拒否されました。 =能力

私のvisudoで、これらの行を追加しました

User_Alias WWW=Apache

WWW ALL=(ALL) NOPASSWD:ALL

手伝ってくれませんか ?私は何か間違っていますか?

ご協力いただきありがとうございます、

ティボウン

4

4 に答える 4

10

問題は現時点では sudo ではなく、HTTPD がルート権限を取得することを (合理的に) 拒否するように設定されているSELinuxにあります。
これを明示的に許可するか (これにはaudit2allowを使用できます)、代わりに SELinux を許可するように設定する必要があります。私は前者をお勧めします。

于 2008-09-22T08:20:10.913 に答える
5

発生しているエラーは、SELinux 構成に関連しているようです。一時的に無効にしてみてください。

余談ですが、sudo 設定をより制限的に調整することを強くお勧めします。

User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/etc/init.d/portmap
WWW ALL=NOPASSWD: WEBCMDS
于 2008-09-22T08:16:30.673 に答える
1

私は最近問題に遭遇し、上記の受け入れられた回答が役に立ちました。ただし、次の人が私のように多くの時間を費やす必要がないように、この回答を投稿して同じことを詳しく説明したいと思います!

次のリンクのセクション 7 に従ってください: https://wiki.centos.org/HowTos/SELinux

で grep を実行しhttpd_sys_script_tます。

基本的に手順は次のとおりです。

# grep httpd_sys_script_t /var/log/audit/audit.log | audit2allow -M httpdallowsudo
# semodule -i httpdallowsudo.pp
于 2015-08-28T11:15:59.957 に答える
-3

これはおそらく、非対話型シェルで sudo を実行しようとするようなものです。

Apache ユーザーのメール ログで 'sudo' に対して grep を実行すると、次のようなことがわかる場合があります。

sudo: 申し訳ありませんが、sudo を実行するには tty が必要です

于 2008-09-22T08:19:41.103 に答える