1. 程式人生 > >修改文件的所有者失(chown: changing ownership of `uploads': Operation not permitted)

修改文件的所有者失(chown: changing ownership of `uploads': Operation not permitted)

php5 upload 用戶 上傳 ati 記得 創建者 roo ted

在項目開發的時候,經常需要將文件上傳到指定的目錄下。

例如這次用thinkphp5的時候,需要在public目錄下建立uploads目錄用於存放上傳的資源。

首先在命令窗口下輸入:

1 mkdir uploads

當前,前提是當前執行命令的用戶需要權限(假設此處有,非root)。

問題來了,即使你目錄創建成功,對於項目來說並不算成功。

因為項目運行的時候上傳文件以及新建目錄的時候,可以看出是apache用戶。

apache對該用戶創建的目錄並沒有寫入權限啊!

當然你可以繼續輸入:

1 chmod -R 0777

這樣,的確apache是可以訪問到了,但是,這樣的話,實屬下冊~~

因為所有的人都可以來這裏隨便指點一下,隨便來刪除一下啊。

記得當初一個兄弟的遭遇:

剛進一間公司不久,然後執行了一下刪除命令,沒想到把該公司的一個項目的

所有上傳的資源全部刪掉了~悲催!此處先不討論做該項目的人的部署問題。

如果操作得當,大家都可以避免。既然可以在開始就避免,何樂而不為呢!

然後我就用了當前的用戶來執行修改文件夾的所有者,畢竟,如果可以將該

文件的所有者修改為apache的話,那只有root和apahce可以在該文件下操縱。

1 chown apache uploads

然後問題就來了,發現命令執行失敗了。

1 chown: changing ownership of `uploads: Operation not permitted

剛看到的時候,糾結於一個問題:會不會系統沒有apache用戶。

就缺沒去創建了~其實細想一下,那之前的項目是怎麽上傳的,文件的創建者還是apache

不行的朋友可以去執行一下:

1 cat /etc/passwd

就知道了

然後突然記起,我並不是在root帳號下操作的。

然後修改了一下命令:

1 sudo chown apache uploads

發現可以執行成功。證實猜想成功。這個命令的執行需要一定的權限。

權限的限制可能來自上級目錄或者命令的本身。

修改文件的所有者失(chown: changing ownership of `uploads': Operation not permitted)