Linux權限基本概念
查看系統(文件夾/文件)權限: ls -l =>d/- xxx xxx xxx. num owner group size date filename
- d代表目錄,-代表文件
- 第一個xxx 表示所有者的權限; 第二個xxx表示所在組的權限; 第三個xxx表示其他用戶的權限
- 為了保護系統,創建完文件以後,某個文件的默認權限為-rw-r--r--. 所有者有讀寫權限,其他用戶只有讀的權限
- num表示文件數目,創建的是文件,num=1,創建的是文件夾,num表示文件夾中含有的文件數
- owner 表示創建者
- group 表述文件所屬組
- size 表示文件大小
- date 表�%@4�日期
- filename 表示文件或者文件夾名字
Linux 系統權限分類
- rwx(r--讀,w--寫,x--執行)
- augo(a--所有,u--所有者,g---所屬組,o--其他)
Linux用戶管理
- 查看用戶詳情 id user
- 示例: id root => uid=0(root) gid=0(root) groups=0(root)
- 示例: id sr => uid=500(sr) gid=500(sr) groups=500(sr)
- 顯示root/user用戶的uid, gid組id, 所屬組
- 新建用戶 useradd user/passwd user
- 示例:useradd user1 => id user1 => uid=501(user1) gid=501(user1) groups=501(user1)
- 示例:passwd user1,系統會彈出提示讓輸入密碼,passwd+user可以用來創建或者更改密碼
- 創建新用戶時默認會為該用戶分配id, 創建相應組,分配組id, id從500開始依次往下
- 創建完新用戶系統會把新用戶的配置信息添加到/etc/passwd 文件中
- 為新用戶添加完密碼系統會把相應的密碼信息添加到/etc/shadow 文件中
- 創建完新用戶會默認為新用戶添加一個組,並把組的信息添加到/etc/group中
- 創建完新用戶,home家目錄下會自動為新建用戶分配一個文件夾,表示用戶的根目錄/home/user1
- 刪除用戶userdel -r user
- r參數非常重要,每次添加user用戶時,為該用戶添加和修改了很多文件,加了-r才能徹底的把這些文件都刪除干淨,不然系統仍然保存著user的信息,無法再添加同名用戶。
- 刪除時忘了r參數,需要去更改非常多的文件(/etc/passwd&shadow&group ; /home/user; /var/spool/mail/user)
- 給用戶添加組 gpasswd -a sr root
- gpasswd是操作/etc/group的administrator,可以對組添加或刪除member,增加密碼等等
- 把用戶sr添加到root組中,添加完運行id sr=>uid=500(sr) gid=500(sr) groups=500(sr),0(root)
- -a, append
- 從組中刪除用戶gpasswd -d sr root
Linux 有三種權限更改方式:chmod/acl/sudo
- 前兩者用來更改文件權限,sudo用來更改應用程序或者是命令的執行權限
- chmod的局限是無法實現多種權限分配(用戶群體只有三種),面對多權限時需要用ACL進行設置
Chmod
chmod (agou)(+-)(rwx) filename
- agou 表示文件權限更改影響的范圍,分別代表all, group, others, user
- +-表示增加或者刪除權限
- rwx表示具體的權限類型
- chmod a+x test.txt 表示給test.txt的所有使用者增加執行權限
- chmod a-x,a-w test.txt 表示去除所有人執行和更改test.txt的權限
chmod XXX filename
- 三類用戶一起設置,第一個X代表所有者,第二個X代表所屬組,第三個X代表其他
- r(4) w(2) x(1): chmod 755 test.txt 給test.txt的owner設置rwx的權限,給其他所有用戶設置rx權限因為要計算每一種用戶的權限,多用於批量處理權限。對用戶單獨設置權限多用英文,而非數字
權限細化的問題,chmod最多只有三個權限組,當有多個用戶,並且每個用戶的權限都不一樣時,chmod有局限性。
ACL(setfacl/getfacl)
文件和文件夾的權限:
- 如果有多個用戶組,權限設置是很復雜的事情,需要仔細規劃(ACL和Chmod混合使用容易產生一些權限問題,建議單獨使用)
- 文件夾的讀權限:可以列出目錄下內容
- 文件夾執行權限:可以進入到文件夾中,執行切換目錄等操作
- 文件夾的寫權限:可以在文件夾中增刪文件
- 用戶對某個文件有了rwx權限,不代表用戶有權刪除該文件,只代表對文件內容有了刪除權限,要能對文件級別進行操作,需要設置相應的文件夾的w權限。
getfacl filename/filedirectory
- 查看文件/文件夾 權限:結果會展示user,group和other的整體權限,以及特殊用戶的權限
setfacl -m u:username:rwx filename
- 給某個用戶添加對某個文件或者文件夾的特殊權限
- 給普通用戶添加完相應權限以後,root也會有相應的權限(理論上root擁有最多的權限)
setfacl -x u:username filename
SUDO
簡介
- 不同於chmod/acl 設置某個文件的權限,sudo主要是為非root用戶增加系統的處理和執行權限。比如只有root有useradd權限,通過sudo,可以為普通用戶增加useradd權限。
- 為普通用戶增加權限有兩種方式:帶密碼驗證和不帶密碼驗證,並且可以指定sudo可運行的機器。
- 使用sudo有兩個步驟:1. visudo編輯權限 2. 普通用戶在使用命令前添加sudo
創建無密碼sudo(執行腳本時通常采用無密碼sudo)
- 編輯visudo: 運行visudo, 采用Vim編輯器編輯添加 sr localhost=NOPASSWD:/usr/sbin/useradd,給用戶sr添加“添加用戶”的超級權限
- 切換到sr用戶
- sudo useradd testadd,在sr模式下添加新的用戶
創建有密碼sudo(可以確保有密碼用戶才使用此命令)
- 編輯visudo: 運行visudo, 采用Vim編輯器編輯添加 sr localhost=/usr/sbin/useradd,給用戶sr添加“添加用戶”的超級權限
- 切換到sr用戶
- sudo useradd testadd,系統會彈出命令提示,驗證完命令以後sr可以成功添加用戶