1

私がやろうとしているのはroot、Web ページからシステム ユーザーとしてシェル コマンドを実行することです。

私が調査したところ、Linux 上の PHP でシステム ユーザーになりすます方法はありません (正確には PHP 5.4.13 を搭載した CentOS 6.3)。

これまでのところ、 (テスト用に)行をインストールsudoして に追加しました。次に、Web サイトのルートに単純な php ファイルを作成しました。apache ALL=(ALL) :NOPASSWD ALL/etc/sudoers

<?php shell_exec('sudo -u root touch somefile'); ?>

ただし、次のコマンドを実行しても何も起こりません。

<?php shell_exec('whoami'); ?>

結果が得apacheられたので、少なくとも shell_exec が機能していることがわかります。

cli から試してみると、apache に nologin が定義されているためと思われる結果が得られます (? su apache)This account is currently not available.apache:x:48:48:Apache:/var/www:/sbin/nologin

では、php から root としてコマンドを実行できる正しい方法は何ですか?

/etc/ssl/certs/httpsルートとして実行して達成しようとしているものの例として、Web コントロール パネルから呼び出される次のコマンド ラインを使用して証明書を追加したいと思います。

openssl req -new -nodes -x509 -days 3650 \
 -subj "/emailAddress=${ssl_email}/CN=ca.${domain_name}/OU=${ssl_organisational_unit}/O=${ssl_organisation}/L=${ssl_location}/ST=${ssl_state}/C=${ssl_country}" \
 -keyout "${certroot}/cacert.pem" -out "${certroot}/cacert.pem"

よろしくお願いいたします。

4

1 に答える 1

0

あはは!!! とった!

それを書いてから間もなく、php exec() で sudoを見つけました

答えは、からコメントアウトすることDefaults requirettyです/etc/sudoers

于 2013-03-21T09:45:43.617 に答える