用戶user
vLinux用戶:Username/UID
管理員:root, 0
普通用戶:1-60000 自動分配
系統用戶:1-499, 1-999 (CentOS7) 對守護進程獲取資源進行權限分配
登錄用戶:500+, 1000+(CentOS7) 交互式登錄
組group
Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)
組的類別
Linux組的類別
用戶的主要組(primary group)
用戶必須屬於一個且只有一個主組
組名同用戶名,且僅包含一個用戶,私有組用戶的附加組(supplementary group)
一個用戶可以屬於零個或多個輔助組
用戶和組的配置文件
Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
#密碼passwd文件格式
login name:登錄用名(wang) passwd:密碼 (x)
UID:用戶身份編號 (1000)
GID:登錄默認所在組編號 (1000)
GECOS:用戶全名或註釋
home directory:用戶主目錄 (/home/wang)
shell:用戶默認使用shell (/bin/bash)shadow文件格式
登錄用名
用戶密碼:一般用sha512加密
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天可以被變更(0表示隨時可被變更)
密碼再過幾天必須被變更(99999表示永不過期)
密碼過期前幾天系統提醒用戶(默認爲一週)
密碼過期幾天後帳號會被鎖定
從1970年1月1日算起,多少天后帳號失效group文件格式
羣組名稱:就是羣組名稱
羣組密碼:通常不需要設定,密碼是被記錄在 /etc/gshadow
GID:就是羣組的 ID
以當前組爲附加組的用戶列表(分隔符爲逗號)用戶和組管理命令
用戶管理命令
useradd
usermod
userdel
組帳號維護命令
groupadd
groupmod
groupdel用戶創建:useradd
useradd
-u UID
-o 配合-u 選項,不檢查UID的唯一性
-g GID 指明用戶所屬基本組,可爲組名,也可以GID
-c "COMMENT“ 用戶的註釋信息
-d HOME_DIR 以指定的路徑(不存在)爲家目錄
-s SHELL 指明用戶的默認shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 爲用戶指明附加組,組須事先存在
-N 不創建私用組做主組,使用users組做主組
-r 創建系統用戶 CentOS 6: ID<500,CentOS 7: ID<1000
-m 創建家目錄,用於系統用戶
-M 不創建家目錄,用於非系統用戶新建用戶的相關文件和命令
/etc/default/useradd
/etc/skel/*
/etc/login.defs
newusers passwd格式文件 批量創建用戶
chpasswd 批量修改用戶口令用戶屬性修改
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被 覆蓋;若保留原有,則要同時使用-a選項
-s SHELL:新的默認SHELL
-c 'COMMENT':新的註釋信息
-d HOME: 新家目錄不會自動創建;若要創建新家目錄並移動原家數據, 同時使用-m選項
-l login_name: 新的名字
-L: lock指定用戶,在/etc/shadow 密碼欄的增加 !
-U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉
-e YYYY-MM-DD: 指明用戶賬號過期日期
-f INACTIVE: 設定非活動期限
刪除用戶
userdel [OPTION]... login
-r: 刪除用戶家目錄查看用戶相關的ID信息
id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用切換用戶或以其他用戶身份執行命令
su [options...] [-] [user [args...]]
切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變 當前工作目錄
su - UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目 錄,完全切換root su至其他用戶無須密碼;非root用戶切換時需要密碼
換個身份執行命令:su [-] UserName -c 'COMMAND'
選項:-l --login
su -l UserName 相當於 su - UserName
設置密碼
passwd [OPTIONS] UserName: 修改指定用戶的密碼
常用選項:
-d:刪除指定用戶密碼
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-f:強制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼
示例:echo "PASSWORD" | passwd --stdin USERNAME修改用戶密碼策略
chage [OPTION]... LOGIN
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-l 顯示密碼策略示例:
chage -d 0 tom 下一次登錄強制重設密碼
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom創建組
groupadd [OPTION]... group_name
-g GID 指明GID號;[GID_MIN, GID_MAX]
-r 創建系統組
CentOS 6: ID<500
CentOS 7: ID<1000修改和刪除組
組屬性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID組刪除:groupdel
groupdel GROUP更改組密碼
組密碼:gpasswd
gpasswd [OPTION] GROUP-a user 將user添加至指定組中
-d user 從指定組中移除用戶user
-A user1,user2,... 設置有管理權限的用戶列表newgrp命令:臨時切換主組
如果用戶本不屬於此組,則需要組密碼
更改和查看組成員
groupmems [options] [action]
options:
-g, --group groupname 更改爲指定組 (只有root) actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除所有成員
-l, --list 顯示組成員列表groups [OPTION].[USERNAME]... 查看用戶所屬組列表
文件權限
文件的權限主要針對三類對象進行定義
owner 屬主, u
group 屬組, g
other 其他, o每個文件針對每類訪問者都定義了三種權限
r Readable
w Writable
x eXcutable
文件:
r 可使用文件查看類工具獲取其內容
w 可修改其內容
x 可以把此文件提請內核啓動爲一個進程
目錄:
r 可以使用ls查看此目錄中文件列表
w 可在此目錄中創建文件,也可刪除此目錄中的文件
x 可以使用ls -l查看此目錄中文件元數據(須配合r),可以cd進入此目錄
X 只給目錄x權限,不給文件x權限修改文件權限
chmod [OPTION]... OCTAL-MODE FILE...
-R: 遞歸修改權限
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一類用戶的所有權限
u= g= o= ug= a= u=,g=
修改一類用戶某位或某些位權限
u+ u- g+ g- o+ o- a+ a- + -
chmod [OPTION]... --reference=RFILE FILE...
參考RFILE文件的權限,將FILE的修改爲同RFILE新建文件和目錄的默認權限
umask值 可以用來保留在創建文件權限
新建文件的默認權限: 666-umask,如果所得結果某位存在執行(奇數)權 限,則將其權限+1
新建目錄的默認權限: 777-umask非特權用戶umask是 002
root的umask 是 022
umask: 查看
umask # 設定示例:umask 002
umask u=rw,g=r,o=umask –S 模式方式顯示
umask –p 輸出可被調用
全局設置: /etc/bashrc 用戶設置:~/.bashrc特殊權限數字法
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7chmod 4777 /tmp/a.txt
設定文件特定屬性
chattr +i 不能刪除,改名,更改
chattr +a 只能追加內容
lsattr 顯示特定屬性訪問控制列表
- ACL:Access Control List,實現靈活的權限管理
- 除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
- CentOS7 默認創建的xfs和ext4文件系統具有ACL功能
- CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test- ACL生效順序:所有者,自定義用戶,自定義組,其他人
- 爲多用戶或者組的文件和目錄賦予訪問權限rwx
mount -o acl /directory
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -m g:admins:rw file| directory
setfacl -x u:wang file |directory
setfacl -b file1 清除所有ACL權限
getfacl file1 | setfacl --set-file=- file2 複製file1的acl權限給file2- mask隻影響除所有者和other的之外的人和組的最大權限
mask需要與用戶的權限進行邏輯與運算後,才能變成有限的權限(Effective Permission)
用戶或組的設置必須存在於mask權限設定範圍內纔會生效
setfacl -m mask::rx file- --set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含 UGO的設置,不能象-m一樣只是添加ACL就可以
- 示例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1- 備份和恢復ACL
- 主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是 tar等常見的備份工具是不會保留目錄和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1