15

PHPからbashスクリプトをrootユーザー(すべての権限を持つ)で実行し、誰もユーザーではない方法-phpデフォルトユーザー?

それがsudovisudo後の私の出力です:

Defaults        env_keep += "LINES COLUMNS"
Defaults        env_keep += "LSCOLORS"
Defaults        env_keep += "SSH_AUTH_SOCK"
Defaults        env_keep += "TZ"
Defaults        env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults        env_keep += "EDITOR VISUAL"
Defaults        env_keep += "HOME MAIL"

#User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL


# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL) ALL

# Same thing without a password
# %wheel        ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
4

5 に答える 5

34

sudo を使用できます。

exec("sudo /your/script");

パスワードプロンプトなしでスクリプトを実行できるようにする必要があります。コンソールで実行sudo visudoし、次の文字列を末尾に追加します。

nobody ALL = NOPASSWD: /your/script

ファイル モードを適切に設定して、誰もこのスクリプトを変更したり、(ルート コンソールで) 危険なコンテンツを入れたりできないようにする必要があります。

chown root:root /your/script
chmod 755 /your/script
于 2012-06-06T13:41:05.833 に答える
1

set-uid root のプログラムを作ることができます。これにより、プログラムは常にルートとして実行されます。これはシェル スクリプトでは機能しないため、スクリプトを呼び出すプログラムを使用する必要があります。

于 2012-06-06T13:37:06.787 に答える
0

nobodyを使用して、このスクリプトをユーザーが呼び出すことを許可する特定のルールを追加しsudoます。

于 2012-06-06T14:10:17.147 に答える
0

Linux では、通常は を使用してこれを行いますsudo。スクリプトに多くの権限を与えないように、できるだけ具体的に記述してください。

使用方法の例sudo: http://aplawrence.com/Basics/sudo.html

于 2012-06-06T13:42:17.140 に答える
-1

私は最近、PHP が実際の Bash シェルを取得して対話できるようにするプロジェクトを公開しました (ユーザーとして: apache/www-data または必要に応じて root)。ここから入手してください: https://github.com/merlinthemagic/MTS

ダウンロードしたら、次のコードを使用するだけです。

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $shell->exeCmd('/full/path/to/script.sh');
于 2016-05-18T11:53:01.963 に答える