Linux
PHP未經許可獲取linux文件?
我有一個 PHP 程式碼,列出文件和文件夾,使用
shell_exec("sudo ls /home/user");
(www-data 具有對 ls 的 sudo NOPASSWD 訪問權限。)
現在我需要讀取文件,但不能保證該文件具有使用 www-data 讀取的權限。我不想將權限設置為 777。我該怎麼做?
以一個包含三個文件的目錄為例,…
-rw------- 1 root root 9 Apr 29 15:35 bar -rw-rw-r-- 1 www-data www-data 395 Apr 29 15:41 cat.php -rw------- 1 www-data www-data 9 Apr 29 15:35 foo
…,一個範例 cat.php 可能有以下輸出——出於明顯的原因,它包含 php-skript 本身:
ERROR: cannot read file "bar" echoing contents of file "cat.php": --- <?php $filenames = []; exec('sudo ls -1 .', $filenames); foreach($filenames as $filename) { if (!is_readable($filename)) { echo 'ERROR: cannot read file "' . $filename . '"' . PHP_EOL . PHP_EOL; continue; } echo 'echoing contents of file "' . $filename . '":' . PHP_EOL . '---' . PHP_EOL; echo file_get_contents($filename); echo '---' . PHP_EOL . PHP_EOL; } --- echoing contents of file "foo": --- I am foo ---