2.18 特殊權限set_uid
2.19 特殊權限set_gid
2.20 特殊權限stick_bit
2.21 軟連接文件
2.22 硬鏈接文件node
1、特殊權限set_uidlinux
linux中有個特殊權限:普通用戶臨時擁有某個命令全部者的權限。如:passwd命令windows
設定set_uid的前提條件:二進制、可執行文件ui
咱們查看如下passwd命令這個權限,發現是紅色的 而且權限位第三位是s,這個就是set_uid權限3d
爲何要設置set_uid權限?code
咱們普通用戶平時也是能夠使用passwd命令來進行修改權限,來看一下用來保存密碼的文件:/etc/shadow 這個文件權限很是嚴謹是:-------- ,任何人都沒權限修改(root用戶擁有至高無上的權限),可是普通用戶仍是能夠使用passwd修改就是由於這個set_uid權限,普通用戶在使用passwd命令時臨時擁有了root權限。blog
如何添加set_uid權限rem
普通用戶是沒有執行ls /root/的權限,咱們使用chmod u+s ls 命令賦予set_uid權限,普通用戶就能夠使用ls 查看root目錄了:it
[wxy@wxy03 ~]$ ls /root/ ls: cannot open directory /root/: Permission denied
[root@wxy03 ~]# chmod u+s /usr/bin/ls [root@wxy03 ~]# su - wxy Last login: Mon Sep 17 22:03:02 CST 2018 on pts/0 [wxy@wxy03 ~]$ ls /root/
[wxy@wxy03 ~]$ ls /root/ test.txt
以前能夠使用 chmod u=rwx 這種方式添加權限,set_uid能夠使用這種嗎?io
[root@wxy03 ~]# ll /usr/bin/ls -rwsr-sr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls [root@wxy03 ~]# chmod u=rws /usr/bin/ls [root@wxy03 ~]# ll /usr/bin/ls -rwSr-sr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls
能夠添加,可是s變成了S。這有什麼影響呢,S是說明文件沒有執行權限。
ps:目錄也是能夠添加set_uid權限的,可是沒什麼做用。
2、set_gid
這個和set_uid相似,做用是普通用戶臨時擁有某個命令所屬組的權限。set_gid能夠適用於文件和目錄,當在文件上使用時和set_uid的做用同樣,做用在目錄時:當你建立子文件和子目錄時權限跟父目錄的權限同樣。
[root@wxy03 ~]# chown wxy 1 [root@wxy03 ~]# ll -d 1/ drwxr-xr-x 2 wxy root 4096 Sep 17 22:30 1/ [root@wxy03 ~]# chmod g+s 1/
[root@wxy03 ~]# mkdir 1/22 [root@wxy03 ~]# ll 1/ total 4 drwxr-sr-x 2 root root 4096 Sep 17 22:32 22
三、 特殊權限stick_bit
防刪除權限:防止文件別其它用戶刪除本身的文件,用戶除外。
系統中/tmp/目錄就有這個權限,權限位用「t」表示。tmp的權限是777,雖有人都有權限,若是別人亂刪除那就亂套了,有了stick_bit權限這樣就能夠防止其它普通用戶亂刪除的狀況了。
[root@wxy03 ~]# ll -d /tmp/ drwxrwxrwt. 11 root root 4096 Sep 17 22:35 /tmp/
stick_bit權限能夠刪除,可是其它用戶仍是能夠進行修改的:
[root@wxy03 ~]# chmod o+t /tmp/test/ [root@wxy03 ~]# chmod 777 /tmp/test/ [root@wxy03 ~]# su - wxy Last login: Mon Sep 17 22:44:36 CST 2018 on pts/0 [wxy@wxy03 ~]$ rm -rf /tmp/test/ rm: cannot remove ‘/tmp/test/’: Operation not permitted [wxy@wxy03 ~]$ mkdir /tmp/test/111.txt [wxy@wxy03 ~]$
4、軟鏈接
軟鏈接就是在文件自己存了另一個文件的路徑,相似於windows的快捷方式。
/bin 就是一個軟鏈接,它實際的路徑是usr/bin
建立軟鏈接方式:
ln -s 源文件 目標文件
示例:
[root@wxy03 ~]# ln -s /tmp/1.txt /root/1^C [root@wxy03 ~]# ln -s /tmp/1.txt /home/1111.txt [root@wxy03 ~]# ll /home/1111.txt lrwxrwxrwx 1 root root 10 Sep 17 22:53 /home/1111.txt -> /tmp/1.txt
軟鏈接也可適用於目錄:
[root@wxy03 ~]# ln -s /tmp/test/ /root/ [root@wxy03 ~]# ll /root/ total 4 drwxr-sr-x 3 wxy root 4096 Sep 17 22:32 1 lrwxrwxrwx 1 root root 10 Sep 17 22:51 test -> /tmp/test/
軟鏈接的優勢:節省磁盤空間,快捷方便。
注意事項:作軟鏈接最好是作成絕對路徑,由於若是不作成絕對路徑軟鏈接文件一旦挪動位置就會失效。
5、硬連接
linux系統中文件都會分一個編號就是inode,linux中多個文件指向到一個inode就是硬連接。多個相同inode的文件只會佔用一個文件的空間。
用法: ln 源文件 目標文件
示例:
[root@wxy03 home]# ln 1.txt 2.txt [root@wxy03 home]# ll -i total 8 73732 -rw-r--r-- 2 root root 68 Sep 17 23:21 1.txt 73732 -rw-r--r-- 2 root root 68 Sep 17 23:21 2.txt
以上能夠看到1.txt和2.txt的indoe、大小、時間都是徹底相同的,可是文件名不一樣。
1.txt和2.txt實際上是一個文件,他們互爲硬連接,刪除一個不受影響。
硬連接能夠建立多個,只會佔用一個文件的空間大小。
[root@wxy03 home]# ln test/ 222 ln: ‘test/’: hard link not allowed for directory
硬連接只能對文件使用,目錄沒法使用。
[root@wxy03 home]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 50G 1.8G 45G 4% / devtmpfs 911M 0 911M 0% /dev tmpfs 920M 24K 920M 1% /dev/shm tmpfs 920M 344K 920M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup tmpfs 184M 0 184M 0% /run/user/0 [root@wxy03 home]# ln /dev/initctl /tmp/iii ln: failed to create hard link ‘/tmp/iii’ => ‘/dev/initctl’: Invalid cross-device link
硬連接不能跨分區建立,由於每一個分區都有本身的inode,格式化的時候就設置好了。