Linux文件基本權限及特殊權限詳解
背景
Linux文件基本權限和特殊權限對于初學者很少煩惱,各種無法理解,所以在學到這一節時,將自己學到的以及自己的理解寫出來以檢查自己對這個部分的掌握情況。
什么是權限
在Linux里一切皆文件,所謂的權限就是用戶對文件(目錄也是以個文件)的操作范圍,對文件的操作包括讀、寫和執行,用戶對文件有不同的權限就能做相應的操作。
目標
熟悉Linux文件的基本權限和特殊權限,明白文件權限后面對應的意義。
用戶組
一個文件有對應三種用戶:文件所有者、文件所屬組、其他用戶。每一種用戶都對應著三種基本權限,包括讀、寫和執行。
所有者:誰創建這個文件就天然是這個文件的所有者,只有uid為0的用戶(默認是root)可以使用chown命令來改變文件所有者。
![]()
![]()
所屬組:一般情況下一個新建的文件的所屬組就是創建者的主組??梢酝ㄟ^chgrp命令來改變文件的所屬組。所屬組中的成員會自動繼承組的權限,即所屬組有什么權限,成員就有什么權限,當然acl的用戶除外。
![]()
其他用戶:包括除了所有者和所屬組成員以外的其他用戶。
文件基礎權限
可以使用 ll 命令來查看文件的詳細信息
![]()
其中d:表示目錄
– :表示普通文件
r:表示讀權限
w:表示寫權限
x:表示執行權限
也可以用數字表示 r=4;w=2;x=1
第一個rwx位:表示所有者權限
第二個rwx位:表示所屬組權限
第三個rwx位:表示其他用戶權限
文件權限的意義
對于不同的文件類型,文件的權限對應不同的意義。
普通文件的r權限表示擁有r權限的用戶可以打開這個文件,w權限表示表示用戶可以修改這個文件的內容,x表示用戶可以執行這個文件。
而目錄文件的rwx權限意義不同于普通文件。
1、目錄文件的r權限表示用戶可以列出目錄里的文件但如果用戶僅有r權限即400,則用戶不可以cd到這個目錄里不可用cat文件,不可以創建文件;能列出目錄里的文件,但文件名字是亂碼。
![]()
2、w權限表示用戶可以創建文件,但如果用戶只有w權限即200,則用戶不能cd到目錄里,不能cat文件,不能創建文件,不能列出目錄里的文件
![]()
3、x權限表示用戶可以進入到目錄里,但如果只有x權限即100,目錄里的文件不能列出,不能創建文件,可以cd進入目錄,可cat有權限的文件。
![]()
4、如果目錄文件有r+x權限 即500,用戶可以進入目錄,列出文件,cat有權限的文件,但不能創建新文件
![]()
5、如果目錄權限為w+x即300,用戶不能列出目錄里的文件,可以進入目錄,可創建文件,可cat有權限的文件
![]()
6、如果目錄文件的權限為r+w即600,則用戶可以列出目錄里的文件但是亂碼,不能cd進目錄,不能創建文件,不能cat文件
![]()
當然這里只是列出了一中用戶類型權限的使用,其他用戶權限的也是一樣的使用方式。
文件特殊權限
文件的特殊權限有三種包括suid(4)、sgid(2)、sticky(1);
suid 4 只能作用于二進制可執行程序上,當執行這個程序時會臨時切換身份為文件所有者身份,典型的就是用戶修改密碼。
![]()
可見這個文件所有權限都沒有,但是我們可以使用passwd命令來修改這個文件。這是為什么呢?
那是因為/usr/bin/passwd文件有特殊權限s
![]()
所有者有了s權限后,當用戶執行這個程序時會臨時將用戶身份切換到root身份,而root用戶是不受權限控制的,所以雖然沒有任何權限,用戶也可以修改密碼。
這個權限很危險,比如如果cat有suid權限,則所有用戶可以查看和修改所有文件。
sgid 2 作用于二進制可執行程序上,繼承了此程序所屬組的權限
![]()
作用于目錄上,在該目錄下新建文件所屬組繼承目錄的所屬組
![]()
sticky 1 粘滯位 作用于目錄,該目錄下的文件只能被所有者和root刪除,代表是/tmp目錄
![]()
原創文章,作者:657188918,如若轉載,請注明出處:http://www.www58058.com/80747