別のユーザーとしてコマンドを 1 回実行します。
sudo -u www-data php script.php
これは root
の場合に機能するはずです .
常に php を www-data
として実行する場合 、いくつかの可能性があります。簡単なラッパー シェルスクリプトを作成できます。 /usr/bin/php
の場合 /usr/bin/php5
へのソフトリンクのみです または同様の、それはそれをより簡単にします。ソフトリンクを置き換えるだけです(ファイル php5
ではありません) ) このようなスクリプトで:
#!/bin/sh
sudo -u www-data php5 $*
return $?
ただし、それはテストされていません。また、これは常に php5
を実行しようとすることに注意してください ユーザー www-data
として 、たとえユーザーが root
でなくても そのための許可がない場合があります。また、それはあなたが本当に望んでいるものではないかもしれません。 php を実行しようとすると、一部のインストール済みサービスで問題が発生する場合があります。
それをルートにのみ適用する(おそらくより良い)解決策は、ソフトリンク /usr/bin/php
を残すことかもしれません 単独で、スクリプトを /root/bin
に配置します 代わりは。次に、そのフォルダを .bashrc
経由で PATH に追加します 、 .profile
または類似。 /etc/skel/.profile
がある場合 、それがどのように行われるかを指摘するかもしれません:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
これが .bashrc
に入ったら 、 .profile
または同様に、新しいシェルを開くたびに、$HOME/bin
で任意の実行可能ファイル (+x) を直接実行できます。 (/root/bin
ルート用)
ヒント:ラッパー スクリプトに phpwww
のような名前を付けるとよいでしょう。 php script.php
を明示的に指定します または phpwww script.php
通常の php と sudo された php のどちらが必要かを決定します。
もう 1 つの解決策は、単純なエイリアスです。これを .bashrc
に配置します 、 .profile
または類似:
alias phpwww='sudo -u www-data php'