我有一個網頁,用戶可以在其中上傳檔案。上傳后,網頁呼叫shell腳本將上傳的檔案移動到另一個位置。我確定“mv”命令由于權限問題而失敗,但我不確定如何克服這個問題。
第一件事。我的網頁在 Ubuntu 16.04 服務器和 Apache2 2.4.41 上運行。當用戶上傳檔案時,該檔案將保存在服務器上的目錄中/var/www/html/uploads:
me@myServer:/var/www/html/uploads$ ls -l
total 44
-rw-r--r-- 1 www-data www-data 761 Feb 21 15:38 UsersUploadedFile.txt
me@myServer:/var/www/html/uploads$
我注意到該檔案歸用戶所有www-data。
上傳檔案后,網頁會呼叫此 shell 腳本將檔案移動到另一個目錄:
#!/bin/bash
echo "Attempting to move the uploaded file..."
{
mv /var/www/html/uploads/UsersUploadedFile.txt /home/me/UsersUploadedFile.txt
} || {
echo "Gah, failed to move the file!"
}
上傳檔案后,您會在我的網頁上看到:
Attempting to move the uploaded file...
Gah, failed to move the file!
所以“mv”命令失敗了。
我的第一直覺是這是一個權限問題。www-data正如我之前提到的,要移動的檔案歸用戶所有。shell腳本也是:
me@myServer:/var/www/html$ ls -l
total 36
-rwxr-xr-x 1 www-data www-data 593 Feb 21 15:53 moveTheFile.sh
me@myServer:/var/www/html$
但是我要移動的檔案目錄歸用戶所有me,由于其他腳本原因,我無法更改它。
我想我想做的是讓 shell script 將UsersUploadedFile.txt所有權更改為 user me,然后移動檔案。但是,如果我chown在 shell 腳本中插入一個命令,該命令也會失敗。
看起來用戶 www-data 正在運行 apache2 服務,因此也運行 shell 腳本......?我不知道。
me@myServer:/var/www/html$ ps -ef | grep apache
root 14931 1 0 13:00 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 14934 14931 0 13:00 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 14935 14931 0 13:00 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 14936 14931 0 13:00 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 14937 14931 0 13:00 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 14938 14931 0 13:00 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 14942 14931 0 13:00 ? 00:00:00 /usr/sbin/apache2 -k start
ph9821 15165 14831 0 16:03 pts/2 00:00:00 grep --color=auto apache
me@myServer:/var/www/html$
那么我在這里可能做錯了什么?以及如何獲取 shell 腳本來更改檔案權限?我想這就是我真正需要在這里做的。謝謝你。
uj5u.com熱心網友回復:
這是一個權限問題。用戶 www-data 無法在您的主目錄中寫入檔案。
假設您的主目錄由用戶“me”和組“me”擁有,您必須在主目錄上設定權限,以便您的組可以寫入(應該已經)。然后在該組中添加用戶 www-data。
重要的提示
如果您將權限 777 放在您的主目錄上,那么系統上的每個用戶都可以寫入該目錄!你應該輸入 775 或 770。只有你和你的團隊應該能夠寫(也可能讀,取決于你的要求)。如果這是您自己的機器,這并不重要,如果這是一臺有許多用戶的機器,則很重要。
記住權限是:用戶組其他。777 是所有 3 的 rwx。它可能很危險。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432242.html
