開發thinkphp的時候, 總是會出現各種個樣 的奇怪的毛病,
比如: 說什么Application目錄不可寫,
比如: 說什么 _STORAGE_WRITE_ERROR, 不能生成 Runtime/Cache/Home/下的緩存文件等.
作為初期開發, 可以不用考慮 安全和性能???
因此, 為了保證開發的順利進行, 先把代碼寫出來, 因此, 第一步就是, 給APPLICATION 完全權限 777, 同時關閉selinux, 將selinux設為0.
就不會出現各種權限, 安全原因引起的 前期的無法 寫下去 的問題.
為什么要給目錄以777的權限呢?
-
這里的最后的那個7, 是針對other的, 而網站訪問的人就是 other, 所以最后的這個7, 就是對web目錄而言的;
-
目錄的權限, 除了給以 write權限外, 還要給以 x 可執行 的權限, 因為: 目錄的write權限 和 x權限 完全是不同的, 兩者之間是不可以互相取代的:
write權限是指: 在目錄中, 可以add創建文件/目錄; 刪除文件/文件夾(不管文件的本身的權限是什么, 也不管文件的所有者是誰?); 重命名文件/目錄; 最后是可以移動文件/子目錄.
而x 可執行權限, 是指 其他用戶是否可以 進入 該目錄, 是否可以 使用 cd 命令 進入該目錄. 為什么又叫 可執行 權限呢? 因為 只有當你 可進入 cd 到 這個目錄后, 你才可以在這個目錄下 "執行" 命令. ... 如果你沒有x命令, 那么即使你有read權限, 也是不能 讀取目錄里面的文件的! -
事實上, 在任何地方 任何用戶, 創建 目錄的 時候, 默認的目錄 權限就是 r-x, 也就是說, 默認的目錄 對other 都是有 x 權限的, 否則, 你創建目錄干 什么呢?
-
通常來說, 重要的, 最主要的, 還是通過 控制 寫權限 來 控制目錄的. 故目錄的寫權限 w 才是最重要的.
-
所以, 給目錄 在原來的權限基礎上: 755, 給以寫權限, 就號了, 即777. 一點都不過分.
-
而對於文件, 就不同於目錄的默認權限 755, 文件的默認權限是 644, 因為文件默認不會設置它為 可執行文件, 沒有 x 權限. 所以它的默認權限是644.
-
而文件 即使它不是 可執行文件, 給它 以 x 權限, 讓他成為可執行文件, 也沒有什么額外影響. 所以 給全部 Appliatcion以777 權限是可以的.
-
但是, 如果你有潔癖, 確實是不想給文件 以執行的 權限,(或者是說 不想看到vim中 Nerdtree 可執行文件旁邊的星號, ) .... 如果我們只是想給web(application目錄下的 子目錄, 以777 的權限, 而 web下的 文件 的權限本身 不要改變, 這時候, 可以參考下面的內容:
先 chmod -R 777 /webpath,
然后, 恢復目錄下的文件 的原來的權限: find /webpath -type f -exec chmod 644 {} ; -
理解以前的那么命令, 使用 find 命令和 其他命令 如ls 的 結合使用 : 就是上面的 , 使用 -exec .... {} ; 注意 這里 的{} ; 就相當於一個占位符, 代表前面的搜索到的 內容!
-
除了在終端下使用 chmod命令來修改文件的權限, 還可以 用php 提供的 chmod函數, 這里面的 權限參數, 就一定要使用 0777的 形式, **其中最前面的0 表示是 8 進制. ** 這個在 chmod函數只是不能省略的. chmod命令中其實 還是 0777, 仍然是八進制, 只是省略了而已!
-
注意, UID就是指的 文件的所有者. 在安全模式下, chmod函數, 會堅持所操作的文件, 和當前 腳本的文件 是否具有 相同的 UID. (即看它們是不是屬於同一個所有者)...
有時候在linux調度一個站點時,為了排除文件權限問題最喜歡用 chmod -777 /web_path
可是要改回來怎么辦,原來是目錄為755 ,文件是644,
可以使用下面這種方法再改回來
find /path -type f -exec chmod 644 {} ; // -exec 后面的命令是以 {} ;結尾的, 記一個固定的就好了.
find /www/TianyaLVS -type d -exec chmod 755 {} ;
ls 命令, 本身是顯示 某個目錄下的 子目錄和子 文件的 信息, 但是 , 如果要 顯示 該目錄自己呢? 顯示它本身 自己的 信息 呢?
不用每次都切換 cd 到它的 父目錄 去, 然后 用 ls 來顯示, 直接 可以 使用 ls -d 就可以顯示了.