1. 用戶組
RHEL 7/CentOS 7系統中的用戶組有如下3類:
超級用戶,UID 0:系統的超級用戶。
系統用戶,UID 1-999:系統中系統服務由不同用戶運行,更加安全,默認被限制不能登錄系統。
普通用戶,UID1000~60000:即管理員創建的用於日常工作而不能管理系統的普通用戶。
1.1 groupadd :添加用戶組
一般創建用戶的時候會自動創建與用戶名相同的基本組,而groupadd命令通常單獨創建用戶組,並且作為部分用戶的附加組,便於對這部分用戶的權限做集中管理。
# 用法
groupadd [選項] group
# 選項
-g GID:指定GID;默認是上一個組的GID+1;
-r: 創建系統組;
1.2 groupmod:修改組屬性
# 用法
roupmod [選項] GROUP
# 選項
-g GID:修改GID;
-n new_name:修改組名;
1.3 groupdel:刪除用戶組
# 用法
groupdel [選項] GROUP
1.4 gpasswd:組(密碼/用戶)操作
# 用法
gpasswd [選項] 組
# 選項
-a, --add USER 向組 GROUP 中添加用戶 USER
-d, --delete USER 從組 GROUP 中添加或刪除用戶
-r, --delete-password remove the GROUP's password
1.5 newgrp:(臨時)登錄到指定的組
# 用法
newgrp [-] [group]
-: 會模擬用戶重新登錄以實現重新初始化其工作環境;
2. 用戶
2.1 useradd:創建用戶
# 用法
useradd [選項] 用戶名 (創建用戶,默認設定配置文件/etc/login.defs)
useradd -D:顯示創建用戶的默認配置;
useradd -D 選項: 修改默認選項的值;(結果保存於/etc/default/useradd文件中)
# 選項(更多選項查看幫助)
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID,此組得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明注釋信息;
-d, --home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件;
-s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;
-r, --system:創建系統用戶;
2.2 usermod:修改用戶屬性
# 用法
usermod [選項] 登錄
# 選項
-u, --uid UID:修改用戶的ID為此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
-a, --append:與-G一同使用,用於為用戶追加新的附加組;
-c, --comment COMMENT:修改注釋信息;
-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄;
-l, --login NEW_LOGIN:修改用戶名;
-s, --shell SHELL:修改用戶的默認shell;
-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";
-U, --unlock:解鎖用戶的密碼;
2.3 user del:刪除用戶
# 用法
userdel [選項] 用戶名
# 選項
-r:刪除用戶時一並刪除其家目錄;
2.4 passwd:設置密碼屬性
# 用法
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:修改用戶自己的密碼;
(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;
# 選項
-l, -u:鎖定和解鎖用戶;
-d:清除用戶密碼串;
-e DATE: 過期期限,日期;
-i DAYS:非活動期限;
-n DAYS:密碼的最短使用期限;
-x DAYS:密碼的最長使用期限;
-w DAYS:警告期限;
--stdin:從標准輸入讀取密碼,如 echo "PASSWORD" | passwd --stdin USERNAME
2.5 su:switch user
# 用法
su [options...] [-] [user [args...]]
# 說明
登錄式切換:會通過讀取目標用戶的配置文件來重新初始化
su - USERNAME
su -l USERNAME
非登錄式切換:不會讀取目標用戶的配置文件進行初始化
su USERNAME
注意:管理員可無密碼切換至其它任何用戶;
-c 'COMMAND':僅以指定用戶的身份運行此處指定的命令;
3. 相關文件
3.1 /etc/passwd:用戶信息
# 格式如下
name:password:UID:GID:GECOS:directory:shell
# name: 用戶名
# password:可以是加密的密碼,也可是占位符x;
# UID:用戶ID;
# GID:用戶所屬的主組的ID;
# GECOS:注釋信息;
# directory:用戶的家目錄;
# shell:用戶的默認shell,登錄時默認shell程序;
3.2 /etc/shadow:用戶密碼
# 格式如下
用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過期期限:保留字段
3.3 /etc/group:用戶組信息
group_name:password:GID:user_list
user_list:該組的用戶成員;以此組為附加組的用戶的用戶列表;
4. 用戶權限
4.1 chmod:
注意:用戶僅能修改屬主為自己的那些文件的權限;
# 用法
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
# 選項
-R, --recursive change files and directories recursively(遞歸)
# 示例&說明
chmod 755 FILE
chmod ugo+rwx FILE
chmod a-w FILE
a:所有,u:屬主,g:屬組,o:其它;
r:讀,w:寫,x:執行
chmod --reference=RFILE FILE(將FILE的權限修改為與RFILE一致)
4.2 chown:修改文件的屬主、屬組(修改屬組相當於chgrp)
注意:僅管理員可修改文件的屬主和屬組
# 用法
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
# 選項
-R, --recursive operate on files and directories recursively(遞歸)
# 示例&說明
chown user1:group1 FILE (將FILE的屬主設為user1,屬組設為group1)
chgrp --reference=RFILE FILE(將FILE的屬主、屬組修改為與RFILE一致)
5. 特殊權限
5.1 SUID:
默認情況下,進程其以發起者的身份運行(前提:發起者具有該程序的執行權限);
SUID可以使沒有該程序的執行權限的用戶,臨時以該程序屬主的身份運行該程序。
-
功能:
讓執行者臨時擁有屬主的權限(僅對擁有執行權限的二進制程序有效) -
用法:
chmod u+|-s FILE...
# 展示位置(屬主的執行權限位):
# 如果屬主原本有執行權限,顯示為小寫s;
# 否則,顯示為大寫S;
- 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
5.2 SGID:
-
功能:
1)讓執行者臨時擁有屬主的權限(僅對擁有執行權限的二進制程序有效)
2)在該目錄中創建的文件自動繼承此目錄的用戶組(只可以對目錄設置) -
用法:
chmod g+|-s FILE...
# 展示位置(屬組的執行權限位):
# 如果屬組原本有執行權限,顯示為小寫s;
# 否則,顯示為大寫S;
- 示例:
[root@VM_0_171_centos ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
5.3 SBIT(Sticky BIT):
-
功用:
對於屬組或全局可寫的目錄,組內的所有用戶或系統上的所有用戶對在此目錄中都能創建新文件或刪除所有的已有文件;如果為此類目錄設置Sticky BIT權限,則每個用戶能創建新文件,且只能刪除自己的文件; -
用法:
chmod o+|-t FILE...
# 展示位置(其它用戶的執行權限位)
# 如果其它用戶原本有執行權限,顯示為小寫t;
# 否則,顯示為大寫T;
- 示例:
# 系統上的/tmp和/var/tmp目錄默認均有Sticky BIT權限;
[root@VM_0_171_centos ~]# ls -ld /tmp /var/tmp
drwxrwxrwt. 7 root root 4096 5月 6 14:58 /tmp
drwxrwxrwt. 2 root root 4096 4月 4 14:59 /var/tmp
補充:管理特殊權限的另一方式:
SUID | SGID | SBIT | 左右交叉組合 | 一般權限 |
---|---|---|---|---|
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 |
基於八進制方式賦權時,可於默認的三位八進制數字左側再加一位八進制數字;
例如:chmod 1777
6. 隱藏權限
在Linux系統中除了能對文件設置一般權限和特殊權限外還有一種叫做隱藏權限的功能
6.1 chattr:設置文件的隱藏權限
用法
chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...
OPTIONS
-R 遞歸設置目錄中的文件權限
-V 詳盡打印輸出信息
-f 抑制多數錯誤信息
-v version 設置文件版本
參數說明(來自man幫助文檔):
The letters 'aAcCdDeijsStTu' select the new attributes for the files:
append only (a), no atime updates (A), compressed (c), no copy on write(C), no dump (d), synchronous directory updates (D), extent format (e),immutable (i), data journalling (j), secure deletion (s), synchronous updates (S), no tail-merging (t), top of directory hierarchy (T), and undeletable (u).
示例
[root@VM_0_171_centos tmp]# chattr -V +i acl
chattr 1.42.9 (28-Dec-2013)
acl的標志被設為 ----i-----------
[root@VM_0_171_centos tmp]#
6.2 lsattr:查看文件的隱藏權限
用法
lsattr [ -RVadv ] [ files... ]
OPTIONS
-R 遞歸
-V 顯示lsattr程序版本號
-a List all files in directories, including files that start with '.'
-d 查詢目錄本身
-v 顯示文件版本號
示例
[root@VM_0_171_centos tmp]# lsattr -v
123 suS-iadAcj-t---- ./acl
687539122 ---------------- ./attr
7. 文件訪問控制列表facl
指定的特定用戶或用戶組對某個文件的操作權限(在原來的u、g、o之外,另一層對用戶或用戶組的賦權機制)
7.1 setfacl
用法:
# 賦權給用戶
setfacl -m u:USERNAME:MODE FILE...
# 賦權給用戶組
setfacl -m g:GROUPNAME:MODE FILE...
# 撤銷賦權
setfacl -x u:USERNAME FILE...
setfacl -x g:GROUPNAME FILE...
7.2 getfacl
用法:
getfacl FILE...
示例:
# 對acl文件為gentoo用戶賦予rwx選項
[root@VM_0_171_centos tmp]# setfacl -m u:gentoo:rwx acl
# 查詢文件的訪問控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
user:gentoo:rwx
group::r--
mask::rwx
other::r--
# 撤銷acl文件對gentoo用戶的賦權
[root@VM_0_171_centos tmp]# setfacl -x u:gentoo acl
# 再次查詢訪問控制列表
[root@VM_0_171_centos tmp]# getfacl acl
# file: acl
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
# 設置訪問控制列表后,文件的權限位后會增加一個+
[root@VM_0_171_centos tmp]# ls -l acl
-rw-r--r--+ 1 root root 35 5月 6 16:31 acl