Linux使用者,組以及權限管理
基礎概念和工作機制:
-
安全3A
資源分派
Authentication 認證
Authorization 授權
Accouting,Audition 審計
使用者user ,使用者有令牌 token, identity ,組:使用者組,使用者容
Linux中有存放使用者名和密碼的資料庫,使用者名和成對的密碼判定用
是否登入成功。每個使用者登入時都在資料庫裡驗證使用者名和密碼是否正确,如果正确會頒發令牌,當使用者通路檔案時會送出令牌給資源,資源根據送出的令牌判斷使用者是否有權限通路此檔案,使用者要想得到最新令牌必須重新登入。
-
Linux上的使用者即Username/UID分為以下類别:
管理者:root,0
普通使用者:1-65535
普通使用者分為:系統使用者和登入使用者:
系統使用者:1-499(Centos6) 1-999(Centos7)對守護程序擷取資源進行權限配置設定。
登入使用者:500+(Centos6) 1000+(Centos7)通過互動式方式登入。
-
Linux組:Groupname/GID
管理者組:root,0
普通組:1-65535
普通組又分為系統組和非系統組,非系統組又叫做普通組
系統組:1-499(Centos6),1-999(Centos7)
非系統組:500+(Centos6),1000+(Centos7)
注:對于一個使用者而言可以有多個不同的組,分别稱之為使用者的基本組(主組)和附加組;基本組組名和使用者名相同,且僅包含一個使用者,也叫做私有組。基本組以外的組屬于使用者的附件組(或者額外組 )
linux使用者群組相關配置檔案:
1. /etc/passwd:名稱解析庫,該檔案通過名稱解析記錄了使用者及其屬性資訊
通過whatis passwd來檢視其對應的配置檔案的幫助資訊
name:password:UID:GID:GECOS:directory:shell
使用者名:密碼:UID:GID:詳細說明:使用者的家目錄:預設shell
1. /etc/group:組及其屬性資訊:
group_name:password:GID:user_list
組名:組密碼:組ID:以目前組為附件組的使用者清單(如有多個,用逗号隔開)
1. /etc/shadow:使用者密碼及其相關屬性(9個字段)
login name:使用者名
encrypted password:加了密的密碼
date of last password change:最近一次修改密碼的日期:從1970年1月1日起到密碼最近一次被修改的時間 值為0第一次登入必須修改密碼
minimum password age: 密碼的最小使用期限:密碼必須使用多長時間 值為0随時更改
maximum password age:密碼的最大使用期限:密碼可以使用多長時間(密碼有效期),使用多少天後必須更改 99999永久有效
password warning period:密碼的警告時間段:密碼過期前幾天提醒使用者
password inactivity period:密碼禁用期:密碼過期後還可以使用幾天
account expiration date:賬戶的過期日期:從1970年1月1日算起,多少天後帳号失效
reserved field:預留
-
密碼的加密解密機制:
加密:明文-->密文
解密:密文-->明文
對稱加密:加密和解密使用同一密碼
非對稱加密:加密和解密使用同一對密鑰,密鑰對:公鑰,私鑰
單向加密:隻能加密,不能解密,提取資料特征碼,相同算法定長輸出,獲得密文不可逆推出原始資料
雪崩效應:初始條件的微小改變,引起結果巨大改變
使用者群組的相關指令:密碼用政策: 使用随機密碼 最短長度不要低于8位 應該使用大寫字母,小寫字母,數字和标點符号四類字元中至少三類 定期更換 算法:md5,sha1,sha224,sha256,sha384,sha512
檔案權限管理:1.groupadd:添加組 groupadd [options] group -g GID:手動指定GID,預設是上一個組的GID+1 -r:建立系統組 安全上下文:程序以發起者的身份進行,程序對檔案的通路權限,取決于發起此程序的使用者權限 2.groupmod:修改組屬性:groupmod [options] GROUP -g GID:修改組ID -n name:修改組名 3.groupdel:删除組 groupdel [options] GROUP 4.useradd:建立使用者 useradd [options] LOGIN -u,UID,指定uid -g ,GROUP,指定基本組id,此組得事先存在 -G ,為使用者指定附加組 -c,指明注釋資訊 -d:指明使用者家目錄:通過複制/etc/skel此目錄并重命名實作,指定的家路徑,如果事先存在,則不會為使用者複制環境配置檔案 [[email protected] etc]# ls -al skel/ total 24 drwxr-xr-x. 3 root root 78 Aug 1 2018 . drwxr-xr-x. 141 root root 8192 Jul 3 21:24 .. -rw-r--r--. 1 root root 18 Aug 3 2017 .bash_logout -rw-r--r--. 1 root root 193 Aug 3 2017 .bash_profile -rw-r--r--. 1 root root 231 Aug 3 2017 .bashrc drwxr-xr-x. 4 root root 39 Aug 1 2018 .mozilla -s,--shell,指明使用者預設shell,可用shell清單(/etc/shells): [[email protected] etc]# cat shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh -r,--system:建立系統使用者 -D:顯示建立使用者的預設配置: [[email protected] etc]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes useradd -D [options]:修改預設值 注:建立使用者時諸多預設設定配置檔案/etc/login.defs,修改結果儲存于/etc/default/useradd檔案中 5.usermod:修改使用者屬性:usermod [options] LOGIN -u UID:修改使用者的ID -g GROUP:修改使用者所屬的基本組 -G,:修改使用者所屬的附加組,原來的附加組會被覆寫 -a,與-G一同使用,用于為使用者追加新的附件組 -c:修改注釋資訊 -d:修改使用者的家目錄,使用者原來的檔案不會被轉移至新的家目錄,若要移動,則要同時使用-m選項 -l,--login:修改使用者名 -s,--shell:修改使用者的預設shell -L,--lock:鎖定使用者密碼,即在使用者原來的密碼字元串之前添加一個“!” -U,--unlock,解鎖使用者密碼 6.userdel:使用者删除使用者:userdel [options] LOGIN -r:删除使用者家目錄 7.passwd:修改使用者自己的密碼 passwd USERNAME:修改指定使用者密碼,僅root有權限 -L:鎖定使用者 -U:解鎖使用者 -d:清除使用者密碼 -e:過期期限,日期DATE -i:非活動期限,DAYS -n:密碼的最短使用期限 -x:密碼的最長使用期限 -w:密碼的警告期限 --studin:标準輸入 echo "password" | password --studin root &> /dev/null 8.gpasswd:使用者切換基本組 gpasswd [option] group -a user:将user添加指定組中 -d user:将user從指定組中國删除 -A userlist:設定有組管理權限的使用者清單 9.newgrp:臨時切換基本組: 如果使用者本不屬于此組,則需要組的密碼 10.chage:修改使用者密碼屬性 chage [options] LOGIN -d LAST_DAY:修改使用者最近一次修改密碼的時間 -I INACTIVE:修改使用者的非活動期限 11.id:顯示使用者真實和有效ID -u:僅顯示有效的UID -g:僅顯示使用者的基本組ID -G:僅顯示使用者所屬的所有組的ID -n:顯示名字而非ID 12.su:switch user 登入式切換:會通重新讀取使用者的配置檔案來重新初始化 非登入式切換:不會讀取目标使用者配置檔案進行初始化 登入式切換: su -, -l, --login 非登入式切換:su 注:管理者可無密碼切換其他任何使用者 -c "COMMAND":僅以指定使用者的身份運作此處指令
1. 權限表示方法: rwxrwxrwx: 左三位:定義ower權限, 中三位:定義group權限, 左三位:定義other權限 程序運作上下文:程序對檔案的通路權限應用模型 程序的屬主與檔案的屬主是否相同,如果相同則應用屬主權限,否則,則檢查程序的屬主是否屬于檔案的屬組,如果是,則應用屬組權限,否則就隻能應用other權限 權限:r:read讀,w:write寫,x:excute執行 檔案:r:可擷取檔案的資料 w:可修改檔案的資料 x:可将此檔案運作為程序 目錄:r:可使用ls指令擷取其下的所有檔案清單 w:可修改此目錄下的檔案清單,即建立或删除檔案 x:可cd至此目錄中,且可使用ls -l來擷取所有檔案的詳細屬性資訊 權限、二進制表示、八進制表示對應的表示方法: ---:000 0 --x:001 1 -w-:010 2 -wr:011 3 r--:100 4 r-x:101 5 rw-:110 6 rwx:111 7 2.檔案權限修改指令: chmod:檔案權限修改: chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... -R:表示遞歸 MODE: 修改一類使用者的所有權限:u=,g=,o=,ug=,a= 修改一類使用者的某位或某些位權限:u+,u- chmod [OPTION]... --reference=RFILE FILE... 參考RFILE檔案的權限,将FILE的修改為同RFILE的權限 檔案的屬主和屬組修改:chown,chgrp: 注:檔案的屬主屬組僅root可以使用 修改檔案的屬主:chown chown [OPTION]... [OWNER][:[GROUP]] FILE...有三種表示方法: (1)OWNER:隻修改屬主 (2)OWNER,GROUP修改屬主和屬組 (3)GROUP:隻修改屬組 修改檔案的屬組:chgrp -R:遞歸 檔案或目錄建立時的遮罩碼:umask 所謂遮罩碼是指在建立一個檔案或目錄時的預設權限: 檔案:666-umask 注:之是以檔案是666,是因為表示檔案預設不能擁有執行權限,如果減得的結果存在x權限,則需要+1 目錄:777-umask umask指令: umask:檢視umask umask UMASK:設定umask的值 注:此類設定僅對目前shell程序有效
Linux系統上的特殊權限
特殊權限:SUID,SGID,STICKY
安全上下文:
1:程序以某使用者的身份運作,程序是發起此程序使用者代理
2:權限比對模型:
(1)判斷程序的屬主,是否為被通路檔案的屬主,如果是則應用屬主的權限,否則進入第二步
(2)判斷程序的屬組,是否為被通路檔案的屬組,如果是則應用屬組的權限,否則進入第三步
(3)應用other的權限
SUID:
預設情況下,使用者發起的程序,程序的屬主是其發起者,是以,程序是以發起者的身份在運作
SUID的作用:使用者運作某程式的時候,如果此程式擁有SUID權限,那些程式運作為程序時,其屬主不是發起者,而是程式檔案自己的屬主
管理檔案的SUID權限: chmod u +|-s FILE 展示位置:屬主的執行權限位,如果屬主的原本有權限,顯示為小寫s,否則顯示大寫S
SGID:
功用:當目錄屬組有寫權限,且有SGID權限時,那麼所有屬于此目錄的屬組,且以屬組身份在此目錄中建立檔案或者目錄時,建立檔案的屬組不是使用者的基本組,而是此目錄的屬組
管理檔案的SGID權限:
chmod g +|-s FILE
展示位置:屬組的執行權限位,如果屬主的原本有權限,顯示為小寫s,否則顯示大寫S
Sticky:
功用:對于屬組或全局可寫的目錄,組内的所有使用者或系統上所有使用者對此目錄中都能建立新檔案或删除所有的已有檔案;如果為此類目錄設定sticky權限則每個使用者能建立新檔案,且隻能删除自己的檔案
管理檔案sticky權限:
chmod o +|-t FILE
管理特殊權限的另一種方式:
suid sgid sticky
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
基于八進制方式指派時,可以在預設的三位最左側加一位
facl:file access control lists
檔案的額外賦權機制:在原來的u,g,o之外,另一層讓普通使用者能控制賦權
檢視指令:getfacl file
user:USERNAME:MODE
group:GROUPNAME:MODE
賦權指令:setfacl
setfacl -m -u:USERNAME:MODE FILE
setfacl -m -g:GROUPNAME:MODE FILE
撤銷:
setfacl -x -u
setfacl -x -g