1、如何查看文件或目錄權限?
通過ls -l
查看Linux系統上的文件、目錄或設備的文件權限。如下所示:
[root@hadoop tmp]# ls -l
總用量 0
drwxr-xr-x. 2 root root 6 8月 26 23:13 dir1
drwxr-xr-x. 2 root root 6 8月 26 23:13 dir2
-rw-r--r--. 1 root root 0 8月 26 23:13 file1
-rw-r--r--. 1 root root 0 8月 26 23:13 file2
-rwxrwxr-x. 1 root root 0 8月 26 23:25 myprog
關於ls
的用法詳見:https://blog.csdn.net/yaoyelinger0912/article/details/98886023
2、如何理解文件或目錄權限?
輸出清單中的第一個字段描述文件和目錄的權限。
字段中的第一個字符定義了對象的類型:
- -表示文件
- d 表示目錄
- l 表示鏈接
- c 表示字符設備
- b 表示塊設備
- n 表示網絡設備
字段中的後面的3個字符都定義一個訪問權限:
- r 表示對象讀權限,代表數字4
- w 表示對象寫權限,代表數字2
- x 表示對象執行權限,代表數字1
字段中的後面的3個字符與3種級別的對象安全性相關:
- 對象所有者
- 擁有對象的用戶組
- 系統上的其他任何人
如圖:
文件nyprog擁有以下權限: - rwx 針對文件所有者
- rwx 針對文件用戶組所有者
- r-x 針對系統上的其他任何人
這些權限表示: - 用戶名dafu1可以讀取、寫入和執行文件
- 用戶組dafu1中的成員也能讀取、寫入和執行文件
- 不在rich用戶組中的任何人只能讀取和執行文件
【思考:附加組是用戶組權限還是其他人權限?】
3、如何修改文件默認權限? umask
umask命令爲創建文件或目錄設置默認權限:
[root@hadoop tmp]# touch umaskfile1
[root@hadoop tmp]# ls -l umaskfile1
-rw-r--r--. 1 root root 0 8月 26 23:31 umaskfile1
umask命令使用分配給用戶賬戶的默認權限創建了文件。umask命令顯示並設置默認權限:
[root@hadoop tmp]# umask
0022
第一個數字表示一種特殊的安全性,稱爲粘着位;
後面三個數字表示文件或目錄的八進制umask值。
八進制模式安全設置將3個rwx權限值轉換爲一個3位的二進制值。由一個八進制值表示。
在二進制表示中,每個位置都是一個二進制位。
因此,如果讀取權限時唯一的權限集,則值應該是r–,相關的二進制是100,這表示八進制值爲4。
r表示二進制的100,權限爲八進制的4
w表示二進制的010,權限爲八進制的2
x表示二進制的001,權限爲八進制的1
現在umask的八進制值顯示爲0022,但是,創建的文件的八進制模式權限爲644,這是怎麼回事呢?
umask值只是一個掩碼,它掩去不希望爲安全級別指定的權限。
umask值是從對象完整權限集中減去的值,文件的完整權限時模式666,目錄的完整權限時777。
示例中,文件的初始權限時666,應用022的umask之後,文件變爲了644.
umask值通常設置在/etc/profile啓動文件中,可使用umask命令指定不同的默認umask設置:
[root@hadoop tmp]# umask 026
[root@hadoop tmp]# touch umaskfile2
[root@hadoop tmp]# ls -l umask*
-rw-r--r--. 1 root root 0 8月 26 23:31 umaskfile1
-rw-r-----. 1 root root 0 8月 26 23:45 umaskfile2
將umask值設置爲026,默認人家權限改變爲640。
下面演示umask如何影響新建目錄權限:
[root@hadoop tmp]# umask 026
[root@hadoop tmp]# mkdir dir3
[root@hadoop tmp]# ls -l | grep dir
drwxr-xr-x. 2 root root 6 8月 26 23:13 dir1
drwxr-xr-x. 2 root root 6 8月 26 23:13 dir2
drwxr-x--x. 2 root root 6 8月 26 23:48 dir3
目錄的默認權限時777,777減去 026 umask值,得出的權限爲751。
【思考:文件或目錄的rwx權限分別是什麼意思?】