linux suid,sgid,sticky-bit三種特殊權限簡介

三種特殊權限簡介linux

SUID數據庫

當一個設置了SUID 位的可執行文件被執行時,該文件將以全部者的身份運行,也就是說不管誰來執行這個文件,他都有文件全部者的特權。安全

若是全部者是 root 的話,那麼執行人就有超級用戶的特權了。oracle

SGIDapp

當一個設置了SGID 位的可執行文件運行時,該文件將具備所屬組的特權, 任意存取整個組所能使用的系統資源。ui

若一個目錄設置了SGID,則全部被複制到這個目錄下的文件, 其所屬的組都會被重設爲和這個目錄同樣,除非在複製文件時加上-p (preserve,保留文件屬性)的參數,才能保留原來所屬的羣組設置。操作系統

sticky-bitblog

對一個文件設置了sticky-bit以後,儘管其餘用戶有寫權限, 也必須由屬主執行刪除、移動等操做。繼承

對一個目錄設置了sticky-bit以後,存放在該目錄的文件僅准許其屬主執行刪除、 移動等操做。索引

特殊權限的數值表示

三種特殊權限能夠用單獨的一位8進制數值表示

SUID、SGID和sticky-bit的數值表示

SUID SGID sticky 二進制 八進制 說明

- - - 000 0 不設置特殊權限

- - t 001 1 只設置sticky

- s - 010 2 只設置SGID

- s t 011 3 只設置SGID和sticky

s - - 100 4 只設置SUID

s - t 101 5 只設置SUID和sticky

s s - 110 6 只設置SUID和SGID

s s t 111 7 設置三種特殊權限

咱們知道了文件的權限能夠用三個八進制數字表示。其實文件的權限應該用四個八進制來表示,不過用 ls -l 命令時,只顯示三個罷了。那個沒有顯示的八進制數字實際上是第一個,它用來設定一些特殊權限。這個八進制數字的三個位是:

SUID SGID sticky-bit

它們的含義是:

SUID

當設置了SUID 位的文件被執行時,該文件將以全部者的身份運行,也就是說不管誰來執行這個文件,他都有文件全部者的特權。若是全部者是 root 的話,那麼執行人就有超級用戶的特權了。這時該位將變成一個安全漏洞,所以不要輕易設置該位。

SGID

與上面的內容相似。文件運行時,運行者將具備所屬組的特權。

sticky-bit

sticky 位要求操做系統既是在可執行程序退出後,仍要在內存中保留該程序的映象。這樣作是爲了節省大型程序的啓動時間。可是會佔用系統資源。所以設置該位,不如把程序寫好。

set uid ;set gid;sticky bit區別

每個文件有全部者及組編號,set uid ;set gid能夠改變用戶對文件具備的權限:寫和執行.

setuid: 在執行時具備文件全部者的權限.

setgid: 設置目錄. 一個目錄被標上setgid位,此目錄下建立的文件繼承該目錄的屬性.

sticky bit: 該位能夠理解爲防刪除位. 設置sticky bit位後,就算用戶對目錄具備寫權限,但也只能添加文件而不能刪除文件。

如何設置:

操做這些標誌與操做文件權限的命令是同樣的, 都是 chmod. 有兩種方法來操做,

1) chmod u+s temp -- 爲temp文件加上setuid標誌. (setuid 只對文件有效,U=用戶)

chmod g+s tempdir -- 爲tempdir目錄加上setgid標誌 (setgid 只對目錄有效,g=組名)

chmod o+t temp -- 爲temp文件加上sticky標誌 (sticky只對文件有效)

2) 採用八進制方式. 這一組八進制數字三位的意義以下,

abc

a - setuid位, 若是該位爲1, 則表示設置setuid

b - setgid位, 若是該位爲1, 則表示設置setgid

c - sticky位, 若是該位爲1, 則表示設置sticky

設置後, 能夠用 ls -l 來查看. 若是原本在該位上有x, 則這些特殊標誌顯示爲小寫字母 (s, s, t). 不然, 顯示爲大寫字母 (S, S, T)

如:

rwsrw-r-- 表示有setuid標誌 (rwxrw-r--:rwsrw-r--)

rwxrwsrw- 表示有setgid標誌 (rwxrwxrw-:rwxrwsrw-)

rwxrw-rwt 表示有sticky標誌 (rwxrw-rwx:rwxrw-rwt)

理解文件權限

所謂的文件權限,是指對文件的訪問權限,包括對文件的讀、寫、刪除、執行。Linux 是一個多用戶操做系統,它容許多個用戶同時登陸和工做。所以 Linux 將一個文件或目錄與一個用戶和組聯繫起來。請看下面的例子:

drwxr-xr-x 5 root root 1024 Sep 13 03:27 Desktop

與文件權限相關聯的是第1、第3、第四個域。第三個域是文件的全部者,第四個域是文件的所屬組,而第一個域則限制了文件的訪問權限。在這個例子中,文件的全部者是 root,所屬的組是 root,文件的訪問權限是 drwxr-xr-x。對於文件和目錄講,每一個文件和目錄都有一組權限標誌和它們結合在一塊兒,在上例中就是第一個域中的內容。下面來仔細分析這個域中各個符號的意義:

該域由 10 個字符組成,能夠把它們分爲四組,具體含義分別是:

d rwx r-x r-x

文件類型 全部者權限標誌 組權限標誌 其餘用戶權限標誌

其中:

文件類型:第一個字符。因爲 Linux 系統對與設備、目錄、文件都看成是文件來處理,所以該字符代表此文件的類型,字符與對應的意義以下表: 文件標誌

文件類型

例子

-

普通文件

數據文件、

ASCII 純文本文件、程序

d

目錄

/bin

b

塊設備

/dev/hda(第一個 IDE 硬盤)

c

字符設備

/dev/ttyS1(與 DOS 種的串口 2 等同)

s

套接字

/dev/log

p

命名管道

/dev/initctl(與「|」等同)

l

符號連接

/dev/modem->/dev/ttyS1

權限標誌:

對每一個文件或目錄都有 4 類不一樣的用戶。每類用戶各有一組讀、寫和執行(搜索)文件的訪問權限,這 4 類用戶是:

root:系統特權用戶類,既 UID = 0 的用戶。

owner:擁有文件的用戶。

group:共享文件的組訪問權限的用戶類的用戶組名稱。

world:不屬於上面 3 類的全部其餘用戶。

做爲 root,他們自動擁有了全部文件和目錄的全面的讀、寫和搜索的權限,因此沒有必要明確指定他們的權限。其餘三類用戶則能夠在耽擱文件或者目錄的基礎上別受權或撤消權限。所以對另外三類用戶,一共 9 個權限位與之對應,分爲 3 組,每組 3 個,分別用 r、w、x 來表示,分別對應 owner、group、world。

權限位對於文件和目錄的含義有些許不一樣。每組 3 個字符對應的含義從左至右的順序,對於文件來講是:讀文件的內容(r)、寫數據到文件(w)、作爲命令執行該文件(x)。對於目錄來講是:讀包含在目錄中的文件名稱(r)、寫信息到目錄中去(增長和刪除索引點的鏈接)、搜索目錄(能用該目錄名稱做爲路徑名去訪問它所包含的文件或子目錄)。具體來講就是:

1. 有隻讀權限的用戶不能用 cd 進入該目錄;還必須有執行權限才能進入。

2. 有執行權限的用戶只有在知道文件名並擁有該文件的讀權限的狀況下才能夠訪問目錄下的文件。

3. 必須有讀和執行權限纔可使用 ls 列出目錄清單,或使用 cd 進入目錄。

4. 如用戶有目錄的寫權限,則能夠建立、刪除或修改目錄下的任何文件或子目錄,既是該文件或子目錄屬於其餘用戶。

修改文件權限

首先講修改文件的全部權,使用 chown 和 chgrp 命令:

chown new_user file or directory:修改文件或目錄的全部者。

chgrp new_group file or directory:修改文件或目錄的所屬組。

這裏須要注意的是:普通用戶不能將文件或目錄的全部權交與他人,只有 root 有這一權限。可是普通用戶有權改變文件或目錄的所屬組。

因爲每類用戶的權限都是由 rwx 三位組成,所以能夠用三個八進制數字表示文件的訪問權。一個八進制數字能夠用三個二進制數字表示,那麼與其對應,權值爲 4 的位對應 r,權值爲 2 的位對應 w,權值爲 1 的位對應 x。對於一類用戶,將這三位與其對應的權值相乘求和,就能夠得出對該類用戶的訪問權限。

改變文件訪問權限的命令是 chmod,格式是:

chmod permission file_name

好比 chmod 764 a.txt,它表示對於文件的全部者,具備對該文件讀、寫、執行的權限。對於文件所屬組的用戶,擁有讀、寫的權限。對於其餘用戶,只有讀權限。

這裏須要注意的是:文件的建立者是惟一能夠修改該文件訪問權限的普通用戶,另一個能夠修改文件訪問權限的用戶是 root。

還有一種表示方法,就是用字符串來設定文件訪問權限。其中讀用 r 表示,寫用 w 表示,執行用 x 表示;全部者用 u 表示,組用戶用 g 表示,其餘用戶用 o 表示,全部用戶用 a 表示。

咱們平時安裝 gi時,看到的oracle命令,就是帶了s的:

[oracle@rac1 test]$ ls -ltr /u01/app/grid/product/11.2.0/grid/bin/oracle

-rwsrwsr-x 1 grid dba 209854149 Jun 1 20:17 /u01/app/grid/product/11.2.0/grid/bin/oracle

更多數據庫和linux技術內容歡迎搜索「重慶思莊」

相關文章
相關標籤/搜索