web-dev-qa-db-ja.com

PHP rootユーザーの下のbashスクリプトから実行する方法

PHP bashスクリプトからrootユーザー(すべての権限を持つ)で実行し、nobodyユーザー-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
15
Oleg

Sudoを使用できます:

exec("Sudo /your/script");

パスワードプロンプトなしでスクリプトの実行を許可する必要があります。実行Sudo visudoコンソールで、最後に次の文字列を追加します。

nobody ALL = NOPASSWD: /your/script

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

chown root:root /your/script
chmod 755 /your/script
30
Pavel Strakhov

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

1
Sjoerd

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

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

0
Ja͢ck

nobodyを使用して、このスクリプトをSudoユーザーが呼び出せるようにする特定のルールを追加します。

0
J. Bruni

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

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

$Shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $Shell->exeCmd('/full/path/to/script.sh');
0
MerlinTheMagic