"sudo ls -a1 /home" 権限が拒否されました。

動作するPHPスクリプトがありますexec("bash /path/to/list.sh $dir", $out);

その内容list.shは...

#!/bin/bash

sudo /usr/bin/ls -a1 $@ 2>&1

rootでlsを実行する権限をApacheに付与しました。これは sudoers ファイルのエントリです。

www-data  ALL=(ALL) NOPASSWD: /usr/bin/ls *

/home/.ただし、スクリプトはまだ特定のフォルダにアクセスできません/home/

drwxr-xr-x.  40 root root  4096 Jun  5 08:24 home

ls -lコマンドから。

実行しようとすると、レッスンを返し、すでにbash /path/to/list.sh /home入力したsudoパスワードにもかかわらずパスワードを要求します。ファイルを次に置き換えるNOPASSWDか、完全に失敗した場合www-datasudoersapacheall

/usr/bin/ls: cannot open directory /./home/: Permission denied.

私はこれに本当に立ち往生しているので、どんな助けでも大いに感謝します。

ベストアンサー1

中の点はdrwxr-xr-x.SELinuxを使用していることを示しています。として実行するには問題はありませんが、sudoカーネルはApacheプロセスの権限を制限しすぎて、その刑務所から逃げることもできません。lsrootsudo

私はこの問題を解決する方法を教えてくれるほどSELinuxに精通していませんが、SELinuxを無効にするとこのスクリプトは機能します。

おすすめ記事