用戶和組

用戶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 7

chmod 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章