Linux總結(十二)set_uid set_gid stic_bit 軟鏈接 硬鏈接
之前我們修改普通用戶的登陸密碼,都是以管理員身份在操作,比如我們在lv賬戶下,我們使用
sudo passwd lv 重置lv賬戶密碼,此時我們直接拿到root權限忽略掉了文件權限的限制。那麽還有一種情況就是,類似於我們自己修改我們銀行賬戶密碼一樣,我們並不是管理員,我們只需要知道以前的舊密碼就可以修改,看下linux普通用戶依照文件權限修改密碼的機制:
ls -l /usr/bin/passwd
ls -l /etc/shadow
我們發現/usr/bin/passwd該命令文件為紅色,其中屬主權限為rws,s起什麽作用呢?
我們用passwd修改密碼的過程是這樣的,執行/usr/bin/passwd 命令,修改/etc/shadow密碼文件
為了解決以上矛盾, set_uid登場了,當一個帶有set_uid權限,顯示為s的命令文件被執行時,會臨時借用該文件屬主的身份,通常意味著普通用戶借用到root身份完成操作。
以下舉兩個例子:
1 passwd 修改密碼
去掉s權限再試
2 ls 給s權限前後
二 set_gid
1.當該權限作用於命令文件時,其功能等同於set_uid,不過作用對象為屬組,詳細解釋就是,給一個命令文件臨時賦予該文件屬組的身份。
2.當該權限作用於目錄時,在該目錄下創建的文件或者目錄,其屬組繼承該目錄的屬組。請看以下例子:
三 stic_bit 防刪除位
普通用戶之間可以共享文件的編輯權,但是不能隨意刪除其他用戶的文件,因此設立stic_bit 權限進行約束。請看下面例子:
我們發現對於其他用戶來說出現了一個t權限,該t權限就是stic_bit,我們用兩個普通用戶驗證下他的作用:
如上圖所示,我們首先在lv-one賬戶下刪除了lv賬戶下的test目錄下的1.txt文件,隨後我們給test目錄加入t權限,然後再用lv-one刪除test目錄下的子目錄test1,提示不允許,說用t權限發揮了作用。
四 軟鏈接
格式 ln -s 源文件 鏈接文件
下面我們討論下相對路徑和絕對路徑:
軟鏈接相對路徑據對路徑都可以,但是當我們挪動鏈接文件時,相對路徑做的軟鏈接很容易找不到源而失效,絕對路徑就不會有這種問題。我們來看下面的例子:
軟鏈接一個應用案例
假如/boot 分區下某個應用程序的日誌文件test.log逐漸增大到馬上占滿整個boot分區,但是根分區空間仍然富余,那麽我們可以用軟件鏈接的辦法把/boot分區下的這個數據源給挪出去,因為該路徑不好改動,因此僅讓他做一個映射就可以。具體辦法如下:
1先把原來的數據挪出去,cp /boot/test.log /
2刪除原來的數據,rm -rf /boot/test.log
3軟鏈接重新搭建數據池 ln -s /test.log /boot/test.log
五 硬鏈接
格式 ln 源文件 鏈接文件
硬鏈接生成的文件如果查看用du查看發現跟源文件大小相同,但是使用的是同一個inod節點,因此並不是復制,我們可以理解為,同一物體的兩種命名,硬鏈接不可以跨分區,不能作用於目錄。
Linux總結(十二)set_uid set_gid stic_bit 軟鏈接 硬鏈接