1. 程式人生 > >2018.3.29 二周第四次課

2018.3.29 二周第四次課

特殊權限set_uid 特殊權限set_gid 特殊權限stick_bit 軟鏈接文件 硬連接文件

特殊權限set_uid
概念:set_uid,當普通用戶執行passwd命令時,可以**臨時**擁有root權限。
set_uid 該權限針對二進制**可執行文件**,如:ls passwd

如下命令,查看

[root@zhangzhen-01 ~]# which passwd #查看這個命令在哪
/usr/bin/passwd
[root@zhangzhen-01 ~]# ls -l /usr/bin/passwd #查看passwd文件權限
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd #這裏的s表示什麽含義呢,s就是set_uid的權限,這個權限可以讓普通用戶(所有者)當他執行帶set_uid這個命令時,這時候他就會被賦予這個所有者的臨時權限。

修改密碼權限的配置文件在:/etc/shadow下

[root@zhangzhen-01 ~]# ls /etc/shadow
/etc/shadow
[root@zhangzhen-01 ~]# ls -l !$ #在這裏我們可以看見,這個文件是非常嚴謹,禁止任何用戶對它進行任何操作。
ls -l /etc/shadow
----------. 1 root root 645 3月 28 21:58 /etc/shadow

註:在這裏,root是超級用戶權限,可以對他進行操作。

如何讓一個普通用戶臨時擁有root權限,操作如下:

[root@zhangzhen-01 ~]# useradd zhang-02 #創建一個zhang-02的用戶


[root@zhangzhen-01 ~]# tail -n3 /etc/passwd #查看最後三行是否創建成功
zhangzhen-03:x:1000:1000::/home/zhangzhen-03:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
zhang-02:x:1002:1002::/home/zhang-02:/bin/bash
[root@zhangzhen-01 ~]# su - zhang-0 #切換用戶
[zhang-02@zhangzhen-01 ~]$ whoami #查看當前是哪個用戶登錄的
zhang-02

如何給一個可執行的文件添加“s”(讓普通用戶臨時擁有所有者權限),例如下:

[zhang-02@zhangzhen-01 ~]$ ls /root/ #普通用戶沒有訪問的權限

ls: 無法打開目錄/root/: 權限不夠
[zhang-02@zhangzhen-01 ~]$ ls -ld /root/ #來看一下這個文件的權限,因為是普通用戶,所以訪問不了root
dr-xr-x---. 6 root root 185 3月 29 00:21 /root/

在這裏,我們回到root用戶下,執行:

技術分享圖片

.
在這裏,綠色的/usr/bin/ls還並沒有賦予“s權限”

我們可以給這個ls文件添加“s”權限
[root@zhangzhen-01 ~]# chmod u+s /usr/bin/ls
再來查看這個文件權限
技術分享圖片
添加成功!

再回到普通用戶下,實驗一下是否可以查看root下的文件呢

[zhang-02@zhangzhen-01 ~]$ ls /root/ #ok,這這裏可以查到
anaconda-ks.cfg dior dior2 dior3
[zhang-02@zhangzhen-01 ~]$ ls -ld /root/
dr-xr-x---. 6 root root 185 3月 29 00:21 /root/

**如何刪除已添加的“s”,權限,命令如下:

[root@zhangzhen-01 ~]# chmod u-s /usr/bin/ls

特殊權限set_gid (可以針對目錄,所屬組的身份,)該目錄的背景顏色的是×××

概念:其功能和操作和set uid是一樣的
該權限可以作用在二進制可執行文件,也可以作用在目錄上;
當作用在文件上時,其功能和操作和set uid是一樣的;
它會使文件在執行階段具有文件所屬組的權限;
目錄被設置這個權限後,任何用戶在此目錄下創建的文件都具有和該目錄所屬的組相同的組。

操作命令如下:
技術分享圖片

特殊權限stick_bit

概念:可以理解為防刪除位,文件是否可以被某用戶刪除;
主要取決於該文件所在的目錄是否對該用戶具有寫權限;
如果沒有寫權限,則這個目錄下的所有文件都不能刪除;
同時也不能添加新的文件。
如果希望用戶能夠添加文件但不能刪除該目錄下其他用戶的文件時;
則可以對父目錄增加該權限,如設置後,就算用戶對目錄具有寫權限;
也是不能刪除其他用戶的文件。
命令如下:chmod u=b /tmp/

示例
在普通用戶下創建個文件

[zhang-02@zhangzhen-01 tmp]$ touch zhang1 #在/tmp下創建個zhang1的文件
[zhang-02@zhangzhen-01 tmp]$ ls
zhang1
[zhang-02@zhangzhen-01 tmp]$ chmod 777 zhang1 #賦予最高的權限
[zhang-02@zhangzhen-01 tmp]$ ls -l zhang1#查看這個文件的所有者和所屬組是誰
-rwxrwxrwx. 1 zhang-02 zhang-02 13 3月 29 23:26 zhang1

切到另外一個普通用戶 user1下,查看是否可以編輯和刪除。

[root@zhangzhen-01 tmp]# su - user1
[user1@zhangzhen-01 tmp]$ ls
zhang1
[user1@zhangzhen-01 tmp]$ vi zhang1 # 可以編輯,已測試
[user1@zhangzhen-01 tmp]$ rm -f zhang1 #但是在這裏並不可以刪除
rm: 無法刪除"zhang1": 不允許的操作

軟鏈接文件

概念:軟連接類似於windows的快捷方式,
軟鏈接不只可以連接文件,也可以鏈接目錄。
軟連接後面可以跟絕對路徑;
也可以跟相對路徑,相對路徑的話得在你要去的目錄下
命令如下:ln -s [源文件] [目標文件]
### 建議使用絕對路徑。
如果你創建軟連接不存在的時候,會紅色常閃,那麽直接在這個路徑下touch一個文件即可。

軟連接是什麽樣子呢,如下圖,淺藍色:

技術分享圖片

如何創建軟鏈接,命令如下:ln -s [源文件] [目標文件]
例:

[root@zhangzhen-01 /]# mkdir /root/111
[root@zhangzhen-01 /]# ln -s /tmp/yum.log /root/111/
[root@zhangzhen-01 /]# ls -l /root/111/
總用量 0
lrwxrwxrwx. 1 root root 12 3月 29 23:55 yum.log -> /tmp/yum.log

技術分享圖片

如何創建軟鏈接目錄,操作如下:ln -s [源目錄] [目標目錄]

[root@zhangzhen-01 /]# ln -s /tmp/dior/ /root/111/zhang
[root@zhangzhen-01 /]# ls -l /root/111
總用量 0
lrwxrwxrwx. 1 root root 12 3月 29 23:55 yum.log -> /tmp/yum.log
lrwxrwxrwx. 1 root root 10 3月 29 23:59 zhang -> /tmp/dior/
技術分享圖片

硬鏈接文件

概念:硬鏈接不支持對目錄做硬鏈接,只支持對文件做。
即便是硬鏈接源地址被刪除,也不受影響,相當於windows復制。
inode號如果相同有N個文件,也不會占用空間,因為數據都存在了inode裏面。
文件做硬鏈接可以,但是有一個前提,不可以跨分區
命令如下 :ln [源地址] [目標地址]

查看inode號:

#如下命令中,第二段表示inode號
[root@zhangzhen-01 ~]# ls -l
總用量 8
drwxr-xr-x. 2 root root 34 3月 29 23:59 111
-rw-------. 1 root root 6901 3月 27 22:40 anaconda-ks.cfg
drwxr-xr-x. 2 root user1 32 3月 28 22:44 dior
d---------. 3 root root 45 3月 28 23:26 dior2
drwxrwxr-x. 2 root root 19 3月 29 00:22 dior3
[root@zhangzhen-01 ~]# ls -i #查看inode號
499815 111 33574978 anaconda-ks.cfg 499801 dior 33575028 dior2 16784710 dior3

2018.3.29 二周第四次課