本節所講內容:
- 文件的基本權限:r w x (UGO+ACL)
- 文件的高級權限:suid sgid sticky
第1章 文件的基本權限
1.1 權限的作用
通過對文件設定權限可以達到以下三種訪問限制權限:
- 只允許用戶自己訪問;
- 允許一個預先指定的用戶組中的用戶訪問;
- 允許系統中的任何用戶訪問。
1.2 查看文件權限
我們可以通過ls命令來查看一個文件的具體信息,加參數 –l 可以查看這個文件的權限信息
文件權限基本解釋:
-
rwx
r-x
r-x
user1
group
time
FILENAME
文件類型
擁有者的權限
所屬組的權限
其他人的權限
擁有者
屬組
最後修改時間
對象
其中:文件類型,可以為p、d、l、s、c、b和 –
- p表示命名管道文件
- d表示目錄文件
- l表示符號連接文件
- -表示普通文件
- s表示socket套接口文件,比如我們啟用mysql時,會產生一個mysql.sock文件
- c表示字符設備文件
- b表示塊設備文件
1.4 文件擁有者
所有者(屬主)-用戶組(屬組)-其他用戶
所有者: 就是創建文件的用戶,這個用戶擁有對它所創建的文件的一切權限,所有者可以允許其所在的用戶組可以訪問所有者的文件。
用戶組: 用戶組是具有相同特徵用戶的邏輯集合,有時我們需要讓多個用戶具有相同的權限,比如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,如果有10個用戶的話,就需要授權10次,顯然這種方法不太合理;另一種方法是建立一個組,讓這個組具有查看、修改此文件的權限,然後將所有需要訪問此文件的用戶放入這個組中,那麼所有用戶就具有了和組一樣的權限。這就是用戶組。
其它用戶:系統內的其他所有者用戶就是other用戶類
1.5 舉例說明
1.5.1 常見幾種文件權限組成
- -rwx------:文件所有者對文件具有讀取、寫入和執行的權限。
- -rwxr--r--: 文件所有者具有讀、寫與執行的權限,用戶組裡用戶及其他用戶則具有讀取的權限
- -rw-rw-r-x:文件所有者與同組用戶對文件具有讀寫的權限,而其他用戶僅具有讀取和執行的權限。
- drwx--x--x: 目錄所有者具有讀寫與進入目錄的權限,其他用戶近能進入該目錄,卻無法讀取任何數據。
- drwx------: 除了目錄所有者具有完整的權限之外,其他用戶對該目錄完全沒有任何權限。
1.5.2 舉例如下:
每個用戶都擁有自己的專屬目錄,默認放置在/home目錄下
這些專屬目錄的默認權限為【rwx------】表示目錄所有者本身具有所有權限,其他用戶無法進入該目錄,如下圖所示
1.5.2 更改文件的屬主和屬組
用到的命令:chown chgrp 如果對目錄操作 -R
==》chown
語法:
- chown user:group 對象
- chown user 對象
- chown :group 對象
- -R :遞歸(目錄下的所有內容全部更改,否則只修改目錄)
[root@panda home]# chown harry test.txt ----只改文件的屬主
[root@panda home]# chown :market test.txt ---只改文件的屬組
[root@panda home]# chown xuegod-2:xuegod-4 test.txt ---改文件的屬主、屬組
[root@panda home]# chown -R harry:market /backup
==》chgrp
[root@panda home]# chgrp alice-2 test.txt ----n=改文件的屬組
1.6 修改權限
1.6.1使用符號
修改權限的用到的命令:chmod
作用:修改文件、目錄權限
用法:(中間的+、-、=表示添加還是刪除該用戶的對應權限)
u-w
user
擁有者
g+x
group
組
o=r
other
其他人
a+x
all
所有人
[root@panda mnt]# chmod u-w a.txt -----屬主刪除寫權限
[root@panda san]# chmod g+x b.txt ----屬組添加執行權限
[root@panda san]#chmod a=rwx file1 ----所有人等於讀寫執行
[root@panda san]#chmod a=- file1 ----所有人沒有權限
[root@panda san]#chmod ug=rw,o=r file1 ----屬主屬組等於讀寫,其他人只讀
查看修改的權限可以用ls –l 或 stat
1.6.2 使用數字
rwx
r--
-w-
--x
100
010
001
二進制
4
2
1
十進制
組合
值
u=rw
4+2=6 u=6
g=rx
4+1=5 g=5
rw-r--r--
rw-=6 r--=4 r--=4 rw-r—r--=644
擴展示例如下
建一個目錄TEST,要求如下:
1、root用戶和test用戶可以讀寫執行 2、其他用戶沒有任何權限
1.7 權限對文件和目錄的影響
有三種權限可以應用:讀取,寫入與執行,這些權限對訪問文件和目錄的影響如下:
權限
對文件的影響
對目錄的影響
r(讀取)
可以讀取文件的內容
可以列出目錄的內容(文件名)
w(寫入)
可以更改文件的內容
可以創建或刪除目錄中的任意文件
x(執行)
可以作為命令執行文件
可以訪問目錄的內容(取決於目錄中文件的權限)
- 對文件的影響
[root@panda ~]#
[root@panda ~]# mkdir /dir1
[root@panda ~]# touch /dir1/file1
[root@panda ~]# chmod 777 /dir1/file1
[root@panda ~]# ll /dir1/file1
-rwxrwxrwx. 1 root root 0 Sep 11 01:59 /dir1/file1
[root@panda ~]# ll -d /dir1/
drwxr-xr-x. 2 root root 18 Sep 11 01:59 /dir1/
[root@panda ~]# su - harry
Last login: Mon Sep 11 01:44:26 CST 2017 on pts/0
[harry@panda ~]$ cat /dir1/file1
[harry@panda ~]$ rm -f /dir1/file1
rm: cannot remove ‘/dir1/file1’: Permission denied
- 對目錄的影響
[root@panda ~]#
[root@panda ~]# ll -d /dir1
drwxr-xr-x. 2 root root 18 Sep 11 01:59 /dir1
[root@panda ~]# chmod 777 /dir1/
[root@panda ~]# ll -d /dir1
drwxrwxrwx. 2 root root 18 Sep 11 01:59 /dir1
[root@panda ~]# ll /dir1/file1
-rwxrwxrwx. 1 root root 0 Sep 11 01:59 /dir1/file1
[root@panda ~]# chmod 000 /dir1/file1
[root@panda ~]# ll /dir1/file1
----------. 1 root root 0 Sep 11 01:59 /dir1/file1
[root@panda ~]# su - harry
Last login: Mon Sep 11 02:00:46 CST 2017 on pts/0
[harry@panda ~]$ cat /dir1/file1
cat: /dir1/file1: Permission denied
[harry@panda ~]$ rm -f /dir1/file1
[harry@panda ~]$ touch /dir1/file2
[harry@panda ~]$ ls /dir1/
file2
1.8 補碼
為什麼我們創建的文件的權限是644呢?
我們創建文件的默認權限是怎麼來的?
如何改變這個默認權限呢?
umask命令允許你設定文件創建時的缺省模式,對應每一類用戶(文件屬主、同組用戶、其他用戶)存在一個相應的umask值中的數字
對於文件來說,這一數字的最大值分別是6;系統不允許你在創建一個文本文件時就賦予它執行權限,必須在創建後用chmod命令增加這一權限(為了安全考慮)
4 2
對於目錄來說,則允許設置執行權限,這樣針對目錄來說,umask中各個數字最大可以到7
umask設置了用戶創建文件的默認權限,它與chmod的效果剛好相反.;umask設置的是權限“補碼”,而chmod設置的是文件權限碼。我們只要記住umask是從權限中拿走相應的位即可 。如:umask值為022,則默認目錄權限為755,默認文件權限為644
該命令的一般形式為:umask nnn
其中nnn為umask值000 – 777umask設置了用戶創建文件的默認權限,它與chmod的效果剛好相反.;umask設置的是權限“補碼”,而chmod設置的是文件權限碼。我們只要記住umask是從權限中拿走相應的位即可 。如:umask值為022,則默認目錄權限為755,默認文件權限為644
我們一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設置umask值。
計算方法:
文件默認權限=666-umask值 666-022=644
目錄默認權限=777-umask 值 777-022=755
Umask表示的是要減掉的權限
永久生效,編輯用戶的配置文件vim .bash_profile
第2章 特殊權限
其實文件與目錄設置不止這些,還有所謂的特殊權限。由於特殊權限會擁有一些“特權”.
因而用戶若無特殊需求,不應該啟用這些權限,避免安全方面出現嚴重漏洞,造成入侵,甚至摧毀系統!!!
特殊權限:
- SUID(set uid設置用戶ID):限定:只能設置在二進制可執行程序上面。對目錄設置無效
功能:程序運行時的權限從執行者變更成程序所有者
- SGID:限定:既可以給二進制可執行程序設置,也可以對目錄設置
功能:在設置了SGID權限的目錄下建立文件時,新創建的文件的所屬組會 繼承上級目錄的所屬組
- Stickybit:粘滯位權限是針對目錄的,對文件無效,也叫防刪除位
- s對應的數值為
SUID
SGID
Stickybit
u=4、u+s
g=2、g+s
o=1、o+t
2.1.3 粘滯位舉例如下:
SBIT(Sticky):只針對目錄有效,對文件無效,作用是防止別人刪除掉對方的資料,防止用戶自己的文件被別的用戶誤刪除
[root@panda ~]# mkdir /tencent
[root@panda ~]# chmod 1777 /tencent/
[root@panda ~]# su - test
Last login: Tue Oct 11 20:12:57 CST 2016 on pts/2
[test@panda ~]$ cd /tencent/
[test@panda tencent]$ touch aa
[test@panda tencent]$ touch bb
[test@panda tencent]$ exit
logout
切換用戶
[root@panda ~]# su - xiaobai
Last login: Tue Oct 11 20:11:14 CST 2016 on pts/2
[xiaobai@panda ~]$ cd /tencent/
[xiaobai@panda tencent]$ touch cc
[xiaobai@panda tencent]$ touch dd
[xiaobai@panda tencent]$ ll
total 0
-rw-rw-r--. 1 test test 0 Oct 11 20:14 aa
-rw-rw-r--. 1 test test 0 Oct 11 20:14 bb
-rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 cc
-rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 dd
[xiaobai@panda tencent]$ rm -f aa
rm: cannot remove ‘aa’: Operation not permitted --提示沒有權限
[xiaobai@panda tencent]$ exit
logout
這就是sticky位的功能
閱讀更多 攻防基地 的文章