Linux

PHP未經許可獲取linux文件?

  • April 29, 2021

我有一個 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
---

引用自:https://unix.stackexchange.com/questions/647177