2010-03-10 113 views
0

有沒有人曾經使用PHP(經過驗證和成功)通過Web瀏覽器來查找目錄?CHMOD在apache服務器上使用PHP的linux目錄

我的障礙是: (一)PHP腳本運行從一個以上的瀏覽器 (二)目錄我想CHMOD由FTP用戶擁有和「沒有人」沒有寫權限,「沒有人」它

所以,當我嘗試CHMOD 0666在/ usr/WWW/dirOwnedbyFTPuser/dirIamTryingToCHMOD/我得到許可被拒絕

如果你曾經編寫併成功運行一個腳本來做到這一點,你可以共享snipit代碼與我?謝謝......在這個好幾個月。

+0

有解決方案,但這不好讓php管理系統權限。你需要做什麼這樣的事情? – Benoit 2010-03-10 13:55:30

+0

我需要動態地使用PHP創建一個目錄。 – 2010-03-10 17:48:15

回答

1

是的,它可以通過php來做到這一點。通常的Linux權限規則適用,但是,如果你正在尋找不屬於apache用戶的chmod腳本(nobody),並且apache用戶沒有寫權限,那麼一種方法是授予apache許可使用sudo

被警告 - 這可能是一個巨大的安全漏洞!

您可以通過編輯sudoers文件給apache許可使用sudo。建議您不要直接編輯這個文件作爲錯誤可以讓你我(的Ubuntu)系統上完全擰所以我鍵入

sudo visudo 

然後你需要添加一行爲貴「無人」的用戶。您可以將sudo權限限制爲特定的腳本或文件夾,因此我建議您編寫一個shell腳本來更改權限,然後將其放置在遠離任何其他腳本的文件夾中。這樣apache在你的系統上沒有完全的root權限(這是一個非常可怕的想法)。您還可以在shell腳本中放置一些代碼來限制哪些文件可以更改。

您還需要允許apache在沒有密碼的情況下sudo,因爲您無法通過php輸入密碼。所以,你想補充的線是一樣的東西

nobody ALL=(ALL)NOPASSWD:/path/to/my/script 

然後在PHP你只是使用sudo前綴命令

passthru ("sudo /path/to/my/script ..."); 

(還有你可以用它代替中繼()一些其他的功能,是隻是浮現在腦海)

正如我之前所說的第一,這是潛在的非常危險的,雖然上面會的工作,我只用我自己的私有系統之前,從來沒有一個公共產品服務器上。我相信很多人會對這個方法的安全性發表評論,所以我很想知道這種方法可能存在哪些潛在的缺陷和安全漏洞。我知道使用SuExec也可以做類似的事情,但我不太瞭解它,所以如果有人對SuExec有任何優點或缺點,我會很樂意聽到他們的意見。

最後說明一點:我的apache用戶從任何人更改爲類似「阿帕奇」或「WWW」 - 可能只是不懂事,但我不喜歡給root權限的用戶稱爲人的想法!

希望這有助於!

+0

感謝Addsy。我不想做任何服務器端的調整,所以更新sudoers文件不是我想要的路徑(http://stackoverflow.com/questions/2230391/php-shell-exec-and-sudo-must -BE-的setuid根)。 – 2010-03-10 17:50:41

1

是的,你可以通過網絡瀏覽器從PHP chmod。 (是的,我們都知道這可能是一個壞主意)..

但是 - 你只能chmod php腳本有權使用的文件!如果你的網絡服務器運行PHP爲nobody,那麼你可以chmod任何由「nobody」擁有的文件...

0

http://www.php.net/ftp 您可以讓php以ftp用戶身份登錄並執行此操作。

+0

是的Chris ...謝謝!我已經走上了這條道路,並且已經成功地編寫了它的腳本。現在我的困境是改變一個目錄的組名。我已經嘗試過ftp_site($ ftpStream,'chgrp nobody'。$目錄),但是我無法完成它的工作。 有沒有人有任何成功通過ftp_connect()更改目錄組? 謝謝。 – 2010-03-10 16:33:34