一、權限介紹
使用ls命令查看時,發現長格式顯示的第一列就是文件的權限
權限位一共有 10 位,這 10 位權限位的含義如下圖所示。
- 第 1 位代表文件類型。Linux 不像 Windows 使用擴展名表示文件類型,而是使用權限位的第 1 位表示文件類型。雖然 Linux 文件的種類不像 Windows 中那么多,但是分類也不少,詳細情況 可以使用“info ls”命令查看。
“-”:普通文件。
“b”:塊設備文件。這是一種特殊設備文件,存儲設備都是這種文件,如分區文件/dev/sda1 就是這種文件。
“c”:字符設備文件。這也是特殊設備文件,輸入設備一般都是這種文件,如鼠標、鍵盤 等。
“d”:目錄文件。Linux 中一切皆文件,所以目錄也是文件的一種。
“l”:軟鏈接文件。
“p”:管道符文件。這是一種非常少見的特殊設備文件。
“s”:套接字文件。這也是一種特殊設備文件,一些服務支持 Socket 訪問,就會產生這樣的文件。
如果有字母,則代表擁有對應的權限;如果是“-”,則代表沒有對應的權限。
- 第 2~4 位代表文件所有者的權限
r:代表 read,是讀取權限。
w:代表 write,是寫權限。
x:代表 execute,是執行權限 - 第 5~7 位代表文件所屬組的權限,同樣擁有“rx”權限。
- 第 8~10 位代表其他人的權限,同樣擁有“rx”權限
二、基本權限命令。
1、chmod,修改權限的命令 。
命令名稱:chmod。
英文原意:change file mode bits。
所在路徑:/bin/chmod。
執行權限:所有用戶。
功能描述:修改文件的權限模式
1.1、命令格式
chmod 選項 命令模式 文件...
-R: 遞歸設置權限,也就是給子目錄中的所有文件設定權限
1.2、權限模式
chmod 命令的權限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[用戶身份][[賦予方式][權限]]” 的格式。
用戶身份。
- u:代表所有者(user)。
- g:代表所屬組(group)。
- o:代表其他人(other)。
- a:代表全部身份(all)。
賦予方式。
- +:加入權限。
- -:減去權限。
- =:設置權限。
權限。
- r:讀取權限(read)。
- w:寫權限(write)。
- x:執行權限(execute)。
例如
chmod o-w a.txt
#把a.txt針對其他人寫權限移除。
1.3、數字權限
數字權限的賦予方式是最簡單的,但是不如之前的字母權限好記、直觀。
4:代表“r”權限。
2:代表“w”權限。
1:代表“x”權限。
例如
chmod 644 a.txt
# 為a.txt 設置 rw-r--r-- 權限
1.4.常用權限
數字權限的賦予方式更加簡單,但是需要用戶對這幾個數字更加熟悉。其實常用權限也並不多,只有如下幾個。
- 644:這是文件的基本權限,代表所有者擁有讀、寫權限,而所屬組和其他人擁有只讀權限。
- 755:這是文件的執行權限和目錄的基本權限,代表所有者擁有讀、寫和執行權限,而所屬組和其他人擁有讀和執行權限。
- 777:這是最大權限。在實際的生產服務器中,要盡力避免給文件或目錄賦予這樣的權限,這會造成一定的安全隱患。
三、基本權限的作用
3.1、權限含義的解釋 首先,讀、寫、執行權限對文件和目錄的作用是不同的
權限對文件的作用。
- 讀(r):對文件有讀(r)權限,代表可以讀取文件中的數據。如果把權限對應到命令上,那么一旦對文件有讀(r)權限,就可以對文件執行 cat、more、less、head、tail 等文件查看命令。
- 寫(w):對文件有寫(w)權限,代表可以修改文件中的數據。如果把權限對應到命令上,那么一旦對文件有寫(w)權限,就可以對文件執行 vim、echo 等修改文件數據的命令。注 意:對文件有寫權限,是不能刪除文件本身的,只能修改文件中的數據。如果要想刪除文件, 則需要對文件的上級目錄擁有寫權限。
- 執行(x):對文件有執行(x)權限,代表文件擁有了執行權限,可以運行。在 Linux 中,只要文件有執行(x)權限,這個文件就是執行文件了。只是這個文件到底能不能正確執行, 不僅需要執行(x)權限,還要看文件中的代碼是不是正確的語言代碼。對文件來說,執行(x)權限是最高權限。
權限對目錄的作用。
- 讀(r):對目錄有讀(r)權限,代表可以查看目錄下的內容,也就是可以查看目錄下有哪些子文件和子目錄。如果把權限對應到命令上,那么一旦對目錄擁有了讀(r)權限,就可 以在目錄下執行 ls 命令,查看目錄下的內容了。
- 寫(w):對目錄有寫(r)權限,代表可以修改目錄下的數據,也就是可以在目錄中新建、 刪除、復制、剪切子文件或子目錄。如果把權限對應到命令上,那么一旦對目錄擁有了寫(w) 權限,就可以在目錄下執行 touch、rm、cp、mv 命令。對目錄來說,寫(w)權限是最高權限。
- 執行(x):目錄是不能運行的,那么對目錄擁有執行(x)權限,代表可以進入目錄。如果 把權限對應到命令上,那么一旦對目錄擁有了執行(x)權限,就可以對目錄執行 cd 命令,進入目錄。
3.2、目錄的可用權限 目錄的可用權限其實只有以下幾個。
- 0:任何權限都不賦予。
- 5:基本的目錄瀏覽和進入權限。
- 7:完全權限。
四、所有者和所屬組命令
4.1、chown 命令
chown 是修改文件和目錄的所有者和所屬組的命令,
命令名稱:chown。
英文原意:change file owner and group。
所在路徑:/bin/chown。
執行權限:所有用戶。
功能描述:修改文件和目錄的所有者和所屬組。
命令格式
[root@love2 ~]# chown [選項] 所有者:所屬組 文件或目錄
-R: 遞歸設置權限,也就是給子目錄中的所有文件設置權限
4.2.chgrp 命令 chgrp 是修改文件和目錄的所屬組的命令
命令名稱:chgrp。
英文原意:change group ownership。
所在路徑:/bin/chgrp。
執行權限:所有用戶。
功能描述:修改文件和目錄的所屬組
命令格式
[root@love2 ~]# chgrp [選項] 組名 文件或目錄
-R: 遞歸設置權限,也就是給子目錄中的所有文件設置權限
五、umask 默認權限
當我們登錄系統之后創建一個文件或者目錄總是有一個默認權限的,那么這個權限是怎么來的呢?這就是umask干的事情。umask設置了用戶創建文件的默認 權限,它與chmod的效果剛好相反 。
5.1查看umask權限。
# 用八進制數值顯示 umask權限
[root@love2 ~]# umask
0022
# 用字母表示文件和目錄的初始權限
[root@love2 ~]# umask -S
u=rwx,g=rx,o=rx
#設置umask值
umask 033
5.2 umask 權限的計算方法 我們需要先了解一下新建文件和目錄的默認最大權限。
-
對文件來講,新建文件的默認最大權限是 666,沒有執行(x)權限。這是因為執行權限對文件 來講比較危險,不能在新建文件的時候默認賦予,而必須通過用戶手工賦予
-
對目錄來講,新建目錄的默認最大權限是 777。這是因為對目錄而言,執行(x)權限僅僅代表 進入目錄,所以即使建立新文件時直接默認賦予,也沒有什么危險。
按照官方的標准算法,umask 默認權限需要使用二進制進行邏輯與和邏輯非聯合運算才可以得到正確的新建文件和目錄的默認權限。這種方法既不好計算,也不好理解,
所以這里還是按照權限字母來講解 umask 權限的計算方法。我們就按照默認的 umask 值是 022 來分別計算一下新建文件和目錄的默認權限吧。 -
文件的默認權限最大只能是 666,而 umask 的值是 022
“-rw-rw-rw-”減去 “-----w--w-”等於“-rw-r--r—” -
目錄的默認權限最大可以是 777,而 umask 的值是 022
“drwxrwxrwx”減去“d----w--w-”等於“drwx-r-xr-x”
注意:umask 默認權限的計算絕不是數字直接相減。
例如 umask 是 033
- 文件的默認權限最大只能是 666,而 umask 的值是 033
“-rw-rw-rw-”減去“-----wx-wx”等於“-rw-r--r—” - 目錄的默認權限最大可以是 777,而 umask 的值是 033
“drwxrwxrwx”減去“d----wx-wx”等於“drwx-r--r--”