CentOS許可權詳解整理
一、Linux檔案屬性結構格式(以root使用者家目錄為例)
[root@localhost ~]# ls -l #顯示檔案名稱與相關屬性命令
total 120
drwxr-xr-x 2 root root 4096 Dec 10 07:57 07:57:04
drwxr-xr-x 2 root root 4096 Dec 10 07:57 10
drwxr-xr-x 2 root root 4096 Dec 10 07:57 2015
-rw-------. 1 root root 2454 Dec 6 22:43 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Dec 10 07:57 CST
drwxr-xr-x 2 root root 4096 Dec 10 07:57 Dec
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Desktop
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Documents
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Downloads
-rw-r--r--. 1 root root 45098 Dec 6 22:43 install.log
-rw-r--r--. 1 root root 9963 Dec 6 22:39 install.log.syslog
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Music
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Pictures
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Public
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Templates
drwxr-xr-x 2 root root 4096 Dec 6 22:50 Videos
【顯示格式】:
總量:
類型和許可權串連數所有者使用者組檔案大小修改日期檔案名稱
1.total:所列出內容的磁碟佔用空間總和值(kbytes為單位)
表示該目錄的大小,不完全解釋:該目錄下所有檔案及目錄列表第五欄位的和
注意:不一定等於相加,此數字為佔用blocksize的整數倍,和佔用block個數有關
2.類型和許可權(permission):十位分四段表示
(1)檔案類型:
-:常規檔案;即f,file;
d: directory,目錄檔案;
b: block device,塊裝置檔案,支援以“block”為單位進行隨機訪問,如硬碟、磁碟片...
c:character device,字元裝置檔案,支援以“character”為單位進行線性訪問
序列埠接收裝置,一次性讀取,如鍵盤、滑鼠...,用主、次裝置號表示
major number:主裝置號,用於標識裝置類型,進而確定要載入的驅動程式
minor number:次裝置號,用於標識同一類型中的不同的裝置;
l:symbolic link,符號連結檔案;類似於Windows下的捷徑
p: pipe,具名管道;解決多個程式訪問一個檔案所造成的錯誤,FIFO(first-in-first-out)
s: socket,通訊端檔案;通常被用在網路上的資料連線,
(2)許可權組合機制:(8bites二進位)
第二道十個字元:每三個為一組,均為'rwx'三個參數組合
rwxrwxrwx每個位置固定不定,若無則為空白,用'-'符號表示
r:readable, 讀;w:writable, 寫;x:excutable,執行
r=4 w-2 x=1 -=0
【檔案目錄所屬】
檔案擁有者:檔案本身所歸屬使用者
檔案所屬使用者組:和檔案擁有者通使用者組
其他人:其他非本使用者組的人員
3.串連數:硬串連數量,表示有多少個檔案名稱串連到此節點(i-node)
(1)永久連結:通過不同的名稱(路徑)指向同一個inode的串連方式
inode號相同,大於一個
1)僅能股對檔案建立,不能對目錄建立
2)所建立的永久連結,不能夠跨檔案系統,但時能夠在不同的目錄下
3)建立時增加檔案被串連次數,即為此處ls -l第二欄位數字
4)cp會付支出新的inode和block,永久連結的inode不同,但時block相同
(2)軟串連:類似Widows下捷徑,儲存為其他路徑directory
1)大小為路徑的字元個數
2)可用於目錄,不會增加檔案被串連次數
3)可以跨檔案系統
4)所建立的軟串連的許可權為777,但時實際存取權限與被連結檔案自身許可權相關
4.所有者:該檔案或者目錄的所屬的帳號
5.所屬組:該檔案或者目錄的所屬的帳號所在的基本組
6.容量大小:預設單位為B
常規類型檔案大小:
目錄類型檔案大小:目錄自身的大小,為佔用幾個block的大小
連線類型檔案大小:串連檔案名稱字元個數所佔大小
7.修改日期:該檔案的建立日期或者最近的更改日期
顯示完整的時間格式:ls -l --full-time
Linux上的三種時間戳記:
access time:訪問時間,查看該檔案後所記錄下來的時間
modify time:內容資料時間,檔案內容資料發生改變,一些log檔案增加
change time:狀態時間,如許可權數顯更改發生改變,status time
8.檔案名稱:檔案名稱
如果檔案名稱之前多了一個".",則表示隱藏檔案
二、檔案目錄許可權存取控制
1.Linux進程對檔案存取權限應用程式模型
進程安全上下文:
進程的屬主與檔案的屬主是否相同;如果相同,則應用屬主許可權;
否則,則檢查進程的屬主是否屬於檔案的屬組;如果是,則應用屬組許可權;
否則,就只能應用other的許可權;
2.許可權對檔案和目錄不同的含義
(1)對於檔案的含義
r:可擷取檔案的資料;可以使用類似於cat命令查看檔案內容
w: 可修改檔案的資料;可以編或者刪除此檔案
x:可將此檔案運行為進程;可以在命令提示字元下當做命令提交給核心運行
(2)對於目錄的含義
r:可使用ls命令擷取其下的所有檔案清單;
w: 可修改此目錄下的檔案清單;即建立或刪除檔案;
x: 可cd至此目錄中,且可使用ls -l來擷取所有檔案的詳細屬性資訊;
三、許可權管理命令
1.chmod:變更檔目錄許可權
使用者類型:u:屬主g:屬組o:其它a: 所有
(1)chmod [OPTION]...MODE[,MODE]... FILE…
1)賦權標記法:直接操作一類使用者的所有許可權位rwx.
用等號表示:[u|g|o|a]=rwx中的一位或者多位
2)授權標記法:直接操作一類使用者的一個許可權位r,w,x
用加減號表示:[u|g|o|a][+|-]rwx
(2)chmod [OPTION]...OCTAL-MODE FILE…
直接使用三位元字的方式給檔案目錄增加許可權,分別表示所有者、所屬組、其他人的許可權
數位表示方法同上:8bites二進位表示許可權的組合機制
r=4 w-2 x=1 -=0三位相加
(3)chmod [OPTION]...--reference=RFILE FILE…參照某個檔案的許可權來進行授權操作
-R, --recursive:遞迴修改
注意:普通使用者僅能修改屬主為自己的那些檔案的許可權;root可以更改所有使用者
2.chown:變更檔目錄的所有者,也可以更改所屬組
(1)chown [OPTION]... [OWNER][:[GROUP]] FILE…
1)僅更改使用者的所有者
2)所有者:所屬組,可以同時更改
所有者.所屬組,也可以上述操作,但小心檔案名稱中有.系統識別錯誤
(2)chown [OPTION]... --reference=RFILE FILE…參照某個檔案的許可權來進行授權操作
-R:遞迴修改
3.chgrp:變更檔目錄的所屬組
(1)chgrp [OPTION]... GROUP FILE…更改所屬組
(2)chgrp [OPTION]... --reference=RFILE FILE…
參照某個檔案的許可權來進行授權操作
4.install:複製和設定屬性許可權copy files and set attributes
(1)單源複製:
install [OPTION]... [-T] SOURCE DEST
(2)多源複製:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE…
(3)建立目錄:
install [OPTION]... -d DIRECTORY...
(4)OPTIONS:
-m, --mode=MODE:設定目標檔案許可權,預設為755;
-o, --owner=OWNER:設定目標檔案屬主;
-g, --group=GROUP:設定目標檔案屬組;
5.umask:檔案的許可權反向掩碼,遮罩碼
(1)umask:查看當前umask
系統預設為:0022表示特殊許可權、所有者許可權、所有組許可權、其他人許可權
更改預設設定位置:/etc/login.defs
(2)對檔案目錄的umask操作
1)檔案:666-umask,檔案預設不能擁有執行許可權
如果減得的結果中有執行許可權,則需要將其加1
2)目錄:777-umask
四、特殊許可權
1.SUID:運行某程式時,相應進程的屬主是程式檔案本身的屬主
chmod u+s FILE增加SUID許可權
chmod u+s FILE刪除SUID許可權
如果FILE本身就有可執行許可權,則SUID顯示為a,否則為S
2.SGID:運行程式時,相應進程的屬組是程式檔案自身的屬組,而不是啟動者所屬屬組
chmod g+s FILE
chmod g-s FILE
3.sticky:在一個公用目錄,每個使用者都可以建立檔案,刪除檔案,但不能刪除別人的
注意:該許可權僅能針對目錄Directory
chmod o+t DIR
chmod o-t DIR
4.SUID、SGID僅能對檔案操作,sticky僅能對目錄操作
SUID=w SGID=2 sticky=1
五、關於許可權問題的一些問題思考與驗證
思考:使用者對目錄有寫入權限,但對目錄下的檔案沒有寫入權限時,能否修改此檔案內容?能否刪除此檔案?能否用vim修改
1.當屬主和屬組相同時:都是gentoo,用gento操作
1)切換到普通使用者gentoo,在/tmp下建立測試目錄test和測試檔案test.txt
[root@localhost ~]# su - gentoo
[gentoo@localhost ~]$ cd /tmp
[gentoo@localhost tmp]$ mkdir test
[gentoo@localhost tmp]$ touch test/test.txt
2)更改許可權,確保前提目錄test有寫入權限,檔案test.txt沒有寫入權限
[gentoo@localhost tmp]$ ll | grep test
drwxrwxr-x 2 gentoo gentoo 4096 Dec 12 10:19 test
[gentoo@localhost tmp]$ cd test
[gentoo@localhost test]$ chmod 500 test.txt
[gentoo@localhost test]$ ll
total 0
-r-x------ 1 gentoo gentoo 0 Dec 12 10:19 test.txt
3)用echo寫入命令寫入
[gentoo@localhost test]$ echo 'hello' > test.txt
-bash: test.txt: Permission denied
4)嘗試用vim寫入操作
[gentoo@localhost test]$ vim test.txt
-- INSERT -- W10: Warning: Changing a readonly file
退出強制儲存
E45: 'readonly' option is set (add ! to override)
結果可以寫入,檔案屬主、屬組、許可權都沒改變
2.當屬主和屬組不同時:檔案屬主是gentoo,屬組是slckware,用gentoo使用者操作
1)同上操作在/tmp/test下建立測試檔案test1,更改許可權和屬組為slackware
2)用echo寫入命令寫入
[gentoo@localhost test]$ echo 'hello' > test1
-bash: test1: Permission denied
3)嘗試用vim寫入操作
[gentoo@localhost test]$ vim test.txt
-- INSERT -- W10: Warning: Changing a readonly file4
強制退出並儲存
E45: 'readonly' option is set (add ! to override)
結果可以寫入,檔案屬主、屬組、許可權都沒改變
3.當屬主和屬組不同時:檔案屬主是gentoo,屬組是slckware,用slckware使用者操作
[root@localhost test]# chmod g+r test1
[root@localhost test]# su - slackware
[slackware@localhost ~]$ cd /tmp/test
[slackware@localhost test]$ ll
total 4
-r-xr----- 1 gentoo slackware 7 Dec 12 11:11 test1
[slackware@localhost test]$ vim test1
[slackware@localhost test]$ ll
total 4
-r-xr----- 1 slackware slackware 21 Dec 12 11:17 test1
結論:
1.情況一和情況二所得結論相同:都不能echo寫入修改檔案內容,但是結果可以寫入,而檔案屬主、屬組、許可權均未發生改變
2.情況三,不同的使用者在沒有寫入權限的情況下對其組內的其他使用者檔案進行操作,echo不能寫入
但時vim可以強制寫入,但此時檔案已經不是原來檔案,覆蓋寫入,屬主發生變化。
slackware作為普通使用者,沒有chown許可權,可能為vim的記憶體空間重新寫入覆蓋檔案
此時,檔案許可權沒變,屬主發生變化