Linux學習0917

 

 

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,格式化的時候就設置好了。

相關文章
相關標籤/搜索