文件的權限
當運行如下命令時:
[root@marvel ~]# ll /etc/passwd
出現下面結果:
-rw-r--r--. 1 root root 1933 May 19 11:14 /etc/passwd
解釋如下:
1)- 代表文件類型
-:普通文件
d:目錄文件
l:軟連接文件
s:套接字文件
p:管道文件
c:字符設備文件 無緩存,順序訪問
b:塊設備文件 有緩存,隨機訪問
2)rw-r--r-- 代表文件的權限
能使用此文件的用戶分爲三類,屬主,屬組的用戶和其他用戶
從左到右,每三位分別代表三類用戶的權限
r:讀權限
w:寫權限
x:執行權限
-:代表沒有相應位置的權限
對於文件,讀寫執行分別代表的含義:
r:可用文件查看類工具獲取文件內容
w:可修改其內容,只有此權限時,不能查看再修改,但是可以用重定向修改
x:可以把文件提交給內核,啓動一個進程來執行
對於目錄來說,讀寫執行分別代表的含義:
r:可以數用ls查看此目錄中的文件列表
w:可以在目錄中創建/刪除文件
x:可以使用ls -l查看此目錄中文件列表的詳細信息,也可以用cd進入此目錄
Attention:對於某個用戶來說,目錄有w權限,無論裏面文件是否有w權限,都可被刪除
基本的文件權限就用這9位來表示,這樣將其功能位置固定,用10表示對應其功能開關,那麼就是一個9位的二進制數,再將每三爲捆綁加以區分對每類用戶的權限,這樣就可以清晰的看到每類用戶的權限了
e.g.rw-r----- 對應二進制 110 100 000 再將每三位捆綁 變成三位的八進制數。 640 屬主讀寫權限,屬組讀權限,其他無權限,這通常是一個文件的默認權限 目錄默認 755
3). 如果有此項,則代表該文件有selinux標籤,使用ll -Z查看,如果是目錄則用ll -dZ
Following the file mode bits is a single character that specifies
whether an alternate access method such as an access control list
applies to the file. When the character following the file mode
bits is a space, there is no alternate access method. When it is
a printing character, then there is such a method.
在文件權限位後面,附加有一個單字符。用來表示是否有一個
可替換的訪問控制措施應用在這個文件上。例如,訪問控制列表(ACL,access control list)。
當文件權限位後面附加的是一個空格時,表示系統沒有可替換的訪問控制措施。
當是一個可打印字符時,表示系統存在這樣一個訪問控制措施。
GNU `ls' uses a `.' character to indicate a file with an SELinux
security context, but no other alternate access method.
GNU的ls命令使用‘.’字符表示文件使用了selinux
安全上下文,但是沒有其他可替代的訪問控制措施
A file with any other combination of alternate access methods is
marked with a `+' character.
在使用SElinux安全上下文的同時,混用其他訪問控制措施的文件用+字符標記
4) 1代表硬鏈接或軟鏈接的數量(參見MyNewDocument/New_1/文件系統下/inode)
5)文件的屬主
6)文件的屬組
7)時間戳
8)文件或目錄名字
1.修改文件權限
chmod [option] OCTAL/MODE file/directory
-R 遞歸修改權限 修改目錄權限採用
OCTAL 八進制數,在上一節上中描述了八進制數的由來,跟此處的八進制數一致
chmod 644 file
將文件權限設爲644 即 rw- r-- r--
MODE [u,g,o] [+/-/=] [rwx]
u:代表要設置屬主權限
g: 代表要設置屬組權限
o:代表要設置其他權限
a:代表所有人
這三個可以組 例如 ug= uo+等
+:某一類用戶增加權限
-:某一類用戶減少權限
=:指定某一類用戶的權限
rwx:最多3位,要什麼權限就寫什麼權限,沒有不寫
這是基本權限位,除此還有st
chmod --reference=rfile file 依據rfile的權限來設置file的權限
小竅門:
設置一個目錄本身及目錄中的所有文件和目錄的權限,對於所有人來說,使文件具有讀寫權限,目錄具有讀寫執行權限
chmod -R a=rwX dir
只有x位有大寫的權限,除此之外,大寫,還有ST
2.改變文件的屬主和屬組
chown [option] [owner][:group] file
-R 遞歸修改
owner 只修改屬主
owner:Group 修改屬主和屬組
:group 修改屬組
Attention:“:”可以被.代替
chown --reference==rfile file 依據rfile的屬主屬組來設置file的屬主屬組
3.umask 參見 MyDocument/1/umask
4.特殊權限 SUID SGID Stickybit
1)安全上下文
前提:進程有屬主和屬組(但是沒有基本組和附加組的概念),文件有屬主和屬組
(1)任何一個可執行程序文件能不能啓動爲進程,取決於發起者對程序文件是否有執行權限
(2)執行文件啓動爲進程之後,其進程的屬主爲發起者,進程的屬組爲發起者的屬組
(3)進程訪問文件時的權限,取決於進程的發起者
(a)進程的發起者,就是文件的屬主,則應用文件屬主的權限
(b)進程的發起者,屬於文件的屬組,則應用文件屬組的權限
(c)應用文件“其他”權限
2)可執行文件上的SUID
(1)作用對象:二進制可執行文件
(2)標記,二進制可執行文件的屬主的執行權限位:
s:代表在設置SUID之前,這個二進制可執行文件屬主有x權限
S:代表在設置SUID之前,這個二進制可執行文件屬主沒有x權限
(3)意義:
任何一個可執行程序文件能不能啓動爲進程,取決於發起者對程序文件是否有執行權限
執行文件啓動爲進程之後,其進程的屬主不是發起者,而是可執行程序文件的屬主
以可執行二進制文件的屬主身份啓動進程,而後進程訪問的文件的權限,都要看二進制可執行文件的屬主,而非此二進制可執行文件的發起者(當前用戶)
(4)設置在目錄上無意義
chmod u+/-s file
3)SGID權限
(1)作用對象:二進制可執行文件或目錄
(2)標記,二進制可執行文件或目錄的屬組的執行權限位:
s:代表在設置SGID之前,這個二進制可執行文件或目錄的屬組有x權限
S:代表在設置SGID之前,這個二進制可執行文件或目錄的屬組沒有x權限
(3)意義:
(a)作用在二進制可執行文件上
任何一個可執行程序文件能不能啓動爲進程,取決於發起者對程序文件是否有執行權限
執行文件啓動爲進程之後,其進程的屬主不是發起者,而是可執行程序文件的屬組
以可執行二進制文件的屬主身份啓動進程,而後進程訪問的文件的權限,都要看二進制可執行文件的屬組,而非此二進制可執行文件的發起者(當前用戶)
(b)作用在目錄上
有這樣一種需求,有一組用戶加入了同一個組gp1,在磁盤上想創建一個目錄pub,作爲gp1組的公共目錄,每個人都可以在這個目錄中,增刪文件,修改組內成員的文件
mkdir pub
chown -R :gp1 pub
這樣組內成員都可以在pub中增刪文件,但創建的文件的屬組還是自己的屬組,也只能刪除自己的文件。
我們似乎可以這樣做
chown -R :gp1 pub
但是每每有人創建文件或目錄,管理員都要執行此操作,實在顯得有些難堪
那麼這就是目錄上SGID的發揮的地方了
默認情況下,在某目錄中,用戶創建文件或目錄時,其屬組爲用戶的屬組
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶(可能是目錄的屬主,屬組用戶,或其他用戶)在此目錄中,創建的文件或子目錄所屬的組爲此目錄的屬組,而權限要應用對應用戶的umask,
Attention:子目錄繼承sgid,且目錄(也就是前面子目錄的父目錄)設置sgid之前,其目錄內已存在的文件或目錄不會的屬組不會被修改,sgid權限也不會被修改(特指已存在的目錄)
(4)設置權限
chmod g+/-s DIR/file
4)Sticky
(1)作用對象:目錄
(2)標記目錄的其他用戶的執行權限位:
x:代表在設置sticky之前,這個目錄的屬組有x權限
X:代表在設置sticky之前,這個目錄的屬組沒有x權限
(3)意義:
通常,對於某目錄,用戶有寫權限,那麼這個用戶就可以刪除該目錄下的任意文件或目錄(包括root的文件或目錄)
在目錄上設置sticky位,只有文件或目錄的所有者或root可以刪除文件或目錄,但是否能修改爲文件和目錄,還是要看這個文件和目錄對於用戶來說有無權限,
Attention:設置了sticky位的目錄的子目錄不繼承sticky
sticky設置在文件上無意義
(4)設置權限
chmod o+/- dir
5)特殊權限的數字表示法
三個特殊權限的二進制位,組成了一個8進制數,在數字表示法中放在普通權限前面
如chmod 4640 file 代表給文件設置了suid
5.另外的特定屬性
chattr +i file 不能刪除,改名和更改
dir 不能刪除,改名和創建和刪除文件
chattr +a file/dir 只能增加
lsattr 顯示這裏的特定屬性
Attention:這個屬性和cp --preserve=xattr中的xattr不是一回事