? 前面文章分享了Linux下常用命令以及Shell編程相關(guān)知識(shí)晚缩,本節(jié)繼續(xù)學(xué)習(xí)Linux用戶管理及文件權(quán)限控制笼才。
? Linux是多用戶多任務(wù)操作系統(tǒng),具有很好的穩(wěn)定性和安全性络凿。既然是多用戶骡送,那就意味著多個(gè)用戶可以同時(shí)使用同一個(gè)Linux操作系統(tǒng),因此就會(huì)涉及用戶的添加絮记、修改摔踱、刪除等管理工作以及權(quán)限分配問(wèn)題;平時(shí)使用Linux系統(tǒng)一般是用于信息處理怨愤,而文件是信息載體派敷,因此也需要掌握文件相關(guān)的操作和權(quán)限。
? 相信大家平時(shí)在使用windows操作系統(tǒng)時(shí)撰洗,為了不讓別人輕易看到某些敏感文件篮愉,而把文件設(shè)置為隱藏文件,Linux下是否也能實(shí)現(xiàn)同樣的操作差导?是否能通過(guò)隱藏權(quán)限讓黑客最多只能查看某些日志文件但不能進(jìn)行修改和刪除操作试躏?是否能夠?qū)δ硞€(gè)用戶或某個(gè)用戶組進(jìn)行特殊的權(quán)限設(shè)置,讓其只有能滿足工作需求的最小權(quán)限设褐,從而降低安全風(fēng)險(xiǎn)颠蕴?本篇文章將逐一解決這些疑問(wèn)。
一助析、用戶及用戶組管理
1.1 用戶相關(guān)命令
? 針對(duì)初學(xué)者犀被,在日常工作中,一般都是領(lǐng)導(dǎo)分配一個(gè)擁有一定權(quán)限的賬號(hào)外冀,然后開(kāi)展各項(xiàng)工作寡键,不會(huì)開(kāi)放很高的權(quán)限。但初學(xué)階段锥惋,正如前面系列文章所演示昌腰,都是直接用root賬戶進(jìn)行操作开伏,這樣的目的是減少權(quán)限帶來(lái)的干擾,讓我們更專注于相應(yīng)知識(shí)點(diǎn)的學(xué)習(xí)遭商。但是在生產(chǎn)環(huán)境中建議慎用root固灵,因?yàn)闄?quán)限太大,控制不當(dāng)會(huì)有安全隱患劫流。
1.1.1 who命令
? who命令用于查看登錄用戶信息巫玻,包括:who、whoami祠汇、who am i仍秤。
- whoami
功能描述:查看當(dāng)前登錄用戶的用戶名
案例:
[root@heimatengyun test]# whoami
root
[root@heimatengyun test]# su - test
Last login: Sat Nov 30 22:55:38 CST 2019 on pts/0
[test@heimatengyun ~]$ whoami
test
[test@heimatengyun ~]$ exit
logout
可以看到,切換用戶后可很,相應(yīng)的結(jié)果發(fā)生變化诗力,只顯示當(dāng)前登錄的用戶。
- who am i
功能描述:顯示最初登錄時(shí)用的用戶名(無(wú)論切換幾次)
案例:
[root@heimatengyun test]# who am i
root pts/0 2019-12-17 22:23 (192.168.78.1)
[root@heimatengyun test]# su - test
Last login: Tue Dec 17 22:31:09 CST 2019 on pts/0
[test@heimatengyun ~]$ who am i
root pts/0 2019-12-17 22:23 (192.168.78.1)
[test@heimatengyun ~]$ exit
logout
? 可以看到我抠,切換后用戶名還是顯示最開(kāi)始登錄時(shí)的用戶名稱苇本。
- who
功能描述:顯示當(dāng)前有哪些用戶真正登錄到了本臺(tái)機(jī)器(不會(huì)顯示那些用su命令切換的用戶)
案例:
[root@heimatengyun test]# who
(unknown) :0 2019-12-17 22:22 (:0)
root pts/0 2019-12-17 22:23 (192.168.78.1)
[root@heimatengyun test]# su - test
Last login: Tue Dec 17 22:34:44 CST 2019 on pts/0
[test@heimatengyun ~]$ who
(unknown) :0 2019-12-17 22:22 (:0)
root pts/0 2019-12-17 22:23 (192.168.78.1)
[test@heimatengyun ~]$ exit
logout
? 可以看到用su命令切換用戶后,顯示結(jié)果中并咩有test用戶菜拓,因此顯示的知識(shí)真正登錄到本機(jī)的所有用戶瓣窄。
1.1.2 id命令
語(yǔ)法:id 用戶名
功能描述:判斷用戶是否存在
案例:
[root@heimatengyun test]# id test
uid=1000(test) gid=1000(test) groups=1000(test)
[root@heimatengyun test]# id lover
id: lover: no such user
? 如果用戶存在返回用戶信息,如果用戶不存在則提示no such user
1.1.3 useradd命令
語(yǔ)法:
? useradd [選項(xiàng)] 用戶名
功能描述:
? 添加新用戶纳鼎,默認(rèn)的用戶家目錄存放在/home目錄中俺夕,默認(rèn)的Shell解釋器為 /bin/bash,同時(shí)會(huì)默認(rèn)創(chuàng)建一個(gè)與該用戶同名的基本用戶組。在創(chuàng)建用戶時(shí)贱鄙,通過(guò)以下參數(shù)可以修改默認(rèn)設(shè)置劝贸。
選項(xiàng):
參數(shù) | 作用 |
---|---|
-d | home-dir,指定用戶的家目錄逗宁,默認(rèn)為/home/username |
-e | expiredate悬荣,賬戶到期時(shí)間,格式:YYYY-MM-DD |
-u | uid疙剑,指定用戶默認(rèn)的UID |
-g | gid氯迂,指定初始用戶基本組,組必須已存在 |
-G | groups言缤,指定一個(gè)或多個(gè)擴(kuò)展用戶組 |
-N | no-user-group嚼蚀,不創(chuàng)建與用戶同名的基本用戶組 |
-s | shell,指定用戶默認(rèn)的Shell解釋器 |
案例:
(1)采用默認(rèn)參數(shù)創(chuàng)建用戶
[root@heimatengyun test]# id lover
id: lover: no such user
[root@heimatengyun test]# useradd lover
[root@heimatengyun test]# id lover
uid=1001(lover) gid=1001(lover) groups=1001(lover)
[root@heimatengyun ~]# cat /etc/passwd
...省略部分內(nèi)容
lover:x:1001:1001::/home/lover:/bin/bash
創(chuàng)建的用戶保存在/etc/passwd文件中管挟,可以通過(guò)此文件查看用戶信息轿曙。
一行為一條用戶記錄,分為7個(gè)字段,每個(gè)字段用冒號(hào)分隔导帝。每個(gè)字段分別對(duì)應(yīng):
用戶名:密碼:UID:GID:注釋:家目錄:偽用戶
(2)創(chuàng)建用戶指定家目錄、UID以及Shell解釋器
[root@heimatengyun ~]# useradd -d /home/heima -u 9988 -s /sbin/nologin heimage
[root@heimatengyun ~]# id heimage
uid=9988(heimage) gid=9988(heimage) groups=9988(heimage)
[root@heimatengyun ~]# ls /home/
heima test
/sbin/nologin是終端解釋器中的一員您单,但是與Bash解釋器不同斋荞,被設(shè)置為nologin后,用戶將不能登錄到系統(tǒng)中虐秦。
RHEL7(Centos7)系統(tǒng)中平酿,用戶身份有3種:管理員、系統(tǒng)用戶悦陋、普通用戶蜈彼。系統(tǒng)的管理員用戶UID為0;系統(tǒng)用戶UID 為 1~999俺驶, Linux 系統(tǒng)為了避免因某個(gè)服務(wù)程序出現(xiàn)漏洞而被黑客提 權(quán)至整臺(tái)服務(wù)器幸逆,默認(rèn)服務(wù)程序會(huì)有獨(dú)立的系統(tǒng)用戶負(fù)責(zé)運(yùn)行,進(jìn)而有效控制被破壞 范圍暮现;普通用戶 UID 從 1000 開(kāi)始秉颗,是由管理員創(chuàng)建的用于日常工作的用戶。
需要注意的是送矩,UID 是不能沖突的,而且管理員創(chuàng)建的普通用戶的 UID 默認(rèn)是從 1000 開(kāi)始的(即使前面有閑置的號(hào)碼)哪替。
另外栋荸,在 Linux 系統(tǒng)中創(chuàng)建每個(gè)用戶時(shí),將自動(dòng)創(chuàng)建一個(gè)與其同名的基本用戶組凭舶,而且 這個(gè)基本用戶組只有該用戶一個(gè)人晌块。如果該用戶以后被歸納入其他用戶組,則這個(gè)其他用戶 組稱之為擴(kuò)展用戶組帅霜。一個(gè)用戶只有一個(gè)基本用戶組匆背,但是可以有多個(gè)擴(kuò)展用戶組,從而滿 足日常的工作需要身冀。
1.1.4 passwd命令
語(yǔ)法:
? passwd [選項(xiàng)] 用戶名
功能描述:
? 設(shè)置或修改用戶密碼钝尸、過(guò)期時(shí)間、認(rèn)證信息等搂根。
選項(xiàng):
參數(shù) | 作用 |
---|---|
-l | lock珍促,鎖定用戶,禁止登錄 |
-u | unlock剩愧,解除鎖定猪叙,允許用戶登錄 |
-e | expire,強(qiáng)制用戶在下次登錄時(shí)修改密碼 |
-S | status,顯示yoghurt的密碼是否被鎖定穴翩,以及密碼采用的加密算法名稱 |
案例:
(1)修改其他賬戶密碼
[root@heimatengyun test]# passwd lover
Changing password for user lover.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
? 修改的密碼不能太簡(jiǎn)單犬第,否則修改不成功。修改成功后芒帕,即可使用賬戶進(jìn)行登錄歉嗓。在界面中登錄后,即可查看當(dāng)前登錄用戶
[root@heimatengyun test]# who
lover :0 2019-12-17 23:05 (:0)
root pts/0 2019-12-17 22:23 (192.168.78.1)
新建一個(gè)用戶副签,如果沒(méi)有設(shè)置密碼遥椿,則用戶無(wú)法直接登錄,只能通過(guò)root用戶使用su命令切換淆储。因此冠场,一般新建用戶就會(huì)同時(shí)設(shè)置密碼。也就是說(shuō)useradd和passed命令一般是一起使用本砰。
? 無(wú)論是普通用戶還是超級(jí)權(quán)限用戶都可以運(yùn)行passwd命令碴裙,但是如果是普通用戶則只能修改自己的密碼。配合選項(xiàng)參數(shù)可以實(shí)現(xiàn)更豐富的功能点额,具體用法可以通過(guò)man命令進(jìn)行查看舔株。
(2)鎖定及解鎖賬戶
假設(shè)你部門(mén)有一位同事要休假半年,那么可以通過(guò)-l參數(shù)鎖定用戶还棱,禁止其登錄载慈,等休假完畢回來(lái)上班后再使用-u參數(shù)將其解鎖。這樣避免了刪除用戶珍手、添加用戶帶來(lái)的麻煩同時(shí)也保證了這段時(shí)間內(nèi)系統(tǒng)的安全办铡。
[root@heimatengyun ~]# passwd -S test
test PS 2019-11-27 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@heimatengyun ~]# passwd -l test
Locking password for user test.
passwd: Success
[root@heimatengyun ~]# passwd -S test
test LK 2019-11-27 0 99999 7 -1 (Password locked.)
[root@heimatengyun ~]# passwd -u test
Unlocking password for user test.
passwd: Success
[root@heimatengyun ~]# passwd -S test
test PS 2019-11-27 0 99999 7 -1 (Password set, SHA512 crypt.)
1.1.5 usermod命令
語(yǔ)法:
? usermod [選項(xiàng)] 用戶名
功能描述:
? 修改用戶信息
Linux系統(tǒng)一切皆文件,修改用戶也就是修改配置文件琳要。用戶信息保存在/etc/passwd文件中寡具,可以直接采用文本編輯器修改也可以通過(guò)usermod命令進(jìn)行修改。
選項(xiàng):
參數(shù) | 作用 |
---|---|
-e | expiredate,賬號(hào)到期時(shí)間稚补,格式為YYYY-MM-DD |
-g | gid,變更所屬用戶組 |
-G | groups,變更擴(kuò)展用戶組 |
-L | lock,鎖定用戶禁止其登錄 |
-U | unlock,解鎖用戶童叠,允許其登錄 |
-u | uid,修改用戶的UID |
案例:
? 通過(guò)-G參數(shù)將上邊創(chuàng)建的lover用戶加入到root用戶組
[root@heimatengyun test]# id lover
uid=1001(lover) gid=1001(lover) groups=1001(lover)
[root@heimatengyun test]# usermod -G root lover
[root@heimatengyun test]# id lover
uid=1001(lover) gid=1001(lover) groups=1001(lover),0(root)
1.1.5 userdel命令
語(yǔ)法:
? userdel [選項(xiàng)] 用戶名
功能描述:
? 當(dāng)用戶不會(huì)再登錄系統(tǒng),則使用此命令刪除用戶
選項(xiàng):
參數(shù) | 作用 |
---|---|
-f | force课幕,強(qiáng)制刪除 |
-r | remove厦坛,刪除用戶及用戶家目錄 |
案例:
? 刪除之前創(chuàng)建的lover用戶,并刪除目錄
[root@heimatengyun home]# pwd
/home
[root@heimatengyun home]# ls
lover test
[root@heimatengyun home]# userdel -r lover
userdel: user lover is currently used by process 4419
[root@heimatengyun home]# userdel -rf lover
[root@heimatengyun home]# ls
test
? 刪除用戶時(shí)默認(rèn)會(huì)保留用戶主目錄乍惊,添加-r參數(shù)則會(huì)刪除home目錄下用戶主目錄粪般。-f表示強(qiáng)制刪除,由于前文通過(guò)界面上登錄了lover用戶污桦,所以提示有進(jìn)程在使用亩歹,通過(guò)-f強(qiáng)制刪除用戶匙监。
1.2 用戶組相關(guān)命令
1.2.1 groupadd命令
語(yǔ)法:
? groupadd [選項(xiàng)] 組名
功能描述:
? 添加用戶組,有時(shí)候?yàn)榱烁咝У墓芾硐到y(tǒng)中各個(gè)用戶的權(quán)限小作,經(jīng)常會(huì)將多個(gè)用戶添加到一個(gè)指定組中亭姥。
案例:
添加heima用戶組并查看組信息
[root@heimatengyun ~]# groupadd heima
[root@heimatengyun ~]# cat /etc/group
...省略部分內(nèi)容
test:x:1000:test
heima:x:1001:
/etc/group文件包含所有組信息,可以查看到剛才添加的heima用戶組顾稀。
/etc/group文件每行表示一條記錄达罗,標(biāo)識(shí)一個(gè)用戶組。每條記錄分為四個(gè)字段静秆,用冒號(hào)分割粮揉。第一字段:用戶組名稱;第二字段:用戶組密碼抚笔;第三字段:GID扶认;第四字段:用戶列表,每個(gè)用戶之間用逗號(hào)分隔殊橙,本字段可以為空
1.2.2 groupmod命令
語(yǔ)法:
? groupmod [選項(xiàng)] 新組名 老組名
功能描述:
選項(xiàng):
參數(shù) | 作用 |
---|---|
-n | 修改組名稱 |
案例:
(1)修改heima組名稱heimage
[root@heimatengyun ~]# groupmod -n heimage heima
[root@heimatengyun ~]# cat /etc/group
...省略部分內(nèi)容
test:x:1000:test
heimage:x:1001:
(2)新建并添加用戶到heimage組
[root@heimatengyun ~]# cat /etc/group
...省略部分內(nèi)容
test:x:1000:test
heimage:x:1001:
[root@heimatengyun ~]# useradd -g 1001 heimagege
[root@heimatengyun ~]# id heimagege
uid=1001(heimagege) gid=1001(heimage) groups=1001(heimage)
[root@heimatengyun ~]# cat /etc/group
...省略部分內(nèi)容
test:x:1000:test
heimage:x:1001:
[root@heimatengyun ~]# cat /etc/passwd
...省略部分內(nèi)容
heimagege:x:1001:1001::/home/heimagege:/bin/bash
1.2.3 groupdel命令
語(yǔ)法:
? groupdel 組名
功能描述:
? 刪除組辐宾,前提是組內(nèi)沒(méi)有用戶才能刪除
案例:
(1)刪除用戶組
[root@heimatengyun ~]# groupdel heimage
groupdel: cannot remove the primary group of user 'heimagege'
[root@heimatengyun ~]# userdel heimagege
[root@heimatengyun ~]# groupdel heimage
(2)查看組內(nèi)用戶
如案例1所示,如果組內(nèi)有用戶則無(wú)法直接刪除組膨蛮〉疲可以通過(guò)/etc/group文件匹配對(duì)應(yīng)的組名查看對(duì)應(yīng)組內(nèi)有哪些用戶
[root@heimatengyun ~]# grep 'test' /etc/group
test:x:1000:test
查找之前建的test組內(nèi)有哪些用戶,第四個(gè)字段即為該組內(nèi)所有用戶列表敞葛。
二誉察、文件及相關(guān)權(quán)限
2.1 文件權(quán)限
2.1.1 ll命令查看文件權(quán)限
Linux中一切皆文件,但是每個(gè)文件類型可能不同惹谐,如何區(qū)分文件類型呢持偏?每個(gè)文件都有所有者和所有組以及其他人對(duì)文件擁有的讀、寫(xiě)豺鼻、執(zhí)行權(quán)限,如何查看文件的這些權(quán)限呢款慨?
當(dāng)然是通過(guò)ls或ll命令就可以查看
[root@heimatengyun test]# ll
-rw-r--r--. 1 root root 9 Nov 30 20:43 test1.txt
drwxr-xr-x. 2 root root 6 Dec 20 11:32 test1
ll命令顯示結(jié)果詳解
以test1.txt文件為例儒飒,各部分代表的含義依次為如下
- 文件類型:
第一個(gè)字符“-”表示文件類型,此處表示test1.txt是一個(gè)普通文件檩奠。不同文件類型用不同字符表示桩了,文件類型與字符對(duì)應(yīng)關(guān)系如下
符號(hào) | 文件類型 |
---|---|
- | 普通文件 |
d | 目錄文件 |
l | 連接文件 |
b | 塊設(shè)備文件 |
c | 字符設(shè)備文件 |
p | 管理文件 |
s | 套接字文件 |
-
文件權(quán)限:
“rw-r--r--.”,可以分為四段,前三段每三位為一段埠戳,最后一個(gè)點(diǎn)單獨(dú)為一段井誉。第一段rw-表示文件創(chuàng)建者/所有者對(duì)該文件所具有的權(quán)限,第二段r--表示創(chuàng)建者/所有者所在的組的其他用戶所具有的權(quán)限整胃,第三段r--表示其他組的其他用戶所具有的權(quán)限颗圣。第四段.
字符 | 權(quán)限類型 |
---|---|
r | read,讀取權(quán)限,數(shù)字表示為4在岂。對(duì)文件而言奔则,具有讀取文件內(nèi)容的權(quán)限;對(duì)目錄來(lái)說(shuō)蔽午,具有瀏覽目錄的權(quán)限 |
w | write易茬,寫(xiě)入權(quán)限,數(shù)字表示為2及老。對(duì)文件而言抽莱,具有新增、修改文件內(nèi)容的權(quán)限骄恶;對(duì)目錄來(lái)說(shuō)食铐,具有刪除、移動(dòng)目錄內(nèi)文件的權(quán)限 |
x | execute叠蝇,執(zhí)行權(quán)限璃岳,數(shù)字表示為1。對(duì)文件而言悔捶,具有執(zhí)行文件的權(quán)限铃慷;對(duì)目錄來(lái)說(shuō),該用戶具有進(jìn)入目錄的權(quán)限蜕该。 |
s或S | SUID,Set UID犁柜,可執(zhí)行的文件搭配這個(gè)權(quán)限,便能得到特權(quán)堂淡,任意存取該文件的所有者能使用的全部系統(tǒng)資源馋缅。請(qǐng)注意具備SUID權(quán)限的文件,黑客經(jīng)常利用這種權(quán)限绢淀,以SUID配上root帳號(hào)擁有者萤悴,無(wú)聲無(wú)息地在系統(tǒng)中開(kāi)扇后門(mén),供日后進(jìn)出使用皆的。 |
t或T | sticky覆履,/tmp和 /var/tmp目錄供所有用戶暫時(shí)存取文件,亦即每位用戶皆擁有完整的權(quán)限進(jìn)入該目錄费薄,去瀏覽硝全、刪除和移動(dòng)文件。 |
.或+ | 如果為+表示設(shè)置了ACL |
此處test1.txt文件楞抡,其創(chuàng)建者/所有者具有可讀可寫(xiě)的權(quán)限伟众,其創(chuàng)建者/所有者所在的組的其他用戶具有可讀權(quán)限,其他組的其他用戶則具有可讀權(quán)限召廷。
文件權(quán)限除了可以使用rwx表示凳厢,也可以用數(shù)字表示账胧。如777代表:rwxrwxrwx(r=4,w=2数初,x=1找爱,4+2+1=7=rwx),由此可以看出數(shù)字表示會(huì)簡(jiǎn)潔一些泡孩。
-
連接個(gè)數(shù)
對(duì)于文件车摄,表示指向它的鏈接文件的個(gè)數(shù);對(duì)于目錄文件仑鸥,表示它的第一級(jí)子目錄的個(gè)數(shù)吮播。注意此處看到的值要減2才等于該目錄下的子目錄的實(shí)際個(gè)數(shù),比如test1目錄下其實(shí)并沒(méi)有任何文件和目錄眼俊,但此處顯示為2意狠,這是因?yàn)橐由?目錄和..目錄。在linux下疮胖,.目錄表示當(dāng)前目錄环戈,..目錄表示上一級(jí)目錄。
-
所有者和所屬組
表示該文件的所有者/創(chuàng)建者(owner)及其所在的組(group)澎灸。
-
文件大小
如果是文件院塞,則表示該文件的大小,單位為字節(jié)性昭。如果是目錄拦止,則表示該目錄符所占的大小,并不表示該目錄下所有文件的大小糜颠。
-
修改日期
該文件最后修改的日期時(shí)間汹族。
-
文件名稱
文件或目錄的名稱。
不同的shell窗口其兴,還能用顏色區(qū)分文件的屬性顶瞒,能一目了然通過(guò)顏色區(qū)分文件類型,普通文件元旬、可執(zhí)行文件榴徐、壓縮文件、目錄法绵、連接文件都有不同的顏色區(qū)分箕速。不同工具可以根據(jù)自己需要進(jìn)行顏色方案的修改和配置酪碘,這里就不說(shuō)了朋譬。
2.1.2 文件權(quán)限設(shè)置
2.1.2.1 chmod命令
語(yǔ)法:
? chmod [選項(xiàng)] [ugoa] [+-=] [rwx或數(shù)字] 文件或目錄
選項(xiàng)參數(shù):
選項(xiàng) | 含義 |
---|---|
-R | recursive,遞歸執(zhí)行 |
屬性符號(hào) | 作用 |
---|---|
u | 文件擁有者 |
g | 文件所屬組 |
o | 文件所屬組外的其他用戶 |
a | 所有用戶兴垦,相當(dāng)于是ugo同時(shí)使用 |
操作符號(hào) | 作用 |
---|---|
+ | 添加權(quán)限 |
- | 刪除權(quán)限 |
= | 設(shè)置權(quán)限徙赢,未指定的部分將被清除 |
權(quán)限符號(hào) | 作用 |
---|---|
r | 對(duì)于文件有查看權(quán)限字柠,對(duì)于目錄可以列出目錄內(nèi)容 |
w | 對(duì)于文件有修改權(quán)限,對(duì)于目錄可以在目錄中創(chuàng)建和刪除 |
x | 對(duì)于文件有執(zhí)行權(quán)限狡赐,對(duì)于目錄可以進(jìn)入目錄 |
功能描述:
? 改變文件或目錄權(quán)限
案例:
(1)分別通過(guò)ugoa添加文件的可執(zhí)行權(quán)限
[root@heimatengyun test1]# ll
total 8
-rw-r--r--. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod u+x hello
[root@heimatengyun test1]# ll
total 8
-rwxr--r--. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod g+x hello
[root@heimatengyun test1]# ll
total 8
-rwxr-xr--. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod o+x hello
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod a+x test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr-x. 1 root root 6 Dec 20 14:51 test
從示例可以看到可以通過(guò)u窑业、g、o分別對(duì)不同部分賦予權(quán)限枕屉,也可以直接用o一次性賦值常柄。根據(jù)實(shí)際需要靈活選擇即可。
(2)移除所有者或所屬組之外其他用戶的執(zhí)行權(quán)限
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr-x. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod o-x test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr--. 1 root root 6 Dec 20 14:51 test
(3)用數(shù)字設(shè)置權(quán)限
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod 777 test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test
(4)通過(guò)=號(hào)設(shè)置權(quán)限
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod o=w test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxrwx-w-. 1 root root 6 Dec 20 14:51 test
(5)改變目錄下所有文件
[root@heimatengyun test]# chmod -R 777 test1
[root@heimatengyun test]# ll
drwxrwxrwx. 2 root root 29 Dec 20 14:52 test1
[root@heimatengyun test]# cd test1/
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test
可以看到內(nèi)部的所有文件權(quán)限一次性被修改搀擂。
2.1.2.2 chown命令
語(yǔ)法:
? chown [選項(xiàng)] 最終用戶[:最終所屬組] 文件或目錄
參數(shù):
參數(shù) | 作用 |
---|---|
-R | 遞歸修改 |
功能描述:
? 改變文件或目錄的所有者
案例:
(1)修改文件所有者
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chown test test
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test root 6 Dec 20 14:51 test
(2)遞歸修改目錄及其下所有文件所有者
[root@heimatengyun test]# chown -R test:test /root/test/test1
[root@heimatengyun test]# ll
drwxrwxrwx. 2 test test 29 Dec 20 14:52 test1
[root@heimatengyun test]# cd test1/
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 test test 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test test 6 Dec 20 14:51 test
這種用法在修改所有者時(shí)同時(shí)修改了所屬組西潘。注意,修改的當(dāng)前目錄及其下的所有文件都會(huì)修改哨颂,上級(jí)目錄不會(huì)影響喷市。如此處的/root/test目錄不會(huì)變化,只會(huì)影響test1目錄威恼。
2.1.2.3 chgrp命令
語(yǔ)法:
? chgrp 最終用戶組 文件或目錄
功能描述:
? 改變文件或目錄的所屬組
案例:
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 test test 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test test 6 Dec 20 14:51 test
[root@heimatengyun test1]# chgrp root test
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 test test 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test root 6 Dec 20 14:51 test
2.2 文件特殊權(quán)限
? 單純?cè)O(shè)置文件的 rwx 一般權(quán)限無(wú)法滿足我們對(duì)安全和靈活性的需求品姓,因此便有了 SUID、SGID 與 SBIT 的特殊權(quán)限位箫措。
? 這是一種對(duì)文件權(quán)限進(jìn)行設(shè)置的特殊功 能腹备,可以與一般權(quán)限同時(shí)使用,以彌補(bǔ)一般權(quán)限不能實(shí)現(xiàn)的功能蒂破。
2.2.1 SUID
? 針對(duì)二進(jìn)制程序設(shè)置的特殊權(quán)限馏谨,可以讓二進(jìn)制程序的執(zhí)行者臨時(shí)擁有屬主的權(quán)限(僅對(duì)擁有執(zhí)行權(quán)限的二進(jìn)制程序有效)。SUID是一種有條件的附迷、臨時(shí)的特殊權(quán)限授權(quán)方法惧互,下文以passwd命令進(jìn)行介紹。
? 還記得1.1.4講的passwd命令嗎喇伯?該命令用于修改用戶密碼喊儡,所有用戶都可以執(zhí)行 passwd 命 令來(lái)修改自己的用戶密碼,而用戶密碼保存在/etc/shadow 文件中稻据,執(zhí)行passwd命令本質(zhì)就是修改shadow文件艾猜。
? 但仔細(xì)查看這個(gè)文件就會(huì)發(fā) 現(xiàn)它的默認(rèn)權(quán)限是 000,也就是說(shuō)除了 root 管理員以外捻悯,所有用戶都沒(méi)有查看或編輯該文件的權(quán)限匆赃。
[root@heimatengyun test1]# ll /etc/shadow
----------. 1 root root 1157 Dec 20 00:06 /etc/shadow
? 既然沒(méi)有此密碼文件讀寫(xiě)權(quán)限,那為何所有用戶都可以執(zhí)行命令修改密碼呢今缚?先不急算柳,我們來(lái)看看passed命令的權(quán)限。
[root@heimatengyun test1]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
? 可以看到所有者權(quán)限為rws姓言,以前講過(guò)可執(zhí)行權(quán)限為x瞬项,此處為s蔗蹋。對(duì),就是因?yàn)樗姓叩臋?quán)限由 rwx變成了rws囱淋,其中x改變成s就意味著該文件被賦予了SUID 權(quán)限猪杭。在使用 passwd 命令時(shí)如果加上 SUID 特殊權(quán)限位,就可讓普通用戶臨時(shí)獲得程序所有者的身份妥衣,把變更的密碼信息寫(xiě)入到 shadow 文件中皂吮。
說(shuō)明:設(shè)置SUID后,如果原本沒(méi)有執(zhí)行權(quán)限税手,則為S涮较,有執(zhí)行權(quán)限則為s。如rwx將變?yōu)閞ws冈止,rw-變?yōu)閞wS狂票。
設(shè)置SUID權(quán)限,就是使用之前介紹的chmod命令即可熙暴,針對(duì)命令或可執(zhí)行二進(jìn)制文件進(jìn)行設(shè)置闺属。
[root@heimatengyun test]# ll
-rwxrwxrwx. 1 root root 145 Dec 1 16:06 mypid.sh
[root@heimatengyun test]# chmod u+s mypid.sh
[root@heimatengyun test]# ll
-rwsrwxrwx. 1 root root 145 Dec 1 16:06 mypid.sh
2.2.2 SGID
主要應(yīng)用場(chǎng)景和功能有:
(1)讓執(zhí)行者臨時(shí)擁有所屬組權(quán)限,對(duì)擁有執(zhí)行權(quán)限的二進(jìn)制程序進(jìn)行設(shè)置周霉。
(2)在某個(gè)目錄中創(chuàng)建的文件自動(dòng)繼承該目錄的用戶組掂器,只可以對(duì)目錄進(jìn)行設(shè)置。
SGID 的第一種功能是參考 SUID 而設(shè)計(jì)的俱箱,不同點(diǎn)在于執(zhí)行程序的用戶獲取的不再是文 件所有者的臨時(shí)權(quán)限国瓮,而是獲取到文件所屬組的權(quán)限。
針對(duì)第二種功能狞谱,我們知道乃摹,每個(gè)文件都有其歸屬的所有者和所屬組,當(dāng)創(chuàng)建或傳送一個(gè)文件后跟衅,這個(gè)文件就會(huì)自動(dòng)歸屬于執(zhí)行這個(gè)操作的用戶孵睬,即該用戶就是文件的所有者。
假設(shè)有這樣一種情況伶跷,需要在部門(mén)內(nèi)創(chuàng)建一個(gè)共享目錄掰读,部門(mén)內(nèi)所有人員都能讀取目錄中的內(nèi)容。如果每個(gè)人都去建立各自的文件叭莫,所有者和所屬組都是創(chuàng)建者自己蹈集,別人無(wú)法使用。SGID的出現(xiàn)就是為了解決這個(gè)問(wèn)題雇初,創(chuàng)建部門(mén)共享目錄后拢肆,在該目錄上設(shè)置 SGID 特殊權(quán)限位。這樣,部門(mén)內(nèi)的任何人員在里面創(chuàng)建的任何文件都會(huì)歸屬于該目錄的所屬組善榛,而不再是自己的基本用戶組。
SGID功能就是在某個(gè)目錄中創(chuàng)建的文件自動(dòng)繼承該目錄的用戶組呻畸,只可以對(duì)目錄進(jìn)行設(shè)置移盆。
下面演示在目錄上創(chuàng)建SGID
[root@heimatengyun test]# mkdir sgid
[root@heimatengyun test]# ll
drwxr-xr-x. 2 root root 6 Dec 20 18:11 sgid
[root@heimatengyun test]# chmod 777 sgid/
[root@heimatengyun test]# ll
drwxrwxrwx. 2 root root 6 Dec 20 18:11 sgid
[root@heimatengyun test]# chmod g+s sgid/
[root@heimatengyun test]# ll
drwxrwsrwx. 2 root root 6 Dec 20 18:11 sgid
創(chuàng)建SGID后,就可以切換到普通用戶伤为,創(chuàng)建文件咒循,觀察文件的所屬組
[root@heimatengyun test]# su - test
Last login: Fri Dec 20 17:26:36 CST 2019 on pts/0
[test@heimatengyun ~]$ cd sgid/
[test@heimatengyun sgid]$ echo 'hello'>hello
[test@heimatengyun sgid]$ ll
total 4
-rw-rw-r--. 1 test root 6 Dec 20 18:14 hello
可以看到test普通用戶創(chuàng)建的文件所屬組變?yōu)榻o上層文件夾一致屬于root,不再屬于test自己绞愚。這樣針對(duì)所屬組設(shè)置權(quán)限叙甸,其他用戶就可以實(shí)現(xiàn)操作文件。
2.2.3 SBIT
SBIT 特殊權(quán)限位可確保用戶只能刪除自己的文件位衩,而不能刪除其他用戶的文件裆蒸。當(dāng)對(duì)某個(gè)目錄設(shè)置了 SBIT 粘滯位權(quán)限后,那么該目錄中的文件就只能被其所有者執(zhí)行刪除操作了糖驴。
回到上文的例子僚祷,當(dāng)一個(gè)部門(mén)共享一個(gè)目錄后,如何避免用戶刪除其他用戶的文件呢贮缕?顯然用SBIT就可以保證用戶不能刪除別人的文件辙谜。
設(shè)置目錄SBIT,同樣用chmod命令
[root@heimatengyun test]# mkdir sbit
[root@heimatengyun test]# ll
drwxr-xr-x. 2 root root 6 Dec 20 18:26 sbit
[root@heimatengyun test]# chmod -R o+t sbit/
[root@heimatengyun test]# ll
drwxr-xr-t. 2 root root 6 Dec 20 18:26 sbit
與前面所講的 SUID 和 SGID 權(quán)限顯示方法不同感昼,當(dāng)目錄被設(shè)置 SBIT 特殊權(quán)限位后装哆,文件的其他人權(quán)限部分的 x 執(zhí)行權(quán)限就會(huì)被替換成 t 或者 T,原本有 x 執(zhí)行權(quán)限則會(huì)寫(xiě)成 t定嗓,原本沒(méi)有 x 執(zhí)行權(quán)限則會(huì)被寫(xiě)成 T蜕琴。
我們仔細(xì)觀察,就會(huì)發(fā)現(xiàn)/tmp目錄其實(shí)就是默認(rèn)設(shè)置了SBIT宵溅,它是一個(gè)共享目錄奸绷,保證用戶只能刪除自己的文件。
[root@heimatengyun /]# ll -d /tmp/
drwxrwxrwt. 15 root root 4096 Dec 20 18:30 /tmp/
創(chuàng)建新用戶并在tmp下創(chuàng)建文件层玲,驗(yàn)證用其他用戶去刪除看能否刪除号醉,答案肯定是不能刪除的惨篱。
[root@heimatengyun /]# useradd heimagege
[root@heimatengyun /]# su - heimagege
[heimagege@heimatengyun ~]$ cd /tmp/
[heimagege@heimatengyun tmp]$ echo 'heimagege'>heimagege
[heimagege@heimatengyun tmp]$ ll
-rw-rw-r--. 1 heimagege heimagege 10 Dec 20 18:34 heimagege
[root@heimatengyun /]# su - test
Last login: Fri Dec 20 18:29:10 CST 2019 on pts/0
[test@heimatengyun ~]$ cd /tmp/
[test@heimatengyun tmp]$ rm -f heimagege
rm: cannot remove ‘heimagege’: Operation not permitted
2.3 文件隱藏屬性
? Linux 系統(tǒng)中的文件除了具備一般權(quán)限和特殊權(quán)限之外茬贵,還有一種隱藏權(quán)限,即被隱藏起 來(lái)的權(quán)限曙蒸,默認(rèn)情況下不能直接被用戶發(fā)覺(jué)润绵。當(dāng)你新接手一臺(tái)服務(wù)器线椰,碰到明明權(quán)限充足但卻無(wú)法刪除某個(gè)文件的情況,或者僅能在日志文件中追加內(nèi)容而不能修改或刪除內(nèi)容尘盼,這肯you可能就是設(shè)置了文件隱藏屬性憨愉。這種屬性在一定程度上阻止了黑客篡改系統(tǒng)日志的圖謀烦绳,因此這種“奇怪”的文件也保障了Linux 系統(tǒng)的安全性。
2.3.1 chattr命令
語(yǔ)法:
? chattr [選項(xiàng)] [+-=參數(shù)] 文件
選項(xiàng)及參數(shù):
選項(xiàng) | 作用 |
---|---|
R | 遞歸 |
參數(shù) | 作用 |
---|---|
i | 無(wú)法對(duì)文件進(jìn)行修改配紫;若對(duì)目錄設(shè)置了該參數(shù)径密,則僅能修改其中的子文件內(nèi)容 而不能新建或刪除文件 |
a | 僅允許補(bǔ)充(追加)內(nèi)容,無(wú)法覆蓋/刪除內(nèi)容(Append Only) |
S | 文件內(nèi)容在變更后立即同步到硬盤(pán)(sync) |
s | 徹底從硬盤(pán)中刪除躺孝,不可恢復(fù)(用 0 填充原文件所在硬盤(pán)區(qū)域) |
A | 不再修改這個(gè)文件或目錄的最后訪問(wèn)時(shí)間(atime) |
b | 不再修改文件或目錄的存取時(shí)間 |
d | 使用 dump 命令備份時(shí)忽略本文件/目錄 |
u | 當(dāng)刪除該文件后依然保留其在硬盤(pán)中的數(shù)據(jù)享扔,方便日后恢復(fù) |
功能描述:
? 設(shè)置文件的隱藏權(quán)限
案例:
通過(guò)隱藏屬性,設(shè)置文件不能刪除
[root@heimatengyun test]# echo 'test chattr'>testattr
[root@heimatengyun test]# chattr +a testattr
[root@heimatengyun test]# rm testattr
rm: remove regular file ‘testattr’? y
rm: cannot remove ‘testattr’: Operation not permitted
2.3.2 lsattr命令
語(yǔ)法:
? lsattr 文件
功能描述:
? 顯示文件的隱藏權(quán)限
案例:
? 查看文件隱藏屬性植袍,刪除隱藏屬性
[root@heimatengyun test]# lsattr testattr
-----a---------- testattr
[root@heimatengyun test]# chattr -a testattr
[root@heimatengyun test]# lsattr testattr
---------------- testattr
[root@heimatengyun test]# rm testattr
rm: remove regular file ‘testattr’? y
[root@heimatengyun test]#
? 可以看到惧眠,刪除隱藏屬性后文件刪除成功。
2.3 文件訪問(wèn)控制列表
前文講解的一般權(quán)限于个、特殊權(quán)限氛魁、隱藏權(quán)限都是針對(duì)某一類用戶設(shè)置的。如果希望對(duì)某個(gè)指定的用戶進(jìn)行單獨(dú)的權(quán)限控制厅篓,就需要用到文件 的訪問(wèn)控制列表(ACL)了呆盖。
2.3.1 setfacl命令
基于普通文件或目錄設(shè)置 ACL 其實(shí)就是針對(duì)指定的用戶或用戶組設(shè)置文件或目錄的操作權(quán)限。另外贷笛,如果針對(duì)某個(gè)目錄設(shè)置了 ACL应又,則目錄中 的文件會(huì)繼承其 ACL;若針對(duì)文件設(shè)置了 ACL乏苦,則文件不再繼承其所在目錄的 ACL株扛。
文件的 ACL 提供的是在所有者、所屬組汇荐、其他人的讀/寫(xiě)/執(zhí)行權(quán)限之外的特殊權(quán)限控制洞就,使用 setfacl 命令可以針對(duì)單一用戶或用戶組、單一文件或目錄來(lái)進(jìn)行讀/寫(xiě)/執(zhí)行權(quán)限的控制掀淘。
語(yǔ)法:
? setfacl [參數(shù)] 文件名稱
參數(shù)選項(xiàng):
參數(shù) | 作用 |
---|---|
-R | 遞歸參數(shù) |
-m | modify修改目錄或文件的ACL |
-b | 刪除擴(kuò)展ACL旬蟋,保留原有的基礎(chǔ)權(quán)限 |
功能描述:
? 管理文件的 ACL 規(guī)則
案例:
讓普通用戶能訪問(wèn)root目錄
[root@heimatengyun ~]# ll -d /root/
dr-xr-x---. 16 root root 4096 Dec 20 11:49 /root/
[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 18:34:47 CST 2019 on pts/0
[test@heimatengyun ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[test@heimatengyun ~]$ exit
logout
未設(shè)置ACL前其他用戶是不能訪問(wèn)root目錄的,設(shè)置root目錄ACL允許test訪問(wèn)革娄。
[root@heimatengyun ~]# setfacl -Rm u:test:rwx /root/
[root@heimatengyun ~]# ll -d /root/
dr-xrwx---+ 16 root root 4096 Dec 20 11:49 /root/
[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 22:10:26 CST 2019 on pts/0
[test@heimatengyun ~]$ ls /root/
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates Videos Desktop Downloads Music Public test
同時(shí)通過(guò)ll命令可以看到權(quán)限后邊的點(diǎn)變?yōu)榱?倾贰。這個(gè)標(biāo)識(shí)說(shuō)明已經(jīng)設(shè)置了ACL。
2.3.2 getfacl命令
語(yǔ)法:
? getfacl 文件名稱
功能描述:
? 查看文件上設(shè)置的ACL信息
案例:
(1)查看文件上設(shè)置的ACL
[test@heimatengyun ~]$ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::r-x
user:test:rwx
group::r-x
mask::rwx
other::---
(2)刪除文件ACL
[root@heimatengyun ~]# ll -d /root/
dr-xrwx---+ 16 root root 4096 Dec 20 11:49 /root/
[root@heimatengyun ~]# setfacl -b /root/
[root@heimatengyun ~]# ll -d /root/
dr-xr-x---. 16 root root 4096 Dec 20 11:49 /root/
2.4 臨時(shí)權(quán)限提升
? 平時(shí)學(xué)習(xí)一般直接用root可以避免各種配置服務(wù)或權(quán)限導(dǎo)致的干擾問(wèn)題拦惋,使得學(xué)習(xí)中心放在相應(yīng)的知識(shí)點(diǎn)上匆浙。但是正式工作中,往往很少用root操作厕妖,因此可能會(huì)涉及用戶切換以及用戶提權(quán)問(wèn)題首尼。
2.4.1 su命令
? su 命令可以解決切換用戶身份的需求,使得當(dāng)前用戶在不退出登錄的情況下,順暢地切 換到其他用戶软能。
? 由于前文已經(jīng)演示了su命令的用法迎捺,因此不再贅述。只是要注意su命令與用戶名之間有一個(gè)減號(hào)(-)查排,這意味著完全切 換到新的用戶凳枝,即把環(huán)境變量信息也變更為新用戶的相應(yīng)信息,而不是保留原始的信息雹嗦。強(qiáng) 烈建議在切換用戶身份時(shí)添加這個(gè)減號(hào)(-)。另外合是,當(dāng)從 root 管理員切換到普通用戶時(shí)是不需要密碼驗(yàn)證的了罪,而從普通用戶切換成 root 管理員就需要進(jìn)行密碼驗(yàn)證了;這也是一個(gè)必要的安全檢查聪全。
2.4.2 sudo命令
? 盡管使用 su 命令后泊藕,普通用戶可以完全切換到 root 管理員身份來(lái)完成相應(yīng)工作,但這將暴露 root 管理員的密碼难礼,從而增大了系統(tǒng)密碼被黑客獲取的幾率娃圆;這并不是最安全的方案。
? sudo 命令可以把特定命令的執(zhí)行權(quán)限賦予給指定用戶而無(wú)需給出root密碼蛾茉, 這樣既可保證普通用戶能夠完成特定的工作讼呢,也可以避免泄露 root 管理員密碼。
語(yǔ)法格式:
? sudo [參數(shù)] 命令
參數(shù):
參數(shù) | 作用 |
---|---|
-l | 列出當(dāng)前用戶可執(zhí)行的命令 |
功能描述:
? sudo 命令用于給普通用戶提供額外的權(quán)限來(lái)完成原本 root 管理員才能完成的任務(wù)谦炬。
? 使用sudo之前需要先配置sudo服務(wù)悦屏,配置文件為/etc/sudoers,可以直接編輯此文件键思,也可以使用visudo命令進(jìn)行配置础爬。
案例:
(1)為普通用戶test添加sudo權(quán)限
? 未為普通用戶配置sudo服務(wù)時(shí),通過(guò)sodo命令查看能執(zhí)行的命令吼鳞,將提升沒(méi)有配置看蚜。
[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 22:14:02 CST 2019 on pts/0
[test@heimatengyun ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for test:
Sorry, user test may not run sudo on heimatengyun.
? 通過(guò)visudo命令,在“root ALL=(ALL) ALL”后仿照添加“test ALL=(ALL) ALL”赔桌,然后保存退出供炎。操作方式跟vi編輯器一致。
配置內(nèi)容解釋:test ALL=(ALL) ALL 其中test為用戶名疾党,表示誰(shuí)可以使用sudo碱茁,第一個(gè)ALL表示是運(yùn)行使用的主機(jī),等號(hào)之后括號(hào)內(nèi)的ALL表示以誰(shuí)的身份執(zhí)行仿贬,最后的ALL表示可執(zhí)行命令的列表纽竣。“誰(shuí)可以使用 允許使用的主機(jī)=(以誰(shuí)的身份) 可執(zhí)行命令的列表”
配置后,再次使用test用戶來(lái)查看蜓氨,將得出如下結(jié)果:
[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 22:41:52 CST 2019 on pts/0
[test@heimatengyun ~]$ sudo -l
[sudo] password for test:
Matching Defaults entries for test on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User test may run the following commands on this host:
(ALL) ALL
表明針對(duì)test用戶的sudo服務(wù)配置成功聋袋。配置成功之后,就可以采用sudo提升test用戶的權(quán)限了穴吹。
[test@heimatengyun ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[test@heimatengyun ~]$ sudo ls /root/
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates Videos
Desktop Downloads Music Public test
[test@heimatengyun ~]$
是不是很神奇幽勒,test用戶通過(guò)sudo提權(quán)就可以看到root目錄內(nèi)容了。
(2)按需為用戶配置sudo權(quán)限
我們前邊直接給了ALL最大的權(quán)限港令,實(shí)際情況應(yīng)該按需分配最小權(quán)限啥容,比如我們只給test用戶cat命令權(quán)限。
通過(guò)whereis命令查看cat所在路徑顷霹,一定要給命令的絕對(duì)路徑咪惠,不然系統(tǒng)無(wú)法識(shí)別命令。
[test@heimatengyun ~]$ whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
通過(guò)visudo命令修改之前添加的內(nèi)容為:test ALL=(ALL) /usr/bin/cat淋淀。保存后切換到test普通用戶查看效果
[root@heimatengyun ~]# visudo
...省略部分內(nèi)容
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
#test ALL=(ALL) ALL
test ALL=(ALL) /usr/bin/cat
...省略部分內(nèi)容
[test@heimatengyun ~]$ sudo -l
[sudo] password for test:
Matching Defaults entries for test on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User test may run the following commands on this host:
(ALL) /usr/bin/cat
[test@heimatengyun ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[test@heimatengyun ~]$ sudo cat /etc/shadow
...省略部分內(nèi)容
heimagege:!!:18250:0:99999:7:::
[test@heimatengyun ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[test@heimatengyun ~]$
從實(shí)驗(yàn)結(jié)果可以看出遥昧,配置cat命令后,只能執(zhí)行cat命令朵纷,再次使用ls命令就不能看到root目錄內(nèi)容炭臭。這樣權(quán)限就得到了很好的控制。
學(xué)習(xí)完用戶及文件相關(guān)權(quán)限知識(shí)后袍辞,下一篇文章我們將講解防火墻相關(guān)知識(shí)鞋仍。