1、前言 linux
Linux下全部資源、設備均被視做文件來操做,而文件權限則是決定用戶可各文件操做的範圍,不管是平時使用Linux,仍是寫程序均涉及這方面。如下爲我的學習的整理,供之後查閱。 shell
2、 三種權限 數組
1. 普通權限 bash
權限 | 文件 | 目錄 |
r,讀權限 | 查看文件內容 | 列出其子目錄結構信息(就是可執行 ls 目錄 ) |
w,寫權限 | 配合r權限,則可對文件進行修改和刪除 | 配合x權限就能夠添加、刪除和移動內部文件,而刪除目錄和複製目錄內文件則須要配合r和x權限。 |
x,執行權限 | 配合r權限,可執行的權限 | 能夠進入該目錄和對其下文件做操做(就是可執行 cd 目錄 ) |
2. 特殊權限 學習
場景1:用戶A在調用程序B時,且程序B須要修改文件C,而用戶A無權修改文件C,那麼程序B一樣將被拒絕修改文件C。 ui
緣由:程序將使用調用者(就是用戶A)的用戶標識去對系統做操做,程序的權限與調用者的權限一致。 加密
須要:讓程序使用與調用者無關的用戶或用戶組標識,那麼任何調用者執行該程序時均無差別。 spa
解決辦法:使用特殊權限SUID和GUID。 code
權限 | 文件 | 目錄 |
SUID | 注意:僅對二進制可執行文件設置 遞歸 二進制可執行文件會以全部者和調用者的用戶標識去執行,也就是擁有二者的權限。 |
不對目錄設置 |
GUID | 注意:僅對二進制可執行文件設置 二進制可執行文件會以所屬組和調用者的標識去執行,也就是擁有二者的權限。 |
在目錄下建立文件、目錄等,其所屬組與該目錄的所屬組相同。而不是全部者的用戶組了。 |
場景2:某用戶在執行 rm -rf 目錄/* 時,把全部者不是它的文件、目錄都誤刪除了。
緣由:默認狀況下,只要用戶擁有某目錄的wx權限,則能夠刪除、剪切該目錄下的全部文件、目錄,即便該用戶對該目錄下的文件、目錄任何權限都沒有。
需求:只刪除全部者爲本身的文件、目錄。
解決辦法:使用特殊權限SBIT。
權限 | 文件 | 目錄 |
SBIT(stick bit,粘滯位) | 不對文件設置 | 配合wx權限,僅目錄的全部者、子目錄或文件的全部者和root用戶才能刪除、移動該目錄下的子目錄和文件 |
3. 隱藏權限
共13種,僅在文件系統格式爲Ext2+纔有效。
3、經過命令瞭解權限
上一節咱們從概念上了解了linux的文件權限的種類,下面經過命令來實幹一番。
1. 查看權限
輸入 ls -l 就能夠查看當前目錄下全部文件和子目錄的權限信息了。
假設回顯信息爲 ①-②rws③r-x④r-x ⑤1 ⑥root ⑦root ⑧430540 ⑨Dec 20 18:27 ⑩/usr/sbin/passwd ,如今逐一分析其內容。
①. 首字符-,表示該文件爲普通文件。
-,普通文件;
d,目錄文件;
l,符號連接;
c,字符設備文件;
b,字節設備文件;
p,先進先出文件;
s,套接字文件。
②. 第2~4個字符,表示全部者(owner)的權限
③. 第5~7個字符,表示所屬組(group)的權限
④. 第8~10個字符,表示其餘用戶(other)的權限
⑤. 第11個字符,表示硬連接數
⑥. 是文件全部者的用戶名稱(owner)
⑦. 是文件所屬組的用戶組名稱(group)
⑧. 是文件大小,以塊爲單位,經過 ls -lh 則會以KB,MB做單位
⑨. 是最後修改日期
⑩. 是文件或目錄的絕對路徑
從上述內容咱們能夠得知Linux下的權限角色有三種,分別是全部者(owner)、所屬組(group)和其餘用戶(other)。
2. 權限表示形式
[a]. 符號表示法
普通權限:
r,讀權限; w,寫權限;x,可執行權限。
特殊權限:
SUID權限只能設置在②中,s表示二進制可執行文件同時擁有SUID權限和x可執行權限;S表示二進制可執行文件擁有SUID權限但沒有x可執行權限。
SGID權限只能設置在③中,s表示二進制可執行文件或目錄同時擁有SGID權限和x可執行權限;S表示二進制可執行文件或目錄擁有SGID權限但沒有x可執行權限。
SBIT權限只能設置在④中,t表示目錄同時擁有SBIT權限和x可執行權限;T表示目錄擁有SBIT權限但沒有x可執行權限。
[b]. 數字表示法
數字表示法採用二進制形式計算,八進制形式設置的方式。
二進制形式計算,1表明有權限,0表明無權限:
全部者 | 所屬組 | 其餘用戶 | |||||||||
SUID | SGID | SBIT | R | W | X | R | W | X | R | W | X |
1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 | 1/0 |
而後每三位爲一組轉爲八進制,例如如今二進制形式爲100111101101,那麼轉爲八進制則爲4755。
而後經過 chmod 4755 文件 就能夠改變文件的權限, ls -l 回顯中權限部分則爲rwsr-xr-x。
注意:1. 若不設置特殊權限時,咱們能夠直接省去八進制的第一位數,例如: chmod 755 文件 ;
2. 採用數字表示法設置特殊權限,僅能啓動特殊權限,卻沒法關閉。例如,文件A擁有特殊權限SUID和SGID,執行 chmod 0755 文件A ,但經過 ls -l 查看權限依然爲rwsr-sr-x。
4、經過符號表示法設置權限
經過數組表示法設置權限有時確實不夠方便,因而bash爲咱們提供了符號表示法來設置權限。
設置普通權限
// 爲全部者、所屬組和其餘用戶添加執行的權限 chmod +x 文件路徑 // 爲全部者、所屬組和其餘用戶刪除執行的權限 chmod -x 文件路徑 // 爲全部者添加執行的權限 chmod u+x 文件路徑 // 爲所屬組添加執行的權限 chmod g+x 文件路徑 // 爲其餘用戶添加執行的權限 chmod o+x 文件路徑 // 爲全部者、所屬組添加執行的權限 chmod ug+x 文件路徑 // 爲全部者、所屬組和其餘用戶添加寫、執行的權限,取消讀權限 chmod =wx 文件路徑 // 爲全部者、所屬組添加寫、執行的權限,取消讀權限 chmod ug=wx 文件路徑
設置特殊權限
// 開啓、關閉SUID chmod u+s 文件名 chmod u-s 文件名 // 開啓、關閉SGID chmod g+s 文件名 chmod g-s 文件名 // 開啓、關閉SBIT chmod o+t 文件名 chmod o-t 文件名
5、改變全部者、所屬組
1. 查看用戶信息
2. 改變全部者、所屬組
僅root用戶纔有權限執行下列命令。
// 改變全部者 chown 用戶名 文件路徑 // 改變所屬組 chgrp 用戶組 文件路徑 // 改變全部者和所屬組 chown 用戶名.用戶組 文件路徑 // 遞歸改變全部者和所屬組 chown -R 用戶名.用戶組 目錄路徑
6、管理用戶
1. 添加用戶
命令: useradd [-u uid] [-g group] [-d home] [-s shell] 用戶名
-u,用戶ID,用戶ID是給系統使用的,而用戶名是給用戶使用的,二者是一一對應的關係
-g,用戶所屬的用戶組標識
-d,以已存在的目錄做爲用戶的家目錄
-s,定義shell
示例:
// 添加用戶標識 garfield # useradd garfield
並經過查看/etc/passwd、/etc/shadow和/etc/group文件內容,檢查用戶是否建立成功。具體內容以下
注意:在建立用戶時,系統會根據/etc/login.defs和/etc/default/useradd文件的內容對新用戶作基本設置。
/etc/login.defs文件內容:
/etc/default/useradd
SKEL選項是指定用戶家目錄內容是從`/etc/skel`複製過來的。
2. 設置密碼
命令: passwd 用戶名 密碼
3. 啓用、禁用賬號
// 禁用 # usermod -L 用戶名 // 啓用 # usermod -U 用戶名
啓用禁用實質就是在`/etc/shadow`文件中該用戶名對應的記錄上,在用戶密碼前刪除、添加!(感嘆號)來實現。
4. 其餘
// 將用戶添加到用戶組 usermod -G 用戶組名 用戶 // 改變用戶的用戶組 usermod -g 用戶組名 用戶 // 修改用戶名 usermod -l 新用戶名 舊用戶 // 刪除用戶 userdel 用戶名
6、管理用戶組
// 添加用戶組 groupadd [-g gid [-o]] [-r] [-f] 用戶組名 // 修改用戶組名稱 groupmod -n 新用戶組名 舊用戶組名 // 刪除用戶組 groupdel 用戶組名
7、用戶、用戶組的配置文件
1. /etc/passwd,任何用戶均可以讀取該文件的內容。存放各個用戶的用戶名稱、加密後的密碼(若操 做系統採用了shadow技術,則用加密密碼在/etc/shadow文件中,這裏用x或\*表示)、用戶ID(一個用戶ID能夠對應多個用戶名,每一個用 戶名擁有獨立的口令、家目錄和shell,但系統會認爲這些用戶名是同一個用戶。0是超級用戶,1~99系統保留,100開始是普通用戶,默認從500建 普通用戶。總體取值範圍是0~65535)、用戶組ID(對應/etc/group中的一條記錄)、註釋性描述字符串、家目錄、shell程序路 徑<br/>
僞用戶(psuedousers):shell程序路徑爲空或爲/sbin/nologin,主要用於方便系統管理、知足相應系統進程對文件屬性的要求。
僞用戶以下:
bin,擁有可執行的用戶命令文件
sys,擁有系統文件
adm,擁有帳號文件
uucp,UUCP使用
lp,lp或lpd子系統使用
nobody,NFS使用
可經過設置"shell程序路徑"爲某程序,限制某用戶進入系統後僅能執行該程序,程序執行結束則退出系統。
2. /etc/shadow,僅超級用戶能夠查看和修改,由pwconv命令根據/etc/passwd中的 數據自動生成,記錄爲一對一關係。記錄格式爲:用戶名、加密後的密碼(固定長度爲13個字符,空則表示沒有密碼,若含\./0-9A-Za-z的字符則無 法登陸)、最後修改密碼的時間(以距離1970年1月1日的天數來計算)、最小時間間隔(修改密碼的最小天數)、最大時間間隔(密碼有效天數)、警告時間 (從系統開始警告用戶修改密碼到沒法登陸的天數)、不活動時間(用戶沒有登陸活動,但帳號仍保持有效的最大天數)、失效時間(用戶名的有效天數)
3./etc/group,存放用戶組名稱、用戶組加密後的密碼(空、\*或x表示沒有密碼)、用戶組ID、成員用戶名稱(成員用戶名稱間用,隔開)