一盾计、token
1. 定義
令牌售担,當(dāng)用戶通過用戶名和密碼通過系統(tǒng)用戶數(shù)據(jù)庫,成功登錄系統(tǒng)后署辉,系統(tǒng)會(huì)頒發(fā)一個(gè)令牌給用戶族铆。用戶訪問資源時(shí)需要提交令牌,資源再根據(jù)令牌權(quán)限(UID哭尝、GID哥攘、groups)判斷用戶是否有權(quán)限訪問。
如果用戶已經(jīng)登錄系統(tǒng),此時(shí)更新令牌献丑,需要重新登錄才能獲取最新的令牌末捣。
二侠姑、UID
1. 管理員
root:0创橄。
2. 普通用戶
1~65535
(1) 系統(tǒng)用戶
CentOS6:1~499;
CentOS7:1~999莽红。
(2) 登錄用戶
CentOS6:500+妥畏;
CentOS7:1000+。
3. 實(shí)戰(zhàn)功能
(1) UID賦值
正常情況下安吁,系統(tǒng)會(huì)掃描先存在的UID醉蚁,并按照現(xiàn)有的UID最大值遞增,前提是該UID在范圍內(nèi)鬼店。
三网棍、GID
1. 定義
簡化授權(quán)操作;
Linux允許用戶和組同名妇智,且在默認(rèn)情況下滥玷,創(chuàng)建用戶時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)同名的組(私有組)巍棱,并把用戶加入到私有組中惑畴。
2. 管理員組
root:0。
3. 普通組
(1) 系統(tǒng)組
CentOS6:1~499航徙;
CentOS7:1~999如贷。
(1) 普通組
CentOS6:500+;
CentOS7:1000+到踏。
四杠袱、安全上下文
1. 定義
進(jìn)程所能訪問資源的權(quán)限取決于進(jìn)程的運(yùn)行者的身份、運(yùn)行者所屬的組和SELinux等……
五窝稿、組的類別
1. 定義
組和用戶是多對多的關(guān)系楣富,一個(gè)組可以包含多個(gè)用戶,一個(gè)用戶也可以加入多個(gè)組讹躯。
如果一個(gè)用戶加入多個(gè)組菩彬,那么他的權(quán)限是多個(gè)組所累加的。
2. 主要組
用戶必須屬于一個(gè)且只有一個(gè)主組潮梯;
組名同用戶名骗灶,且僅包含一個(gè)用戶,私有組秉馏。
3. 附加組
一個(gè)用戶可以屬于零個(gè)或多個(gè)輔助組耙旦。
六、用戶和組的配置文件
1. 與用戶相關(guān)
(1) /etc/passwd
存放用戶及其屬性信息萝究。
一般不建議直接修改該文件內(nèi)的內(nèi)容免都,使用參數(shù)相應(yīng)的命令進(jìn)行修改锉罐。
系統(tǒng)中可以有多個(gè)管理員,系統(tǒng)會(huì)根據(jù)/etc/passwd的用戶列表順序來顯示用戶名(即排序較后的管理員登錄后所顯示的用戶信息還是排序最前的管理員)绕娘。
如果/etc/passwd里沒有用戶的UID為0(即管理員)脓规,則所有用戶都無法登錄系統(tǒng),且系統(tǒng)重啟后將死機(jī)無法啟動(dòng)险领。
如果/etc/passwd有用戶的家目錄不存在侨舆,則該用戶登錄后會(huì)在根目錄。
參數(shù)
account
用戶名
password
密碼(新系統(tǒng)已用x代替)
UID
用戶ID
GID
主組ID
GECOS
描述信息
directory
用戶家目錄
shell
使用的shell類型
查看用戶描述信息
安裝
rpm -ivh /misc/cd/Packages/finger-0.17-40.el6.x86_64.rpm
(2) /etc/shadow
存放用戶密碼及其相關(guān)屬性绢陌。
屬性
login name
用戶名
encrypted password
加密過的口令:
CentOS5:$1(md5挨下,已被破解);
CentOS6:$6(sha512)脐湾;
CentOS7:$6(sha512)臭笆。如果用戶沒有設(shè)置密碼,該域會(huì)以兩個(gè)!填充秤掌,代表鎖定愁铺,無法登錄系統(tǒng)。如果把兩個(gè)!刪除机杜,該用戶就能免認(rèn)證登錄帜讲。
date of last password change
最近修改密碼的時(shí)間(距離1970年1月1日);
如果值為0椒拗,對應(yīng)用戶在下次登錄時(shí)要修改密碼似将。
minimum password age
最短密碼有效期,默認(rèn)為0蚀苛,即隨時(shí)可以修改在验。
maximum password age
最長密碼有效期,默認(rèn)為99999堵未。
password warning period
密碼警告期腋舌,默認(rèn)提前7天通知準(zhǔn)備過期。
password inactivity period
密碼寬限期渗蟹。
account expiration date
賬號有效期块饺。
reserved field
保留字段,為未來的使用保留下來的雌芽。
(3) /etc/login.defs
用戶相關(guān)設(shè)置
(4) /etc/default/useradd
新用戶默認(rèn)設(shè)置授艰。
(5) /etc/skel
新建用戶家目錄模板目錄。
2. 與組相關(guān)
(1) /etc/group
組機(jī)器屬性信息世落。
屬性
用戶組名淮腾;
組口令:建議不設(shè)置,否則用戶知道密碼后隨意加入組中;
組ID:如果創(chuàng)建用戶時(shí)不設(shè)置組ID谷朝,那么該用戶默認(rèn)加入到組ID為100的users組洲押;
組成員(附加組)。
(2) /etc/gshadow
組密碼及其相關(guān)屬性圆凰。
屬性
用戶組名杈帐;
組口令:建議不設(shè)置,否則用戶知道密碼后隨意加入組中送朱;
組成員關(guān)系:組長娘荡,可以設(shè)置多個(gè);
組成員(附加組)驶沼。
3. 實(shí)戰(zhàn)功能
(1) /etc/passwd顯示或不顯示密碼
pwunconv
執(zhí)行pwunconv命令后可以使/etc/passwd顯示加密后的用戶密碼。
pwconv
執(zhí)行pwunconv命令后可以使/etc/passwd不顯示加密后的用戶密碼争群。
(2) 指定其他用戶為管理員
在/etc/passwd中把指定用戶的UID值修改為0回怜。
(3) 修復(fù)由于/etc/passwd里沒有用戶的UID為0導(dǎo)致系統(tǒng)重啟后將死機(jī)無法啟動(dòng)
重啟系統(tǒng)后,進(jìn)入系統(tǒng)選擇界面换薄,按按鍵e玉雾,跳轉(zhuǎn)界面后,在最后一行末尾追加init=/bin/bash轻要。進(jìn)入系統(tǒng)后复旬,執(zhí)行mount -o rw.remount /命令以可讀寫的方式加載根分區(qū),重新編輯/etc/passwd內(nèi)容冲泥,重啟系統(tǒng)后解決問題驹碍。
(4) 禁止用戶登錄系統(tǒng)
/usr/sbin/nologin
使用chsh -s /usr/sbin/nologin命令把用戶的shell類型修改成/usr/sbin/nologin,同時(shí)修改/etc/passwd內(nèi)的用戶shell類型凡恍,該用戶將無法登錄系統(tǒng)志秃,su命令也無法切換。
/usr/sbin/nologin一般為系統(tǒng)用戶(程序嚼酝、進(jìn)程使用的賬號)的shell類型浮还。
(5) 新建用戶替換舊用戶,權(quán)限不變
/etc/passwd
/etc/shadow
修改/etc/passwd和/etc/shadow闽巩,把舊用戶名改成新用戶名钧舌,ID不變,權(quán)限不變涎跨。
(6) 修改用戶主組
如果用戶不在組中洼冻,使用newgrp命令需要輸入正確組口令才能修改用戶主組;
如果用戶已經(jīng)在組中(附加組)六敬,使用newgrp命令不需要輸入正確組口令就能修改用戶主組碘赖。
七、用戶家目錄
1. 定義
在新建用戶時(shí),系統(tǒng)會(huì)自動(dòng)從/etc/skel/目錄復(fù)制出相關(guān)配置文件到用戶家目錄普泡。
2. 實(shí)戰(zhàn)功能
(1) 修改用戶家目錄
方法1:
mkdir -m 777 USERNAME_DIRECTORY
chmod 777 USERNAME_DIRECTORY
cp -r /etc/skel/.[^.] USERNAME_DIRECTORY*
先賦予用戶家目錄的權(quán)限播掷,然后把/etc/skel/里的隱藏文件都復(fù)制到用戶新的家目錄。
方法2
cp -r /etc/skel USERNAME_DIRECTORY
chown -R USERNAME:GROUP USERNAME_DIRECTORY
chmod 777 USERNAME_DIRECTORY
先把/etc/skel/整個(gè)目錄復(fù)制撼班,然后賦予目錄所有者和所有組及目錄權(quán)限歧匈。
八、創(chuàng)建用戶
1. 實(shí)戰(zhàn)功能
(1) 集群環(huán)境中確保相同用戶UID相同
useradd -u
創(chuàng)建用戶時(shí)使用useradd -u命令手工指定用戶UID砰嘁,確保多臺(tái)服務(wù)器用戶UID相同件炉。
(2) 在同一系統(tǒng)下UID相同
useradd -uo
使用useradd -uo命令可以創(chuàng)建用戶并手工指定用戶UID時(shí)不檢查UID的唯一性,系統(tǒng)會(huì)判斷系統(tǒng)UID的兩個(gè)用戶為同一個(gè)用戶矮湘,以先創(chuàng)建為優(yōu)斟冕。
(3) 指定用戶家目錄
useradd -d
在實(shí)際工作中,創(chuàng)建給服務(wù)使用的賬號可以手工指定服務(wù)的目錄為賬號家目錄缅阳,服務(wù)的賬號直接就對該目錄具有完全的權(quán)限磕蛇,不需要后續(xù)再修改。
(4) 應(yīng)用程序賬號指定為系統(tǒng)用戶十办,指定shell類型為/sbin/nologin秀撇,并創(chuàng)建家目錄
useradd -s /sbin/nologin -r -m USERNAME
在實(shí)際工作中,給應(yīng)用程序使用的賬號的shell類型一般為/sbin/nologin向族,且該賬號是給服務(wù)進(jìn)程使用呵燕,所以賬號類型為系統(tǒng)賬號。
使用useradd -r命令創(chuàng)建系統(tǒng)用戶時(shí)件相,系統(tǒng)默認(rèn)不會(huì)創(chuàng)建用戶家目錄再扭,可以需要跟上-m選項(xiàng),給系統(tǒng)用戶創(chuàng)建指定家目錄适肠。
(5) 批量創(chuàng)建用戶并設(shè)置密碼
newusers
chpasswd
useradd命令只能一次創(chuàng)建一個(gè)用戶霍衫,可以先編寫好用戶列表,用戶列表格式與/etc/passwd格式一致侯养,然后使用newusers命令批量創(chuàng)建用戶敦跌。
執(zhí)行chpasswd命令,按照USERNAME:PASSWORD格式批量創(chuàng)建用戶逛揩;也可以先編寫用戶密碼列表文件柠傍,內(nèi)容格式為USERNAME:PASSWORD,然后使用cat PASSWORD.TXT chpasswd批量創(chuàng)建用戶密碼辩稽。
九惧笛、用戶屬性修改
1. 實(shí)戰(zhàn)功能
(1) 刪除用戶所有附加組
usermod -G ""
usermod -G USERNAME
執(zhí)行usermod -G ""命令,由于引號內(nèi)為空逞泄,所以會(huì)把用戶的附加組覆蓋為空患整;usermod -G USERNAME命令拜效,默認(rèn)用戶的附加組為用戶同名的組,把用戶同名的組覆蓋用戶附加組各谚。
十紧憾、切換用戶
1. 實(shí)戰(zhàn)功能
(1) 什么時(shí)候用完全切換,什么時(shí)候用不完全切換
如果切換的用戶也要訪問前以用戶當(dāng)前目錄昌渤,則使用不完全切換赴穗。
完全切換等價(jià)于重新登錄,工作環(huán)境都會(huì)切換膀息;
不完全切換只是切換身份般眉,環(huán)境信息并未切換。
十一潜支、用戶組操作
1. 實(shí)戰(zhàn)功能
(1) 用戶組無法被刪除
要?jiǎng)h除用戶組甸赃,前提是該用戶組非任何用戶的主組。
十二毁腿、刪除用戶
1. 實(shí)戰(zhàn)功能
(1) 用戶無法被刪除
如果用戶正在執(zhí)行程序辑奈,則該用戶無法被正常刪除。需要先把用戶退出系統(tǒng)再進(jìn)行刪除操作已烤;或者執(zhí)行userdel -f命令強(qiáng)制刪除。
十三妓羊、文件權(quán)限
1. 實(shí)戰(zhàn)功能
(1) 修改文件所有者和所有組
如果文件的所有者是普通用戶胯究,不能修改文件所有者屬性,管理員用戶可以修改躁绸;
如果文件的所有者(普通用戶)在指定組中裕循,可以把文件的所有組權(quán)限改成指定組,否則不能修改净刮,管理員沒有限制剥哑。
(2) 指定文件只能追加、清空內(nèi)容淹父,不能查看內(nèi)容
chmod =w
一旦對文件執(zhí)行了chmod =w命令株婴,用戶只能對該為文件追加、清空內(nèi)容暑认,無法使用文本編輯工具追加困介,更無法查看內(nèi)容。
(3) 刪除文件
刪除文件的權(quán)限由文件所在目錄決定蘸际,因?yàn)閯h除文件相當(dāng)于把修改目錄里的文件列表座哩。目錄是特殊文件,目錄存儲(chǔ)的內(nèi)容就是文件列表。如果要?jiǎng)h除目錄內(nèi)的文件,就要對目錄有寫權(quán)限芹务,才有能力修改目錄內(nèi)的文件列表期升。
(4) 目錄權(quán)限
如果用戶沒有目錄的讀權(quán)限囚巴,能進(jìn)入目錄擎勘,無法查看目錄下的文件列表案铺,但能查看弧呐、修改管引、創(chuàng)建目錄下的文件(前提是有文件的權(quán)限)的內(nèi)容士败;
如果用戶沒有目錄的執(zhí)行權(quán)限,無法進(jìn)入目錄褥伴,無法查看目錄下的文件詳細(xì)屬性谅将,也無法查看目錄下的文件內(nèi)容;
如果用戶有目錄的寫權(quán)限重慢,但沒有執(zhí)行權(quán)限饥臂,也不能刪除、創(chuàng)建目錄下的文件似踱。讀權(quán)限和執(zhí)行權(quán)限是目錄比較基礎(chǔ)的權(quán)限隅熙,要么全給,要么都不給核芽。
(5) 用戶獲取文件權(quán)限順序
如果用戶為文件所有者囚戚,將只看所有者權(quán)限;否則繼續(xù)判斷用戶是否屬于文件所有組轧简,如果屬于文件所有組驰坊,將只看所有組權(quán)限;如果用戶并非文件所有者或所有組哮独,則只看其他的權(quán)限拳芙。權(quán)限不會(huì)累加。
(6) 遞歸賦予文件執(zhí)行權(quán)限
chmod -R +X
chmod -R +x
如果執(zhí)行chmod -R +x命令將對目錄下所有文件(目錄皮璧、文件)都賦予執(zhí)行權(quán)限舟扎;如果執(zhí)行chmod -R +X命令將只對目錄和已經(jīng)有執(zhí)行權(quán)限的文件賦予執(zhí)行權(quán)限,而其他文件一律不賦予執(zhí)行權(quán)限悴务。
(7) 執(zhí)行程序
如果要執(zhí)行程序睹限,前提是程序所在的目錄要有執(zhí)行權(quán)限。
(8) 遞歸賦予權(quán)限
chmod -R /*
遞歸賦予權(quán)限非常危險(xiǎn)惨寿,危險(xiǎn)程度不差于rm -rf /*邦泄,一旦執(zhí)行無法恢復(fù)。
2. 權(quán)限
管理員不受讀寫權(quán)限限制裂垦,但受執(zhí)行權(quán)限限制顺囊。
權(quán)限是否生效要看文件系統(tǒng)的格式,因?yàn)闄?quán)限蕉拢、所有者特碳、所有組這些元數(shù)據(jù)并不是由操作系統(tǒng)所決定诚亚,而是由文件系統(tǒng)決定的,因?yàn)閿?shù)據(jù)是存放在文件中午乓,文件由文件系統(tǒng)進(jìn)行管理站宗。傳統(tǒng)Linux文件系統(tǒng)支持這些屬性的修改,如:ext系列和xfs益愈。
(1) r(4)
read梢灭,讀權(quán)限。
一些特殊文件(包括二進(jìn)制文件)蒸其,沒必然要設(shè)置讀權(quán)限敏释;一般是對文本文件設(shè)置讀權(quán)限。
(2) w(2)
write摸袁,寫權(quán)限钥顽。
一些特殊文件(包括二進(jìn)制文件),沒必然要設(shè)置寫權(quán)限靠汁;一般是對文本文件設(shè)置寫權(quán)限蜂大。
(3) x(1)
excute,執(zhí)行權(quán)限蝶怔。
一般不對文本文件設(shè)置執(zhí)行權(quán)限奶浦。
3. 對象
1. u
owner,所有者踢星。
2. g
group财喳,所有組。
3. o
other斩狱,其他。
4. 文件默認(rèn)權(quán)限計(jì)算
(1) 文件
默認(rèn)權(quán)限 = 666 - umask:對結(jié)果進(jìn)行觀察扎瓶,如果結(jié)果有奇數(shù)就再加1所踊,偶數(shù)則不變。
(2) 目錄
默認(rèn)權(quán)限 = 777 - umask概荷。
5. 特殊權(quán)限
(1) SUID
定義:
數(shù)字法以4表示秕岛,占據(jù)所有者的執(zhí)行權(quán)限位。
繼承二進(jìn)制程序所有者的權(quán)限误证;
作用在二進(jìn)制程序的所有者的執(zhí)行位上继薛。當(dāng)二進(jìn)制程序指定了SUID權(quán)限后,用戶運(yùn)行該程序時(shí)愈捅,就會(huì)繼承二進(jìn)制程序所有者的權(quán)限遏考,臨時(shí)提升權(quán)限。只適合應(yīng)用在二進(jìn)制可執(zhí)行的程序上蓝谨。
如果程序的所有者有執(zhí)行權(quán)限灌具,為s青团,如果程序的所有者沒有執(zhí)行權(quán)限,就為S咖楣。
(2) SGID
定義:
數(shù)字法以2表示督笆,占據(jù)所有組的執(zhí)行權(quán)限位。
繼承二進(jìn)制程序所有組的權(quán)限诱贿;
作用在二進(jìn)制程序的所有組的執(zhí)行位上娃肿。當(dāng)二進(jìn)制程序指定了SGID權(quán)限后,用戶運(yùn)行該程序時(shí)珠十,就會(huì)繼承二進(jìn)制程序所有組的權(quán)限料扰,臨時(shí)提升權(quán)限。通常用于創(chuàng)建一個(gè)協(xié)作目錄宵睦;
一旦某目錄被設(shè)定了SGID记罚,則對此目錄有寫權(quán)限的用戶在此目錄中創(chuàng)建的文件所屬的組為此目錄的屬組;如果程序的所有組有執(zhí)行權(quán)限壳嚎,為s桐智,如果程序的所有組沒有執(zhí)行權(quán)限,就為S烟馅。
(3) Stickly
定義:
粘滯位说庭,數(shù)字法以1表示,占據(jù)其他的執(zhí)行權(quán)限位郑趁。
作用在目錄刊驴;
在目錄設(shè)置Sticky位,只有文件的所有者或管理員可以刪除該文件寡润,其他用戶(擁有寫權(quán)限)只能修改該文件的內(nèi)容捆憎。如果目錄的其他用戶有執(zhí)行權(quán)限,為t梭纹,如果程序的所有者沒有執(zhí)行權(quán)限躲惰,就為T。
(4) 實(shí)戰(zhàn)功能
目錄下的文件繼承目錄的所有組
chmod g+s
chmod 2???
如果給目錄賦予SGID權(quán)限变抽,目錄下新建的文件將繼承目錄的所有組础拨。
使文件不能被刪除、改名和更改
chattr +i
執(zhí)行chattr +/-i命令后绍载,即使使用管理員用戶也無法對文件進(jìn)行刪除诡宗、改名和更改操作。
鎖定文件讀時(shí)間
chattr +A
由于有些文件每讀一次更新讀時(shí)間意義不大击儡,執(zhí)行chattr +A命令可以鎖定文件atime塔沃,無法修改文件讀時(shí)間。
6. 訪問控制列表
(1) 定義
ACL曙痘,實(shí)現(xiàn)靈活的權(quán)限管理芳悲。
以+表示立肘。
除了文件的所有者、所屬組和其他人名扛,可以對更多的用戶設(shè)置權(quán)限谅年。
一旦啟用ACL,傳統(tǒng)的組權(quán)限會(huì)變成特殊的權(quán)限(mask)肮韧。
(2) 生效順序
所有者融蹂、自定義用戶、自定義組弄企、其他人超燃;
如果用戶所屬的多個(gè)組都被定義了ACL,則該用戶的權(quán)限疊加拘领。
(3) mask
定義:
只影響除所有者和other的之外的人和組的最大權(quán)限意乓。
需要與用戶、組的權(quán)限進(jìn)行邏輯與運(yùn)算后约素,才能變成有限的權(quán)限届良。
(4) 啟動(dòng)ACL功能
tune2fs -o acl /dev/分區(qū)
mount -o acl /dev/分區(qū) /目錄
CentOS7默認(rèn)創(chuàng)建的xfs和ext4文件系統(tǒng)具有ACL功能;
CentOS7之前版本圣猎,默認(rèn)手工創(chuàng)建的ext4文件系統(tǒng)無ACL功能士葫,需手動(dòng)增加。在CentOS6上送悔,安裝操作系統(tǒng)時(shí)創(chuàng)建并掛載目錄的分區(qū)支持ACL功能慢显,采用ext系列的文件系統(tǒng);而后續(xù)再創(chuàng)建的分區(qū)默認(rèn)不支持ACL功能欠啤,需要手工添加ACL功能荚藻。
(5) 備份、恢復(fù)文件ACL步驟
cp -a命令洁段、cp -p命令和mv命令都支持ACL鞋喇。
getfacl -R FILE > ACL.txt
備份文件ACL
setfacl -R -b FILE
清空文件ACL
setfacl -R --set-file=ACL.txt FILE
恢復(fù)文件ACL
setfacl --restore=ACL.txt FILE
恢復(fù)文件ACL
getfacl -R FILE
查看文件ACL