一、用戶以及用戶的分類
(一)用戶
對於計算機而言每個使用者就是一個用戶,計算機會爲每個使用者提供一個唯一的標識,這就是用戶的ID(UID)。每個用戶都會有自己的用戶名和相應的密碼,用來和系統上的信息庫做比對從而實現認證機制。有了用戶之後計算機上的資源就可以進行相應的隔離機制,對不同的用戶有不同的限制。
(二)用戶的類別
1.管理員(UID:0)
管理員即root,擁有最大的權限,管理計算機上的所有資源。
2.普通用戶
(1)系統用戶(UID:1-499(CentOS6),1-999(CentOS7))
這類用戶從來不需要登錄系統,是爲了能夠讓後臺進程或服務類進程以非管理員的身份運行。
(2)登錄用戶(UID:500-60000(CentOS6),1000-60000(CentOS7))
這類用戶每次都需要登錄系統,擁有的權限沒有root用戶大。
二、權限及權限管理
(一)權限:
1.所謂權限就是在資源使用前用戶所指定的獲取資源的使用範圍,沒有在使用資源的範圍內也就是沒有資格使用此資源。不同的用戶擁有的資源的權限不同。
2.用戶的權限:
(1)r:readable,讀權限
(2)w:writeable,寫權限
(3)x:excuteable,執行權限
3.權限對於文件的意義:
(1)r:可獲取文件的數據;
(2)w:可修改文件的數據;
(3)x:可將此文件運行爲進程。
4.權限對於目錄的意義:
(1)r:可使用ls命令獲取其下的所有文件列表,但是不可使用ls -l命令;
(2)w:可修改此目錄下的文件列表,即創建或刪除文件;
(3)x:可切換至此目錄中,且可使用ls -l來獲取目錄列表中的詳細信息。
5.權限模型:
(1)模型,mode:rwxrwxrwx
(2)從屬關係,ownership:user,group
6.用戶權限組合機制:
用戶權限 | 二進制表示 | 八進制表示 |
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
(二)權限管理命令
1.安全上下文:
(1)進程以某用戶的身份運行,進程是發起此進程用戶的代理,因此以此用戶的身份和權限完成所有的操作
(2)權限匹配模型
.判斷進程的屬主是否爲被訪問的文件的屬主,如果是,則應用屬主的權限,否則進入下一步;
.判斷文件的屬主是否爲被訪問的文件的屬組,如果是,則應用屬組的權限,否則進入下一步
.應用其他用戶的權限。
2.chmod:改變文件的權限
u:屬主,文件屬於哪個用戶
g:屬組,文件屬於哪個組
o:其他,其他的用戶
a:所有,所有的用戶
(1)
賦權表示法:直接操作一類用戶的所有權限位rwx,一次可以指定多個,每個中間用逗號分隔。
# chmod u=rwx FILENAME
# chmod u=rwx,g=rwx FILENAME
# chmod ug=rwx FILENAME
授權表示法:直接操作一類用戶的一個權限位,每次只能指定一個權限位。
# chmod u+w FILENAME
# chmod ug+w FILENAME
(2)
採用八進制格式修改,必須寫全三位八進制數,要不然不會修改成功文件的權限。
# chmod 660 FILENAME
參考一個文件的權限,把將要修改的文件的權限修改爲參考文件的權限,這叫作引用修改。
# chmod --reference=RFILE FILENAME
共同的選項:-R,遞歸修改,建議授權和賦權表示法用,其他幾個不建議使用。
注意:用戶只能修改屬組是自己的文件的那些文件的權限。
3.umask:文件的權限反向掩碼,又稱遮罩碼,默認的遮罩碼是022.
(1)文件的遮罩碼:666-umask
(2)目錄的遮罩碼:777-umask
(3) 查看當前umask:# umask
(4)設置umask:# umask MASK
注意:之所以文件用666減去遮罩碼,就是表示文件默認不能擁有執行權限,如果減得的結果中有執行權限則需要將其加1;但是此類設置僅對當前shell進程有效。
(三)特殊權限
1.SUID
(1)默認情況下:用戶發起的進程,進程的屬主是其發起者,因此,其以發起者的身份運行。
(2)功用:用戶運行某程序是時,如果此程序擁有SUID,那麼程序運行爲進程時,進程的屬主不是發起者的屬組,而是程序文件自己的屬主。
(3)管理文件的SUID權限:
chmod uu+|-s FILE..
(4)展示位置:屬主的執行權限位,
如果屬主原本有執行權限,顯示爲小寫s;否則,顯示爲大寫S
比如:/bin/passwd
(5)案例:
# useradd ssl
新建ssl用戶
# su - ssl
切換至ssl用戶中
# cat /etc/shadow
用root用戶使用cat命令去查看/etc/passwd文件中的信息,沒有權限。
# exit
退出當前登錄
# cp /bin/cat /tmp
root用戶執行復制/bin/cat 到/tnp目錄下
# chmod u+s /tmp/cat
root用戶修改文件的權限,怎加SUID權限
# su - ssl
切換至ssl用戶中
# /tmp/cat /etc/shadow
讓ssl用戶執行/tmp/cat 命令去查看/etc/shadow也就是密碼的信息。由於修改了文件的權限,在執行此文件時就會以程序文件的權限去執行。
因爲是root管理員複製過來的文件,它的屬主屬組都是root所以修改其SUID權限之後,就會有這樣的效果。
2.SGID
(1)功用:當目錄屬組有寫權限,並且有SGID權限時,所有屬於此目錄的屬組,且以屬組身份在此目錄中飯新建文件或目錄時,新文件的屬組不是用戶的基本組,而是目錄的屬組。
(2)管理文件的SGID權限:
chmod g+|-s FILE...
(3)展示位置:屬組的執行權限位
如果屬組原本有執行權限,顯示爲小寫s;否則,顯示爲大寫S。
(4)案例:
# grooupadd mygrp
root用戶添加組
# useradd ssl
root用戶添加用戶
# useradd sdl
root用戶添加用戶
# usermod -a -G mygrp ssl
root將mygrp組設置爲用戶ssl的附加組
# usermod -a -G mygrp sdl
root將mygrp組設置爲用戶sdl的附加組
# mkdir /tmp/test
root用戶創建目錄test
# chown :mygrp /tmp/test
root用戶修改目錄的屬組爲mygrp
# chmod g+x /tmp/test
root用戶爲test目錄的屬組添加寫權限
這樣的話ssl和sdl用戶就可以在test目錄新建的文件的屬主和屬組都會爲自己身。
# chmod g+s /tmp/test
root用戶給test目錄添加SGID權限
添加SGID權限之後,用戶ssl和sdl用戶在/tmp/test下新建的文件的屬組爲自己但是屬組會爲mygrp,也就是這個目錄的屬組。但是這樣的話此用戶也可以刪除同組的其他用戶的文件。爲了避免此類事情的發生就需要下一個權限的設定了。
3.STICKY
(1)功用:對於屬組或全局可寫的目錄,組內的所有用戶或系統上的所有用戶在此目錄中都能創建新文件或刪除已有的所有文件;如果此類目錄設置STICKY權限,則每個用戶能創建新文件,但是隻能刪除自己的文件。
(2)管理文件的STICKY權限
chmod o+|-t FILE...
(3)展示位置:展示於其他用戶的執行權限位
如果其他用戶原本有執行權限,顯示爲小寫t;否則,顯示爲大寫T.
(4)案例
在上一個權限設定的環境下;
# chmod o+t /tmp/test
root用戶修改test目錄的STICKY權限
這樣的話mygrp組的其他用戶就不可以刪除同組的其他用戶的文件只能刪除自己建立的文件了。
4.管理特殊權限的另一種方式
suid sgid sticky | 八進制權限 |
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
(1)基於八進制賦權時,可與默認的三外八進制數字的左側再加一位八進制的數字。
例如: chmod 1777
5.facl:file access control lists(文件訪問控制列表)
(1)文件的額外賦權機制
在原來的u,g,o之外,另一層讓普通用戶能控制賦權給另外的用戶或組的賦權機制
(2)getfacl
getfacl 文件名.....
獲取到的列表的顯示格式:
user:用戶名:權限
group:組名:權限
(3)setfacl
賦權給用戶:
setfacl -m u:用戶名:權限 文件名......
賦權給組:
setfacl -m g:組名:權限 文件名......
撤銷賦權:
用戶:
setfacl -x u:用戶名 文件名......
組:
serfacl -x g:組名 文件名......