私がやろうとしているのは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"
よろしくお願いいたします。