インターネットラジオも再生できるウェブサーバーがあります。 www-dataユーザーとして、いくつかのコマンドを実行する必要があります。たとえば、これを/ etc/sudoersファイルで作成しました。
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer
そしてPHP私はパスワードを使わずにボリュームを操作することができます:
exec('Sudo -u user amixer set Master 3%-');
そして:
exec('Sudo -u user amixer set Master 3%+');
しかし、次のコマンドを実行して自分のサービスを再起動できるようにしたいと思います。
exec('Sudo -u user service servicename restart');
だから私は試した:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, NOPASSWD: /bin/service
この:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, /bin/service
そしてこれでも:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer
www-data ALL=(ALL) NOPASSWD: /bin/service
しかし、どれも機能していないようです。私を助けてください。
すみません、私の間違いです。私はいくつかの変更を行い、フォーム/ sbinを/ binにリンクしようとしました
今私はそれを次のように変更しました:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, NOPASSWD: /usr/sbin/service
そしてそれはうまくいきます!ありがとう!トピックを閉じました。
ソリューションに注意してください:サービスをそのように開始、停止、または再起動できます!
このコマンドを実行するシェルスクリプトを作成することをお勧めします。
echo "#!/bin/sh' > /usr/bin/amixer_restart
echo "Sudo -u user service amixer restart' >> /usr/bin/amixer_restart
適切な権限を付与します(550はrootとグループのwww-dataは読み取りと実行ができ、誰も書き込みできないことを意味します)
Sudo chown root:www-data /usr/bin/amixer_restart
Sudo chmod 550 /usr/bin/amixer_restart
そして、このスクリプトでApacheにSudoを許可します。
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer_restart
これは私がやったことです:
Sudo apt-get install Apache2
_を実行してApache2をインストールしますSudo a2enmod cgi
_を実行して、Apacheがcgiスクリプトの実行を許可されていることを確認しますSudo service Apache2 restart
__/usr/lib/cgi-bin/test.sh
_で次のスクリプトを作成して、bashスクリプトを実行できることを確認します
_#!/bin/bash
# get today's date
OUTPUT="$(date)"
USR=$(whoami)
# headers
echo "Content-type: text/plain"
echo ""
# body
echo "Today is $OUTPUT"
echo "Current user is $USR"
_
スクリプトを実行可能にする_chmod +x /usr/lib/cgi-bin/test.sh
_
スクリプトを実行できることを確認する_curl localhost/cgi-bin/test.sh
_次の応答が返されます。
_ Today is Wed Sep 6 12:19:34 PDT 2017
Current user is www-data
_
ユーザーはwww-dataなので、そのユーザーをsudoerとして追加します。次に、最後に次の行を追加して、ファイル_/etc/sudoers
_を変更します。
www-data ALL=(ALL) NOPASSWD: ALL
これで、そのユーザーはroot特権を持つことになります。次に、test.shスクリプトを次のように変更します。
_#!/bin/bash
# get today's date
OUTPUT="$(date)"
USR=$(Sudo whoami)
_
その後、_localhost/cgi-bin/test.sh
_に対してgetリクエストを実行すると、次の応答が表示されます。
_Today is Wed Sep 6 12:28:38 PDT 2017
Current user is root
_