permission - linux home directory




如何在Linux Ubuntu Terminal中為文件夾及其所有子文件夾和文件設置chmod? (11)

chmod -R 755 directory_name作品,但你會如何保持新文件755? 該文件的權限成為默認權限。

有沒有辦法為/opt/lampp/htdocs及其所有內容(包括子文件夾和文件)設置chmod 755

另外,將來如果我在htdocs創建一個新的文件夾或文件,那麼它的權限如何自動設置為755

這工作,但只適用於這個文件夾:

chmod 775 /opt/lampp/htdocs

chmod 755 -R /opt/lampp/htdocs將遞歸設置權限。 只有在設置權限後創建的目錄中才能自動為文件設置權限,但您可以通過設置umask 022來更改系統範圍內的默認文件權限。


使用:

sudo chmod 755 -R /whatever/your/directory/is

但是,請小心。 如果你改變了錯誤的文件/文件夾的權限,它可能真的會傷害你。


其他答案是正確的,因為chmod -R 755會將此設置為樹中所有文件和文件夾的權限。 但你為什麼想要 ? 這可能對目錄有意義,但為什麼要在所有文件上設置執行位?

我懷疑你真正想要做的是將目錄設置為755,並將文件單獨保留或將其設置為644.為此,可以使用find命令。 例如:

要將所有目錄更改為755( drwxr-xr-x ):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

將所有文件更改為644( -rw-r--r-- ):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

對於Mac OS X 10.7(Lion),它是:

chmod -R 755 /directory

是的,就像所有其他人所說的那樣,在做這件事時要小心。


您可以使用-Rchmod遞歸遍歷所有文件和子文件夾。

您可能需要sudo,因為它取決於當前用戶或另一個用戶安裝的LAMP

sudo chmod 755 -R /opt/lampp/htdocs

我認為Adam在問如何更改綁定在/opt/lampp/htdocs目錄上運行的所有進程的umask值。

用戶文件創建模式掩碼(umask)用於確定新創建文件的文件權限。 它可以用來控制新文件的默認文件權限。

所以如果您將使用某種類型的ftp程序將文件上載到/opt/lampp/htdocs ,則需要將您的ftp服務器配置為使用您想要的umask。

如果文件/目錄是通過php創建的,則需要修改php代碼

<?php
umask(0022);
// other code
?>

如果您將從bash會話中創建新的文件/文件夾,則可以在shell配置文件中設置umask值〜/ .bashrc或者,您可以在/etc/bashrc/etc/profile文件中為所有用戶設置umask。 將以下內容添加到文件中:umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

要更改已創建文件的權限,您可以使用查找。 希望這可以幫助。


有兩個找到文件和應用chmod答案。 首先find該文件並應用chmod (如@WombleGoneBad所示)。

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

第二種解決方案是使用find命令生成所有文件的列表,並將該列表提供給chmod命令(如@lamgesh所示)。

chmod 755 $(find /path/to/base/dir -type d)

只要find命令返回的文件數很少,這兩個版本都可以很好地工作。 第二種解決方案看起來很棒,比第一種解決方案更具可讀性。 如果有大量的文件,第二個解決方案返回錯誤: Argument list too long.

所以我的建議是

  1. 如果要一次更改所有文件和目錄的權限,請使用chmod -R 755 /opt/lampp/htdocs
  2. 使用find /opt/lampp/htdocs -type d -exec chmod 755 {} \; 如果您使用的文件數量非常大。 -type x選項僅搜索特定類型的文件,其中d用於查找目錄,f用於文件,l用於鏈接。
  3. 使用chmod 755 $(find /path/to/base/dir -type d)否則
  4. 在任何情況下最好使用第一個

正確的遞歸命令是:

sudo chmod 755 -R /opt/lampp/htdocs

-R :更改包含當前文件夾的每個子文件夾


要設置為所有子文件夾(遞歸)使用-R

chmod 755 /folder -R

並使用umask將默認設置為新文件夾/文件cd /文件夾umask 755


這是將目錄設置為775和將文件設置為664的另一種方法。

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

它可能看起來很長,但有三個原因非常酷:

  1. 只掃描一次文件系統而不是兩次。
  2. 更好地控製文件處理方式與處理目錄的方式。 這在使用特殊模式 (如粘性位)時非常有用,您可能想要應用於目錄而不是文件。
  3. 直接從man頁中使用技術(見下文)。

請注意,我尚未確認此解決方案與簡單使用兩個查找命令(如Peter Mortensen的解決方案)之間的性能差異(如果有)。 然而,在手冊中看到類似的例子是令人鼓舞的。

來自man find頁面的示例:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

乾杯





chmod