1. 程式人生 > >Linux系統中(CentOS 7)的使用者和許可權管理

Linux系統中(CentOS 7)的使用者和許可權管理

[TOC] ### 使用者和組 #### 使用者資訊檔案 ![](https://img2020.cnblogs.com/blog/1059455/202007/1059455-20200722202039297-1913378010.png) ``` /etc/passwd (1 2 3 4 5 6 7) root:x:0:0:root:/root:/bin/bash 使用者資訊,以 : 分割欄位 daemon:x:2:2:daemon:/sbin:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin 欄位1:使用者名稱 欄位2:密碼佔位符(原用於存放密碼,現已棄用) 欄位3:uid(使用者的身份標識) 0 超級管理員 1-499 程式使用者 500-60000 普通使用者 (centOS 6 中) 999 1000 (centOS 7 中) 在應用啟動時,會呼叫程式使用者來啟動(該使用者許可權低,無法登陸系統) 欄位4:gid使用者的基本組id(一個使用者只能有一個基本組,但可以有多個附加組) 欄位5:使用者資訊(現已棄用) 欄位6:使用者的的家目錄 欄位7:使用者登入系統的命令直譯器型別(shell) /bin/bash 表示該使用者可以登入系統 /sbin/nologin 表示該使用者無法登入系統 ``` #### 使用者密碼資訊 ![](https://img2020.cnblogs.com/blog/1059455/202007/1059455-20200722202135495-1092814081.png) ![](https://img2020.cnblogs.com/blog/1059455/202007/1059455-20200722202155936-1749644649.png) ``` /etc/shadow 1 2 root:$7$UmhhDLOFNijwwr6v$.rw/AyPqqm4WeoYnajjveFCabPT9SeOLALLWbarOvPuTGtJX5d1cmwgV5abwzCplR8ekN2XlbweD2xcpG06eb0::0:99999:7::: userA:!!:18458:0:99999:7::: 1 2 3 4 5 6 78 欄位1:使用者名稱 欄位2:被加密過的密碼(利用sha-512演算法,以及salt值混合加密的密碼) 欄位3:間隔天數(距1970年1月1日密碼最近一次的修改時間) 欄位4:密碼的最短有效期,0表示不限制,若為3則表示使用者(root除外)三天內不能修改自己的密碼 欄位5:密碼最長有效期(建議設定成90天) 欄位6:密碼過期前的7天會有警告提示 欄位7:密碼的不活躍期 欄位8:賬戶的失效時間 ``` #### 相關命令 ##### 使用者管理 ``` id user 檢視使用者的資訊(uid,gid以及附加組) useradd userA 建立一個新使用者userA id會預設從可用id裡順序取值,且會同時建立同名的基本組和附加組 [root@localhost ~]# id userA uid=1001(userA) gid=1001(userA) groups=1001(userA) useradd -u 1223 -g 1001 userB 建立一個uid為1223,gid為1001的使用者userB usermod -g root userA 將使用者userA的所屬組改為root usermod -G 1002 userA 為使用者增加一個gid為1002的附加組 usermod -s /sbin/nologin 修改使用者的命令直譯器(無法登入,也不能由其他使用者切換) userdel -r userB 刪除使用者及其家目錄,若無-r,則會保留家目錄 ``` ##### 組管理 ``` groupadd gp 建立了一個名為gp的組 group -g 676 aaa 建立了一個gid為676的組aaa groupmod -g 677 aaa 將組aaa的gid改為677 gpasswd -d aaa root 從root組成員中移除使用者aaa ``` ``` tail -3 /etc/group userA:x:1001:aaa userB:x:1002: aaa:x:1003: 欄位1:組名 欄位2:密碼標識 欄位3:gid 欄位4:組中的成員(以該組為附加組的使用者,以該組為基本組的使用者不顯示) ``` ##### 密碼管理 ``` passwd -S root 檢視root使用者的密碼狀態 passwd userA 為使用者userA設定密碼 passwd -d userA 刪除使用者userA的密碼 passwd -l userA 鎖定使用者userA,其不能在登入介面登入,但可以從其他使用者切換 passwd -u userA 解鎖使用者 chage -M 90 userA 修改使用者userA密碼的最長有效期為90天 ``` ### 許可權管理 #### 檔案的詳細資訊 ``` ls -lh 列出檔案的詳細資訊 -rwxr-xr-x. 1 root root 127 Jul 20 18:57 hello.sh drwxr-xr-x. 12 500 500 4.0K Jul 17 16:25 httpd-2.2.15 -rwxrw-rw-. 1 root root 6.3M May 13 09:08 httpd-2.2.15.tar.gz drwxr-xr-x. 3 root root 79 Jul 21 19:27 test 1 2 3 4 5 6 7 欄位1:檔案的型別和許可權 欄位2:檔案型別如果是檔案,代表檔案的結點數inode 檔案型別如果是目錄,代表目錄中子目錄的個數(包括目錄 . 和 ..) 欄位3:檔案的所屬者 欄位4:檔案的所屬組 欄位5:檔案的大小 欄位6:檔案的修改時間 欄位7:檔名 ``` #### 檔案許可權 ``` 對檔案的型別和許可權資訊部分進行分割 drwxr-xr-t. 2 root root 6 Jul 21 20:48 tmp1 (設定了粘置位的目錄) drwxr-xr-T. 2 root root 6 Jul 21 20:47 tmp2 - rwx r-x r-x + 1 root root 127 Jul 20 18:57 hello.sh d rwx r-x r-x . 3 root root 79 Jul 21 19:27 test 1 2 3 4 5 欄位1:檔案型別 -普通檔案 d目錄 l符號連結 b塊裝置(硬碟) 欄位2:檔案所屬者的許可權 欄位3:檔案所屬組的許可權 欄位4:其他使用者的許可權 (欄位234屬於檔案基本acl) 欄位5:檔案擴充套件acl標識(.表示沒有設定擴充套件acl,+表示設定了擴充套件acl) (擴充套件acl的優先順序高於基本acl) 許可權中各字元的含義: r w x 對於檔案 讀取 寫入 可執行 對於目錄 列出內容 增刪檔案 進入 (如果使用者對於目錄沒有x許可權,即使擁有rw許可權也無法對其進行操作) ``` #### 相關命令 ``` chmod 改變檔案或目錄的許可權 chmod u-x g+w o=r-x file (-撤權 +賦權 =直接覆蓋許可權) 撤銷file檔案所屬者的執行許可權,所屬組增加寫許可權,其他使用者只有讀和執行許可權 chmod a--- file 撤銷所有使用者和組對file檔案的所有許可權(root使用者仍可以對其進行任意操作) chmod -R o= ./test 撤銷其他使用者對test目錄及其包含的所有檔案的所有許可權 chmod o+t /test 對目錄設定粘置位 原本其用於顯示他使用者x許可權的位置會被替代成t(有x許可權)/T(無x許可權) chnod -u+s /usr/bin/vim 為 vim檔案新增suid許可權 (suid只對可執行檔案有效果,任何執行該檔案的使用者都是以檔案所屬者的身份執行) 8進位制賦權法 0 000 --- 1 001 --x 2 010 -w- 3 011 -wx 4 100 r-- 5 101 r-x 6 110 rw- 7 111 rwx chmod 700 file 只有檔案所屬者對file檔案有操作許可權 chmod 444 file 所有使用者對file檔案只有讀r許可權 chmod 1444 /tmp3 對目錄tmp3設定粘置位(1表示設定粘置位) chmod 0444 /tmp3 撤銷目錄的粘置位 chown userA /tmp/1.txt 將檔案1.txt的所屬者更改為userA chgrp -R userB ./test/ 將目錄及其包含的所有內容的所屬組更改為userB 檔案acl設定 getfacl file 檢視檔案的facl setfacl 設定檔案擴充套件訪問控制列表 setfacl -m u:userA:r-- ./1.txt 使用者userA對1.txt檔案只有r許可權 setfacl -m g:userB:rw- ./1.txt 組userB對1.txt檔案只有rw許可權 setfacl -x u:userA ./1.txt 撤銷userA使用者在1.txt檔案上的擴充套件acl setfacl -b 1.txt 撤銷對檔案設定的所有擴充套件a