2011-06-27 95 views
0

給定一個腳本test.php具有內容:即使使用SUID,PHP也不能更改文件權限?

#!/usr/bin/php 
<?php 
echo exec('whoami'); 
chmod('test.txt', 0755); 

,並在同一目錄本身是一個純文本文件test.txt,它工作正常,如果誰創造了這些文件,用戶運行該腳本。但是,如果我做的線沿線的東西:

chown apache:apache test.php test.txt 
chmod 4775 test.php 

,使該test.php的,以作爲「阿帕奇」的用戶,不管是誰的運行它運行的能力。但是當我在上下文中運行它時,出現「Warning:chmod():Operation not permitted」錯誤。並且被「whoami」命令迴應的用戶是通用用戶,而不是「apache」用戶。

那麼,有沒有辦法允許PHP腳本作爲特定用戶運行,除了授予用戶訪問權限以運行腳本爲'apache'?

+1

suid bit只有在運行你的腳本的php解釋器承認它時纔會起作用,它可能不會。你必須自己解釋解釋器二進制文件,這可能是一個壞主意。 –

回答

0

那麼,有沒有辦法允許PHP腳本作爲特定用戶運行,除了授予用戶sudo訪問權限來運行腳本爲'apache'?

您必須缺少一些東西。要麼你允許apache在不同的用戶(sudo/suexec)下執行文件。但是,這只是配置。因此,您應該先決定要實現的目標,然後根據需要配置服務器。

所以,如果你想運行特定用戶下的PHP腳本,你可以通過使用sudo功能並指定用戶來執行此操作。然後Apache將執行該配置用戶下的腳本。

如果您不喜歡使用sudo,那麼沒有其他選擇,那麼運行腳本的用戶下運行apache或apache已配置爲用於調用腳本。

因此,要做出您想要達到的決定。但是如果你想改變用戶,我意識到的唯一方式(可能還有別的,但我懷疑它)正在使用Apache sudo功能。

相關問題