特殊權限,t權限,S權限 (資源)

一、 特殊權限set_uid

set命令做用主要是顯示系統中已經存在的shell變量,以及設置shell變量的新變量值。使用set更改shell特性時,符號"+"和"-"的做用分別是打開和關閉指定的模式。set命令不可以定義新的shell變量。若是要定義新的變量,可使用declare命令以變量名=值的格式進行定義便可。node

語法

set(選項)(參數)

選項

-a:標示已修改的變量,以供輸出至環境變量。
-b:使被停止的後臺程序馬上回報執行狀態。
-C:轉向所產生的文件沒法覆蓋已存在的文件。
-d:Shell預設會用雜湊表記憶使用過的指令,以加速指令的執行。使用-d參數可取消。
-e:若指令傳回值不等於0,則當即退出shell。
-f:取消使用通配符。
-h:自動記錄函數的所在位置。
-H Shell:可利用"!"加<指令編號>的方式來執行history中記錄的指令。
-k:指令所給的參數都會被視爲此指令的環境變量。
-l:記錄for循環的變量名稱。
-m:使用監視模式。
-n:只讀取指令,而不實際執行。
-p:啓動優先順序模式。
-P:啓動-P參數後,執行指令時,會以實際的文件或目錄來取代符號鏈接。
-t:執行完隨後的指令,即退出shell。
-u:當執行時使用到未定義過的變量,則顯示錯誤信息。
-v:顯示shell所讀取的輸入值。
-x:執行指令後,會先顯示該指令及所下的參數。

參數

取消某個set曾啓動的參數。python

實例

使用declare命令定義一個新的環境變量"mylove",而且將其值設置爲"Visual C++",輸入以下命令:linux

declare mylove='Visual C++'   #定義新環境變量

再使用set命令將新定義的變量輸出爲環境變量,輸入以下命令:shell

set -a mylove                 #設置爲環境變量

執行該命令後,將會新添加對應的環境變量。用戶可使用env命令和grep命令分別顯示和搜索環境變量"mylove",輸入命令以下:bash

env | grep mylove             #顯示環境變量值

此時,該命令執行後,將輸出查詢到的環境變量值。函數

set_uid的表現,權限上添加了小寫的s,ui

更改密碼的文件/etc/shadow,root也沒法更改。spa

ls能夠查看root權限時。是添加了set_uid權限。.net

去掉set_uid權限方法。code

普通用戶用ls命令查看root權限。能顯示的內容。


二、 特殊權限set_gid

(1)、設置set_gid的方法。設置過的文件會變成黃(橙)色。

(2)、更改所屬組方法。

 

在ls命令前面添加!號,顯示的全面。


三、 特殊權限stick_bit

(1).防刪除,在權限中以t顯示。

設置777權限,所屬者,所屬組。

四、 軟連接文件(symbolic link

Symbolic Links : 跟hard link不一樣,這個是創建一個獨立的文件,而這個文件的做用是當讀取這個連接文件時,它會把讀取的行爲轉發到該文件所link的文件上。這樣講,也許比較繞口,那麼就來舉一個例子。如今有文件a,咱們作了一個軟連接文件b(只是一個連接文件,很是小),b指向了文件a。當讀取b時,那麼b就會把讀取的動做轉發到a上,這樣就讀取到了文件a。因此,當你刪除文件a時,文件b並不會被刪除,可是再讀取b時,會提示沒法打開文件。而,當你刪除b時,a是不會有任何影響的。

命令: ln

語法 : ln [-s]  [來源文件]  [目的文件]

ln 經常使用的選項就一個 ‘-s’, 若是不加就是創建硬連接,加上就創建軟連接。

[root@localhost ~]# mkdir 123
[root@localhost ~]# cd 123
[root@localhost 123]# cp /etc/passwd ./
[root@localhost 123]# ll
總用量 4
-rw-r--r-- 1 root root 1097 5月  10 17:08 passwd
[root@localhost 123]# du -sk
8       .
[root@localhost 123]# ln passwd passwd-hard
[root@localhost 123]# ll
總用量 8
-rw-r--r-- 2 root root 1097 5月  10 17:08 passwd
-rw-r--r-- 2 root root 1097 5月  10 17:08 passwd-hard
[root@localhost 123]# du -sk
8

 

實例淺綠色

若是刪除掉源文件,則軟連接文件不能讀取了,並且使用 ‘ll’ 查看發現顏色也變了。

[root@localhost ~]# ln -s 456 789
[root@localhost ~]# ls -ld 456 789
drwxr-xr-x 2 root root 4096 5月  10 17:22 456
lrwxrwxrwx 1 root root    3 5月  10 17:29 789 -> 456

注意:建立軟鏈接時,大文件放在前面;作軟鏈接儘可能使用絕對路徑


五、 硬鏈接文件(hard link)

Hard Links : 當系統要讀取一個文件時,就會先去讀inode table,而後再去根據inode中的信息到塊區域去將數據取出來。而hard link 是直接再創建一個inode連接到文件放置的塊區域。也就是說,進行hard link的時候實際上該文件內容沒有任何變化,只是增長了一個指到這個文件的inode, hard link 有兩個限制:(1)不能跨文件系統,由於不一樣的文件系統有不一樣的inode table; (2) 不能連接目錄。

 ‘ll’ 命令等同於 ‘ls -l’, 請使用 ‘which’ 命令查看一下。作了硬連接後,雖然兩個文件大小都爲 ‘1097’, 可是目錄的大小並無變化。

[root@localhost 123]# ll
總用量 4
-rw-r--r-- 1 root root 1097 5月  10 17:08 passwd-hard
[root@localhost 123]# rm -f passwd
[root@localhost 123]# du -sk
8       .

刪除源文件passwd, 空間依舊不變。這說明硬連接只是複製了一份inode信息。

[root@localhost ~]# ln 123 456
ln: "123": 不容許將硬連接指向目錄

硬連接不能用於目錄。

[root@localhost ~]# mkdir 456
[root@localhost ~]# cd 456
[root@localhost 456]# cp /etc/passwd ./
[root@localhost 456]# ln -s passwd  passwd-soft
[root@localhost 456]# ll
總用量 4
-rw-r--r-- 1 root root 1097 5月  10 17:18 passwd
lrwxrwxrwx 1 root root    6 5月  10 17:19 passwd-soft -> passwd

[root@localhost 456]# head -n1 passwd-soft
root:x:0:0:root:/root:/bin/bash
[root@localhost 456]# head -n1 passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost 456]# rm -f passwd
[root@localhost 456]# head -n1 passwd-soft
head: 沒法打開"passwd-soft" 讀取數據: 沒有那個文件或目錄
[root@localhost 456]# ll
總用量 0
lrwxrwxrwx 1 root root 6 5月  10 17:19 passwd-soft -> passw

注意:兩種連接的本質區別關鍵點在於inode.

 

其餘權限

除了讀寫執行權限外系統還支持強制位(s權限)和粘滯位(t權限)

六、s權限

s權限: 設置使文件在執行階段具備文件全部者的權限,至關於臨時擁有文件全部者的身份. 典型的文件是passwd. 若是通常用戶執行該文件, 則在執行過程當中, 該文件能夠得到root權限, 從而能夠更改用戶的密碼.

ls -al /usr/bin/passwd
-rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd

咱們能夠經過字符模式設置s權限:chmod a+s filename,也可使用絕對模式進行設置:

設置suid:將相應的權限位以前的那一位設置爲4;

設置guid:將相應的權限位以前的那一位設置爲2;

二者都置位:將相應的權限位以前的那一位設置爲4+2=6。

注意:在設置s權限時文件屬主、屬組必須先設置相應的x權限,不然s權限並不能正真生效(c h m o d命令不進行必要的完整性檢查,即便不設置x權限就設置s權限,chmod也不會報錯,當咱們ls -l時看到rwS,大寫S說明s權限未生效)

 

t權限

t權限:要刪除一個文檔,您不必定要有這個文檔的寫權限,但您必定要有這個文檔的上級目錄的寫權限。也就是說,您即便沒有一個文檔的寫權限,但您有這個文檔的上級目錄的寫權限,您 也可以把這個文檔給刪除,而假如沒有一個目錄的寫權限,也就不能在這個目錄下建立文檔。

怎樣才能使一個目錄既可以讓任何用戶寫入文檔,又不讓用戶刪除這個目錄下他人的文檔,t權限就是能起到這個做用。t權限通常只用在目錄上,用在文檔上起不到什麼做用。

在一個目錄上設了t權限位後,(如/home,權限爲1777)任何的用戶都可以在這個目錄下建立文檔,但只能刪除本身建立的文檔(root除外),這就對任何用戶能寫的目錄下的用戶文檔 啓到了保護的做用。

能夠經過chmod +t filename 來設置t權限

 

資源  :

Linux權限管理:普通文件權限、特殊權限及ACL 薦        : http://blog.51cto.com/11551196/1833974

相關文章
相關標籤/搜索