2.18 特殊權限set_uidnode
在Linux系統中每一個普通用戶均可以更改本身的密碼,這是合理的設置。在修改密碼的時候,都會用一個命令就是passwd,能夠看一下命令在哪一個文件:linux
[root@centos7 ~]# which passwd /usr/bin/passwd #這個就是passwd命令的路徑
查看一下文件的權限:centos
能夠看到 /usr/bin/passwd 是標紅的,能夠看權限位 -rws 有一個s權限。s就是set_uid 。而在linux下passwd也支持普通用戶,修改本身的密碼。在此就有一個問:普通用戶爲何能夠改它?bash
用戶的密碼保存在文件/etc/shadow中,也就是說用戶更改本身密碼時是修改了/etc/shadow文件中的加密密碼。併發
查看一下/etc/shadow 文件的權限app
[root@centos7 ~]# ls /etc/shadow /etc/shadow [root@centos7 ~]# ls -l !$ ls -l /etc/shadow ----------. 1 root root 730 10月 24 19:41 /etc/shadow
從上能夠看到,/etc/shadow 文件的權限更高級。而root用戶是超級管理員用戶,有set_uid權限,文件的全部者是root用戶。其實普通用戶在使用passwd 這命令的時候,當即就會把root的權限授予給普通用戶,讓其臨時擁有root用戶全部者的權限。前提這個文件二進制的文件,而且可執行的文件。ide
怎麼給文件受權 set_uid權限呢?
ui
chmod u+s 文件名
加密
實例以下:centos7
給ls命令加set_uid權限
user普通用戶 能夠用ls 查看/root/
#去除權限 chmod u-s /usr/bin/ls #或者 chmod u=rws /usr/bin/ls 可是查看權限能夠看出是 大寫 S ,加了x 就變成小寫 s
2.19 特殊權限set_gid
默認狀況下,用戶A在目錄所屬組B裏面新建目錄或文件,該文件或目錄的所屬用戶爲A,所屬的組爲用戶A所在的組;
設置權限方式跟 set_uid 同樣,只是做用在所屬組上。
從上能夠看到加 set_gid 權限的文件是×××
當給ls命令加了 set_gid 權限後,普通用戶也能夠看到root下的文件
[user@centos7 ~]$ ls /root/ anaconda-ks.cfg
[user@centos7 ~]$ ls -ld /root/ dr-xr-x---. 2 root root 135 10月 25 20:57 /root/
經過上述的權限查看,/root/ 全部組的權限是 讀 和 執行 ,因此普通用戶能夠用ls命令查看/root/
小結:
能夠做用到二進制可執行文件和目錄上
能夠做用到目錄的子文件或子目錄上
新建的文件或目錄,所屬組的權限跟着父及目錄權限一直
2.20 特殊權限stick_bit
該特殊權限針對目錄設置
從單詞字面上理解,叫粘滯位。就像被膠水粘住同樣,全部也叫作防刪除位,目的是爲了防止被別的用戶刪除(PS: root 用戶除外,它是超級管理員,防止不了)
系統自己有一個目錄,就帶有這樣的權限
從權限位看到 帶 t,這個就是stick_bit
1.爲何會有stick_bit權限
咱們知道/tmp是系統的臨時文件目錄,全部的用戶在該目錄下擁有全部的權限,也就是說在該目錄下能夠任意建立、修改、刪除文件,那若是用戶A在該目錄下建立了一個文件,用戶B將該文件刪除了,這種狀況咱們是不能容許的。爲了達到該目的,就出現了stick bit(粘滯位)的概念。它是針對目錄來講的,若是該目錄設置了stick bit(粘滯位),則該目錄下的文件除了該文件的建立者和root用戶能夠刪除和修改 . /tmp目錄下的文件/目錄,均不能動別人的,這就是粘滯位的做用。
2.設置stick_bit權限
語法:chmod o+t 目錄 OR chmod o+t /tmp/111/
#建立實例以下: [user@linux1 tmp]$ chmod o+t b [user@linux1 tmp]$ ls -ld b drwxrwxr-t. 2 user user 6 10月 27 09:56 b #取消 stick_bit 權限 實例以下: [user@linux1 tmp]$ chmod o-t b [user@linux1 tmp]$ ls -ld b drwxrwxr-x. 2 user user 6 10月 27 09:56 b
2.21 軟連接文件
建立軟鏈接的方式
軟鏈接的實例
#ln -s /目標文件 /目錄/目標文件
軟鏈接用法:
相對路徑,在當前目錄下A文件 軟鏈接B文件(弊端:改變一個名字或移動會影響使用效果,因此建議選擇絕對路徑。)
建立軟鏈接是鏈接文件自己,能夠跨分區創建軟鏈接,不會應爲不一樣分區而出現不能使用的問題。
在建立軟鏈接的文件中,修改一處文件另外一處同時發生修改,當刪除軟鏈接對象時,不影響源文件使用,當刪除源文件後,鏈接對象失去做用
2.22 硬鏈接文件
建立硬鏈接的方式
#ln 目標文件 /目錄/文件
#實例: [root@linux1 a]# touch 1.txt [root@linux1 a]# ln 1.txt 2.txt #建立硬鏈接 [root@linux1 a]# ls -l -rw-r--r--. 2 root root 0 10月 27 09:31 1.txt -rw-r--r--. 2 root root 0 10月 27 09:31 2.txt [root@linux1 a]# ls -li #兩個iNode號是相同的 總用量 0 50949295 -rw-r--r--. 2 root root 0 10月 27 09:31 1.txt 50949295 -rw-r--r--. 2 root root 0 10月 27 09:31 2.txt
當編輯 2.txt文件的時候,並保存
能夠看到 vi 1.txt 文件是能夠編輯,並發現跟2.txt文件的內容同樣。
小結:
硬鏈接在文件中使用inode號鏈接,兩個鏈接文件同事使用一個inode號進行文件表示,一處文件修改,修改針對文件底層數據塊修改,兩個文件同時修改內容
刪除一處文件,不會影響另外一處文件的使用。由於硬鏈接使用inode號鏈接,因此只能在同分區能使用,不能跨分區使用。