phpで実行されるスクリプトがあるので、www-dataユーザーとして実行されます。スクリプトは非常に単純で、基本的に、ホストファイルやインターフェイスファイルなどの事前に作成されたファイルを正しいディレクトリにコピーします。たぶん、いくつかの権限などを更新します。
新しいユーザーを作成し、必要なコマンドへのアクセスを許可するだけでvisudo
うまくいくかもしれないと思いましたが、
.sh
パスワードを要求し、visudo
(実行時にすべての許可が拒否されました./script.sh
)
test ALL=(ALL) NOPASSWD:ALL
test ALL= NOPASSWD:ALL
test ALL=(ALL) NOPASSWD:/bin/cp,/bin/mv,/bin/nano,/bin/chown,/bin/mv
test
ユーザーをログインしている実際のユーザーに変更すると、機能します。
.sh
www-data
必要な権限を持つ別のユーザーとしてコマンドを実行しようとしているログイン/ユーザーによって実行されます。
#!/bin/bash
sudo -H -u test cp test.txt /etc/test.txt
sudo -H -u test chown test /etc/test.txt
echo "ok"
www-data
ユーザーがroot
アクセス許可を必要とするスクリプトを実行できるようにするための最良の方法は何ですか?
sudoers
あなたが示されている部分は意味がありません。
test ALL=(ALL) NOPASSWD:ALL
test ALL= NOPASSWD:ALL
test ALL=(ALL) NOPASSWD:/bin/cp,/bin/mv,/bin/nano,/bin/chown,/bin/mv
これらの行の1つ、おそらく最後の行が必要です。
echo "ok"
以前のコマンドの終了コードに関係なく実行することもあまり意味がありません。
あなたが示した限りsudo
、ユーザーに対する権限はありませんwww-data
。
通常のシステムでsudo -H -u test cp test.txt /etc/test.txt
は、ユーザーtest
はでファイルを作成できないため、意味がありません/etc
。これは、ターゲットファイルが存在し、ユーザー `testの書き込み権限がある場合にのみ機能します。
ただし、その方法で正常にsudo -H -u test chown test /etc/test.txt
呼び出すchown
ことができる唯一のユーザーはrootであるため、意味がありません。
必要なのはこれだと思います。スクリプト
#!/bin/bash
cp ~test/test.txt /etc/test.txt &&
chown test /etc/test.txt &&
echo 'ok' || echo 'failure'
root
sudo
このような権限を作成します
www-data ALL= NOPASSWD:/path/to/script.sh
次のwww-data
ようにスクリプトを呼び出します
sudo /path/to/script.sh
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加