用戶組和權限管理
node
解釋Linux的安全模型mysql
資源分派:nginx
Authentication:認證git
Authorization:受權web
Accouting|Audition:審計redis
介紹安全3A算法
解釋用戶賬號和組羣賬號的目的sql
使用數字、大寫字母、小寫字母及特殊字符中至少3種mongodb
足夠長docker
使用隨機密碼
按期更換,不要使用最近曾經使用過的密碼
加密機制:
單向加密:哈希算法,原文不一樣,密文必不一樣
更改加密算法:
authconfig--passalgo=sha256 --update
加密:明文--> 密文
解密:密文--> 明文
相同算法定長輸出,得到密文不可逆推出原始數據
雪崩效應:初始條件的微小改變,引發結果的巨大改變
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits
登陸用名
用戶密碼:通常用sha512加密
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天能夠被變動(0表示隨時可被變動)
密碼再過幾天必須被變動(99999表示永不過時)
密碼過時前幾天系統提醒用戶(默認爲一週)
密碼過時幾天後賬號會被鎖定
從1970年1月1日算起,多少天后賬號失效
login name:登陸用名(wang)
passwd:密碼(x)
UID:用戶身份編號(1000)
GID:登陸默認所在組編號(1000)
GECOS:用戶全名或註釋
home directory:用戶主目錄(/home/wang)
shell:用戶默認使用shell (/bin/bash)
Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
Linux組的類別
用戶的主要組(primary group)
用戶必須屬於一個且只有一個主組
組名同用戶名,且僅包含一個用戶,私有組
用戶的附加組(supplementary group)
一個用戶能夠屬於零個或多個輔助組
Linux安全上下文
進程所可以訪問資源的權限取決於進程的運行者的身份
運行中的程序:進程 (process)
以進程發起者的身份運行:
root: /bin/cat
mage: /bin/cat
Linux組:Groupname/GID
管理員組:root, 0
普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)
令牌token,identity
Linux用戶:Username/UID
管理員:root, 0
普通用戶:1-65535
系統用戶:1-499, 1-999 (CentOS7)
對守護進程獲取資源進行權限分配
登陸用戶:500+, 1000+(CentOS7)
交互式登陸
用戶user
組group
安全上下文
組的類別
用戶和組的配置文件
passwd文件格式
shadow文件格式
密碼加密
密碼的複雜性策略
密碼期限
用戶和組管理命令
一、建立用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,註釋信息爲"GentooDistribution"
二、建立下面的用戶、組和組成員關係
名字爲webs 的組
用戶nginx使用webs 做爲附屬組
用戶varnish,也使用webs 做爲附屬組
用戶mysql,不可交互登陸系統,且不是webs 的成員,nginx,varnish,mysql密碼都是magedu
useradd
新建用戶的相關文件和命令
usermod
userdel
組賬號維護命令
groupadd
groupmod
groupdel
更改組密碼
更改和查看組成員
查看用戶相關的ID信息
切換用戶或以其餘用戶身份執行命令
設置密碼
修改用戶密碼策略
用戶相關的其它命令
chfn 指定我的信息
chsh 指定shell
finger
useradd -D
useradd[options] LOGIN
-u UID
-o 配合-u 選項,不檢查UID的惟一性
-g GID:指明用戶所屬基本組,可爲組名,也能夠GID
-c "COMMENT":用戶的註釋信息
第五個字段 /etc/passwd
-d HOME_DIR: 以指定的路徑(不存在)爲家目錄
-s SHELL: 指明用戶的默認shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:爲用戶指明附加組,組須事先存在
-N 不建立私用組作主組,使用users組作主組
-r: 建立系統用戶CentOS 6: ID<500,CentOS 7: ID<1000
用此選項不會建立家目錄 給應用程序使用 如需建立需加-m
-m 建立家目錄,用於系統用戶
-M 不建立家目錄,用於非系統用戶
默認值設定:/etc/default/useradd文件中
顯示或更改默認設置
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP
練習
/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: 刪除用戶家目錄
連帶郵箱一同刪除
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
不能是主組
groupdelGROUP
-a user 將user添加至指定組中
-d user 從指定組中移除用戶user
-A user1,user2,... 設置有管理權限的用戶列表
組密碼:gpasswd
gpasswd[OPTION] GROUP
newgrp命令:臨時切換主組
永久改
若是用戶本不屬於此組,則須要組密碼
groupmems[options] [action]
options:
-g, --group groupname更改成指定組(只有root)
Actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除全部成員
-l, --list 顯示組成員列表
groups [OPTION].[USERNAME]... 查看用戶所屬組列表
id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用
su[options...] [-] [user [args...]]
切換用戶的方式:
suUserName:非登陸式切換,即不會讀取目標用戶的配置文件,不改變當前工做目錄
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:提早多少天開始警告
-iinactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼
echo "PASSWORD" | passwd--stdinUSERNAME
chage[OPTION]... LOGIN
-d LAST_DAY
-E --expiredateEXPIRE_DATE
-I --inactive INACTIVE
-m --mindaysMIN_DAYS
-M --maxdaysMAX_DAYS
-W --warndaysWARN_DAYS
–l 顯示密碼策略
示例:
chage-d 0 tom 下一次登陸強制重設密碼
chage-m 0 –M 42 –W 14 –I 7 tom
chage-E 2016-09-10 tom
vipw和vigr
pwck和grpck
檢查信息
grpck檢查組信息
羣組名稱:就是羣組名稱
羣組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組爲附加組的用戶列表:(分隔符爲逗號)
羣組名稱:就是羣組名稱
羣組密碼:一般不須要設定,密碼是被記錄在/etc/gshadow
GID:就是羣組的ID
以當前組爲附加組的用戶列表(分隔符爲逗號)
group文件格式
gshdow文件格式
文件操做
用戶管理命令
練習
理解並設置文件權限
文件的權限主要針對三類對象進行定義
每一個文件針對每類訪問者都定義了三種權限
文件:
目錄:
文件權限操做命令:chmod
文件權限(rwx|X)
八進制數字
修改文件權限
權限設置示例
練習
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權限
---000 0
--x 001 1
-w-010 2
-wx 011 3
r--100 4
r-x 101 5
rw-110 6
rwx 111 7
例如:
640: rw-r-----
755: rwxr-xr-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
chgrp sales testfile
chown root:admins testfile
chmod u+wx, g-r ,o=rx file
chmod-R g+rwX /testdir
chmod 600 file
chown mage testfile
不能夠改 能夠刪
不能改 不能刪
不知道文件列表 知道文件名能夠訪問
不能cd 不能訪問文件 能看到文件名
一、當用戶docker對/testdir目錄無執行權限時,意味着沒法作哪些操做?
二、當用戶mongodb對/testdir目錄無讀權限時,意味着沒法作哪些操做?
三、當用戶redis對/testdir目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除?
四、當用戶zabbix對/testdir目錄有寫和執行權限時,該目錄下的只讀文件file1是否可修改和刪除?
五、複製/etc/fstab文件到/var/tmp下,設置文件全部者爲tomcat讀寫權限,所屬組爲apps組有讀寫權限,其餘人無權限
六、誤刪除了用戶git的家目錄,請重建並恢復該用戶家目錄及相應的權限屬性
修改文件的屬主:chown
chown[OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒號可用.替換
-R: 遞歸
chown[OPTION]... --reference=RFILE FILE...
修改文件的屬組:chgrp
chgrp[OPTION]... GROUP FILE...
chgrp[OPTION]... --reference=RFILE FILE...
-R 遞歸
chown設置文件的全部者
chgrp設置文件的屬組信息
文件權限
文件屬性操做
修改文件的屬主和屬組
文件權限
默認權限
umask值能夠用來保留在建立文件權限
新建FILE權限: 666-umask
若是所得結果某位存在執行(奇數)權限,則將其權限+1
新建DIR權限: 777-umask
非特權用戶umask是002
root的umask是022
umask: 查看
umask#: 設定
umask002
umask–S 模式方式顯示
umask–p 輸出可被調用
全局設置:/etc/bashrc用戶設置:~/.bashrc
新建文件和目錄的默認權限
特殊權限
特殊權限
suid:4,做用於二進制程序,功能:當用戶執行此程序時,將繼承此文件全部者的權限
sgid: 2,做用於二進制程序,功能:當用戶執行此程序時,將繼承此文件全部組的權限
做用於目錄上,功能:當用戶在目錄建新文件時,新文件的所屬組自動繼承此目錄的所屬組
sticky: 1,做用於目錄上,功能:此目錄中的文件,只能被全部者自已刪除。
SUID, SGID, Sticky
三種經常使用權限:r, w, x user, group, other
安全上下文
可執行文件上SUID權限
可執行文件上SGID權限
目錄上的SGID權限
Sticky 位
特殊權限數字法
權限位映射
設定文件特定屬性
練習
刪除權限
SUID 運行此程序換爲程序全部者的身份
更改suid權限
SGID 運行此程序換爲程序全部組的身份
Sticky 粘滯鍵 只有文件全部者和root能刪除
(1) 任何一個可執行程序文件能不能啓動爲進程,取決發起者對程序文件是否擁有執行權限
(2) 啓動爲進程以後,其進程的屬主爲發起者,進程的屬組爲發起者所屬的組
(3) 進程訪問文件時的權限,取決於進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬於文件屬組;則應用文件屬組權限
(c) 應用文件「其它」權限
前提:進程有屬主和屬組;文件有屬主和屬組
任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限
啓動爲進程以後,其進程的屬主爲原程序文件的屬主
SUID只對二進制可執行程序有效
SUID設置在目錄上無心義
權限設定:
chmodu+sFILE...
chmodu-s FILE...
任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限
啓動爲進程以後,其進程的屬組爲原程序文件的屬組
權限設定:
chmodg+sFILE...
chmodg-s FILE...
默認狀況下,用戶建立文件時,其屬組爲此用戶所屬的主組
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中建立的文件所屬的組爲此目錄的屬組
一般用於建立一個協做目錄
權限設定:
chmod g+s DIR...
chmod g-s DIR...
具備寫權限的目錄一般用戶能夠刪除該目錄中的任何文件,不管該文件的權限或擁有權
在目錄設置Sticky 位,只有文件的全部者或root能夠刪除該文件
sticky 設置在文件上無心義
權限設定:
chmod o+t DIR...
chmod o-t DIR...
例如:
ls-ld/tmpdrwxrwxrwt12rootroot4096Nov215:44/tmp
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
chmod4777 /tmp/a.txt
SUID: user,佔據屬主的執行權限位
s:屬主擁有x權限
S:屬主沒有x權限
SGID: group,佔據屬組的執行權限位
s:group擁有x權限
S:group沒有x權限
Sticky: other,佔據other的執行權限位
t:other擁有x權限
T:other沒有x權限
chattr+i不能刪除,更名,更改
chattr+a 只能追加內容
lsattr顯示特定屬性
一、在/testdir/dir裏建立的新文件自動屬於webs組,組apps的成員如:tomcat能對這些新文件有讀寫權限,組dbs的成員如:mysql只能對新文件有讀權限,其它用戶(不屬於webs,apps,dbs)不能訪問這個文件夾
二、備份/testdir/dir裏全部文件的ACL權限到/root/acl.txt中,清除/testdir/dir中全部ACL權限,最後還原ACL權限
Linux文件系統上的特殊權限
ACL
ACL:Access Control List,實現靈活的權限管理
除了文件的全部者,所屬組和其它人,能夠對更多的用戶設置權限
爲單一用戶設置權限
看權限
CentOS7默認建立的xfs和ext4文件系統具備ACL功能
文件夾權限與文件系統相關
fat分區不支持權限
CentOS7以前版本,默認手工建立的ext4文件系統無ACL功能,需手動增長
ACL生效順序:全部者,自定義用戶,自定義組,其餘人
爲多用戶或者組的文件和目錄賦予訪問權限rwx
ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限
getfacl可看到特殊權限:flags
經過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限
base ACL 不能刪除
setfacl-k dir 刪除默認ACL權限
setfacl–b file1清除全部ACL權限
getfaclfile1 | 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
備份acl權限丟失 用cp -a f1 /root/f1 能夠保留acl權限
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt/test
•mount -o acl/directory
•getfaclfile |directory
•setfacl-m u:wang:rwx file|directory
•setfacl-Rm g:sales:rwx directory -R遞歸
setfacl -R -b file| directory 清空acl權限
•setfacl-M file.acl file|directory 批量設權限
批量刪權限
•setfacl-m g:sales group:rw file| directory
•setfacl-m d:u:wang:rx directory 新建文件默認權限
•setfacl-x u:wang file |directory
•setfacl-X file.acldirectory
訪問控制列表