set_uid、set_gid、stick_bit、軟連接和硬鏈接文件

9月17日任務node

2.18 特殊權限set_uidcentos

2.19 特殊權限set_gidbash

2.20 特殊權限stick_bitssh

2.21 軟連接文件ui

2.22 硬鏈接文件centos7

 

特殊權限

set_uid

設置了set_uid的二進制文件,其餘用戶執行時,將臨時擁有該文件全部者的權限,以此執行!最經常使用的命令passwd的二進制文件就被賦予了set_uid特殊權限!spa

設置set_uid的前提:必須是 二進制可執行文件目錄無效3d

在u的權限組內沒有x權限時,設置set_uid後s位將變爲大寫(S)。code

#未設置set_uid,普通用戶查看/root目錄
[castiel@centos7 ~]$ /usr/bin/ls /root
/usr/bin/ls: 沒法打開目錄/root: 權限不夠

#設置set_uid後,能夠以root權限查看/root
[root@centos7 ~]# chmod u+s /usr/bin/ls
[root@centos7 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 ... /usr/bin/ls
[root@centos7 ~]# su - castiel
[castiel@centos7 ~]$ /usr/bin/ls /root
111  anaconda-ks.cfg
[root@centos7 ~]# ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 ... /usr/bin/ls

set_gid

設置了set_gid的文件執行時將擁有文件所屬組(group)的權限。進程

此外對目錄設置set_gid後,執行時當前命令的用戶的所屬組將會成爲在該目錄下新建立的文件、目錄的所屬組(group),

沒有設置的其內文件的所屬組是當前用戶的所屬組。

[root@centos7 tmp]# mkdir test
[root@centos7 tmp]# ls -ld test/
drwxr-xr-x. 2 root root 6 ... test/
[root@centos7 tmp]# chown :castiel test/
[root@centos7 tmp]# ls -ld test/
drwxr-xr-x. 2 root castiel 6 ... test/

# 未設置前建立目錄和文件,與後續進行對比
[root@centos7 tmp]# mkdir test/111
[root@centos7 tmp]# touch test/222.txt

#設置set_gid,隨後建立新目錄和文件
[root@centos7 tmp]# chmod g+s test/
[root@centos7 tmp]# mkdir test/333/
[root@centos7 tmp]# touch  test/444.txt

[root@centos7 tmp]# ls -l test/
總用量 0
drwxr-xr-x. 2 root root    6 ... 111
-rw-r--r--. 1 root root    0 ... 222.txt
drwxr-sr-x. 2 root castiel 6 ... 333
-rw-r--r--. 1 root castiel 0 ... 444.txt

# 一樣的去除掉group內的x權限,set_gid位顯示爲S.
[root@localhost system]# chmod g-x /test
[root@localhost system]# chmod g+s /test
[root@localhost system]# ls -ld /test
drwxr-Sr-x. 2 root root 6 ... /test

sticky_bit

防刪除位,對一個目錄設置sticky_bit後,一個用戶將沒法刪除目錄內其餘用戶建立的文件!(root用戶除外)

正常狀況下,只要用戶對該父目錄擁有x權限,就能夠刪除目錄下的文件、子目錄,不須要關心用戶對文件、子目錄是否擁有x權限!

添加了sticky_bit權限後,能夠防止其餘用戶誤刪。

[root@centos7 test]# ls -ld /test/
drwxr-xr-x. 2 root root 16 ... /test/

# 添加sticky_bit位
[root@centos7 test]# chmod o+t /test/
[root@centos7 test]# ls -ld /test/
drwxr-xr-t. 2 root root 16 ... /test/

# 一樣的當沒有x權限,sticky_bit顯示爲T
[root@localhost system]# chmod o-x /test
[root@localhost system]# chmod o+t /test
[root@localhost system]# ls -ld /test
drwxr-xr-T. 2 root root 6 ... /test

軟連接

軟連接文件至關於Windows下的快捷方式,文件類型爲l。 系統目錄/bin/目錄就是/usr/bin/目錄的軟鏈接

使用方法:ln -s 目標文件/目錄 軟連接

優缺點

  • 好處:佔用內存小

  • 缺點:源文件/目錄被刪除或移動,軟連接將失效

修改軟連接文件的內容的實質爲修改源文件,軟連接是對其的引用!建立軟連接最好使用絕對路徑,不易出錯!

實用場景

對於一個空間很少的分區,若是有一個文件被進程所使用致使所佔空間不斷變大,這時若是不想該分區被數據寫滿,

能夠先將該文件拷貝到其餘大空間分區,並在原分區內建立軟連接!!而後刪除原處文件,原進程不受影響

[root@centos7 test]# ls -l /bin
lrwxrwxrwx. 1 root root 7 ... /bin -> usr/bin

硬連接

使用方法: ln 源文件 硬鏈接文件

硬連接是對同一個文件所在內存地址的引用(inode號相等),硬連接和原文件互爲硬連接!

  • 刪除其中一個文件,另外的文件不受影響!

  • 修改其中一個文件,另外的文件內容也變化!

硬連接沒法跨分區建立(多個分區有相同inode號,任意弄混)

關於目錄

!!不能對目錄設置硬連接

新建立的硬連接不會佔用額外的空間!!由於其空間在建立源文件的時候就已經佔用了,

對應於系統內的特定內存地址,硬連接只是是對該內存地址的引用

[root@centos7 ~]# ls -ld .
dr-xr-x---. 3 root root 173 ... .

[root@centos7 ~]# ls -ild . /root/ /root/.ssh/..
16797761 dr-xr-x---. 3 root root 173 ... .
16797761 dr-xr-x---. 3 root root 173 ... /root/
16797761 dr-xr-x---. 3 root root 173 ... /root/.ssh/..

對於一個目錄而言,其內包含的3個子目錄均可以表示該目錄,
對目錄設置硬連接會產生循環建立,陷入死循環!
[root@centos7 test]# ls -li
總用量 8
8812615 -rw-r--r--. 2 root root 8 ... 1.txt
8812615 -rw-r--r--. 2 root root 8 ... 2.txt
[root@centos7 test]# du -sh /test/
4.0K    /test/
[root@centos7 test]# du -sh 1.txt
4.0K    1.txt
[root@centos7 test]# du -sh 2.txt
4.0K    2.txt
相關文章
相關標籤/搜索