0

Cent OS サーバーの GUI 用の PHP スクリプトを作成しています。テスト目的で、Apache を localhost としてセットアップしました。Cent OS は、接続された USB デバイスを自動マウントしません。PHP では、USB デバイスが接続されているかどうかを確認してからマウントし、ユーザーのファイル コンテンツを一覧表示する必要があります。これは bash では非常に簡単ですが、PHP では機能しません。exec()shell_exec()関数の両方をいじってみましたが、役に立ちませんでした。私は両方のコマンドを手動で試しました:

shell_exec("sudo mount /dev/sdb1 /mnt");

そしてbashスクリプトを介して:

exec("./mountlist.sh");

私が呼び出すことができるPHPの関数はありますか、それとも関数execshell_exec関数で何かが欠けていますか。どちらの機能もシェルで正常に動作します。mount は root コマンドなのでsudo、bash スクリプトに含めました。

4

1 に答える 1

1

PHP スクリプト内から sudo を実行することはできません。sudo パスワードを入力する方法はありません。

シェル スクリプトを作成し、STICKY ビットを使用して root ユーザーとして実行することができます。

http://www.dba-oracle.com/linux/sticky_bit.htm

これは、通常のユーザーとして実行している場合でも、passwd コマンドが root が所有するパスワード ファイルに書き込むことができる方法です。

また、ファイル システムをマウント/アンマウントする権限を Web ユーザーに付与することもできます (ほとんどのシステムでヒューズ グループに追加します)。あなたの目的のためのスティッキービット。

于 2012-08-27T19:30:38.490 に答える