1.10 特殊權限及軟硬鏈接文件介紹

2.18 特殊權限set_uidnode


在Linux系統中每一個普通用戶均可以更改本身的密碼,這是合理的設置。在修改密碼的時候,都會用一個命令就是passwd,能夠看一下命令在哪一個文件:linux

[root@centos7 ~]# which passwd
/usr/bin/passwd                #這個就是passwd命令的路徑

查看一下文件的權限:centos

c622d7172d92f69dcac5178ae482dfc5.png-wh_

能夠看到 /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權限

eb806791bdf676fe6431885d989587e7.png-wh_

user普通用戶 能夠用ls 查看/root/

f683e92625bb7eafc0c6626a2a99ccf9.png-wh_

#去除權限 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 同樣,只是做用在所屬組上。

9f14c13427550f930bb368b5cb4abaef.png-wh_

從上能夠看到加 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/

小結

  1. 能夠做用到二進制可執行文件和目錄上

  2. 能夠做用到目錄的子文件或子目錄上

  3. 新建的文件或目錄,所屬組的權限跟着父及目錄權限一直

2.20 特殊權限stick_bit


該特殊權限針對目錄設置

從單詞字面上理解,叫粘滯位。就像被膠水粘住同樣,全部也叫作防刪除位,目的是爲了防止被別的用戶刪除(PS: root 用戶除外,它是超級管理員,防止不了)

系統自己有一個目錄,就帶有這樣的權限

81ddd4913adccba0a76c830e5bd3057e.png-wh_

從權限位看到 帶 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 軟連接文件


建立軟鏈接的方式

軟鏈接的實例

dc6976ec15c8334c331a6b51256b4819.png-wh_

#ln -s /目標文件 /目錄/目標文件 

480defa45856e41a2ed42353b61c5fca.png-wh_

軟鏈接用法:

    相對路徑,在當前目錄下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文件的時候,並保存

553dd3a4978ef02a317962362243c0a1.png-wh_

能夠看到 vi 1.txt 文件是能夠編輯,並發現跟2.txt文件的內容同樣。

c3bbf1f3da4b7f2a3db6721f5671204c.png-wh_

小結:

硬鏈接在文件中使用inode號鏈接,兩個鏈接文件同事使用一個inode號進行文件表示,一處文件修改,修改針對文件底層數據塊修改,兩個文件同時修改內容

刪除一處文件,不會影響另外一處文件的使用。由於硬鏈接使用inode號鏈接,因此只能在同分區能使用,不能跨分區使用。

相關文章
相關標籤/搜索