一.shell外殼的理解
Linux嚴(yán)格意義上說(shuō)的是一個(gè)操作系統(tǒng),我們稱(chēng)之為"核心(kernel)",
但我們一般用戶(hù),不能直接使用kernel。
而是通過(guò)kernel的“外殼”程序,也就是所謂的shell,來(lái)與kernel溝通。
1.為什么需要有shell外殼的存在?
操作系統(tǒng)本身是需要易用程度和安全性的
而對(duì)于我們使用電腦的普通用戶(hù)來(lái)說(shuō),我們是不能直接訪問(wèn)操作系統(tǒng)的
為什么我們不能直接訪問(wèn)操作系統(tǒng)呢?
因?yàn)閷?duì)于我們絕大多數(shù)人來(lái)說(shuō),我們對(duì)于操作系統(tǒng)并不熟悉,如果允許我們直接訪問(wèn)操作系統(tǒng),勢(shì)必會(huì)出現(xiàn)一些錯(cuò)誤,所以需要有一個(gè)中間者
2.什么是shell外殼?
這個(gè)中間者的核心工作就是
將使用者的命令翻譯給核心(kernel)處理。
同時(shí),將核心的處理結(jié)果翻譯給使用者。
在Linux中這個(gè)中間者就是shell外殼
在windows中這個(gè)中間者就是圖形化界面
shell外殼的本質(zhì)就是一個(gè)執(zhí)行起來(lái)的程序(進(jìn)程),在系統(tǒng)啟動(dòng)期間一直存在
3.shell外殼的運(yùn)行原理是什么?
1.當(dāng)用戶(hù)想要執(zhí)行的指令有風(fēng)險(xiǎn)時(shí)(例如用戶(hù)自定義的指令),shell都是通過(guò)創(chuàng)建子進(jìn)程的方式去讓子進(jìn)程執(zhí)行有風(fēng)險(xiǎn)的指令
2.對(duì)于低風(fēng)險(xiǎn)的指令,shell外殼會(huì)自己去執(zhí)行
3.每一次你進(jìn)行xshell登陸的時(shí)候,操作系統(tǒng)都要給你這個(gè)用戶(hù)的當(dāng)前登陸創(chuàng)建一個(gè)shell,bash
4.shell和bash的關(guān)系
bash時(shí)shell外殼的一種,shell外殼還有其他的一些種類(lèi),bash屬于shell外殼這個(gè)集合
二.Linux中的用戶(hù)權(quán)限
1.用戶(hù)分類(lèi)與身份切換
1.用戶(hù)分類(lèi)
Linux中的用戶(hù)分為
1.root用戶(hù)(超級(jí)管理員)
2.非root用戶(hù),也就是普通用戶(hù)(xxx)
2.root用戶(hù)切換為普通用戶(hù)
1.su 用戶(hù)名
我們現(xiàn)在是root用戶(hù),想要切換為普通用戶(hù)wzs
執(zhí)行su wzs即可
無(wú)需輸入wzs用戶(hù)的密碼
切換后當(dāng)前所處目錄不變
2.su - 用戶(hù)名
本質(zhì):退出root用戶(hù),以wzs用戶(hù)的身份重新登陸,登陸后進(jìn)入wzs用戶(hù)的家目錄
3.普通用戶(hù)切換為root用戶(hù)
1.su命令
我們當(dāng)前是wzs用戶(hù),執(zhí)行su命令并輸入root用戶(hù)的密碼后切換為root用戶(hù)
并且我們所處的目錄不變
2.su-命令
我們當(dāng)前是wzs用戶(hù),執(zhí)行su -命令并輸入root用戶(hù)的密碼后切換為root用戶(hù)
所處目錄更新為root用戶(hù)的家目錄
本質(zhì)上來(lái)說(shuō)就相當(dāng)于退出當(dāng)前用戶(hù)并以root用戶(hù)的身份重新登陸
4.普通用戶(hù)想要切換成另一個(gè)普通用戶(hù)
這些命令需要使用root用戶(hù)的身份去執(zhí)行
在這里我們補(bǔ)充一個(gè)命令:adduser 用戶(hù)名:添加用戶(hù)
passwd 用戶(hù)名:設(shè)置該用戶(hù)的密碼
userdel -r 用戶(hù)名:刪除用戶(hù)
我們?cè)谶@里使用root的身份新添加了一個(gè)用戶(hù)zs
并且設(shè)置了這個(gè)用戶(hù)的密碼
我們現(xiàn)在是wzs用戶(hù),想要切換為zs
我們這里以su命令為例,su zs,并且輸入zs的密碼才可以切換為zs
而另一種方法是:從wzs用戶(hù)切換為root用戶(hù),然后再切換為zs,這個(gè)過(guò)程只需要root用戶(hù)的密碼,不需要zs的密碼
可見(jiàn)root用戶(hù)的密碼非常強(qiáng)大,非常重要,那么什么樣的人才會(huì)具有root密碼呢?
一般是管理員
2.sudo命令
如果一個(gè)普通用戶(hù)不想把自己變成root,但是還想讓我自己以root的權(quán)限執(zhí)行一條命令
sudo 想要執(zhí)行的命令(對(duì)指定的指令進(jìn)行提權(quán))
那么這個(gè)時(shí)候就有一個(gè)問(wèn)題了,
如果我們輸入sudo就可以以root用戶(hù)的身份執(zhí)行指定的命令,那么root用戶(hù)的密碼不就毫無(wú)意義了嗎?
答案是:不是的,因?yàn)閟udo命令不是一般用戶(hù)能夠執(zhí)行的
比方說(shuō)我現(xiàn)在是zs,我先使用root用戶(hù)的身份執(zhí)行l(wèi)s命令,那么我就
sudo ls
結(jié)果:被拒絕了
只有一個(gè)用戶(hù)的用戶(hù)名在sudoers file這個(gè)配置文件中,才允許這個(gè)用戶(hù)執(zhí)行sudo
否則,不允許他執(zhí)行sudo命令
那么如何把某個(gè)用戶(hù)的用戶(hù)名添加進(jìn)sudoers這個(gè)配置文件中呢?
在學(xué)完vim的時(shí)候我們會(huì)進(jìn)行介紹
三.文件權(quán)限
在我們的日常生活中有各種各樣的權(quán)限,所謂權(quán)限就一定是用來(lái)限制一部分人的操作的
例如:在CSDN上有一些文章只有vip才能看,leetcode上有些題是會(huì)員專(zhuān)屬題只有會(huì)員才能做…等等等等
而且不同的應(yīng)用程序或者網(wǎng)站場(chǎng)所等等都是只能提供一些特定的服務(wù)的
例如:
我們?cè)趷?ài)奇藝當(dāng)中就不能刷算法題,在leetcode中就不能看電影…等等等等
就算我們同時(shí)是愛(ài)奇藝和leetcode的會(huì)員,也無(wú)法做到這些事情
因?yàn)閻?ài)奇藝本來(lái)就無(wú)法刷算法題,leetcode本來(lái)就不能看電影
也就是說(shuō)對(duì)于一些應(yīng)用程序或者網(wǎng)站場(chǎng)所,它沒(méi)有提供那個(gè)服務(wù),就算我們權(quán)限是最高級(jí)別的,
也無(wú)法要求它去提供對(duì)應(yīng)的服務(wù)
1.身份角色
我們前面提到過(guò)Linux中一切皆文件
那么對(duì)于某個(gè)文件來(lái)說(shuō)有三種身份角色
1.文件的擁有者
2.文件的所屬組
3.other
2.為什么要有所屬組?
大家可能會(huì)想了,文件的擁有者和other我知道為什么要有,但是為什么要有所屬組呢?
我們未來(lái)的項(xiàng)目開(kāi)發(fā)都是團(tuán)隊(duì)合作的,我們的代碼很有可能也是需要被團(tuán)隊(duì)內(nèi)部所能夠訪問(wèn)的,因此為了區(qū)分團(tuán)隊(duì)內(nèi)部成員跟other,Linux創(chuàng)建了所屬組這個(gè)身份角色
而對(duì)于一個(gè)文件來(lái)說(shuō)最重要的就是這三個(gè)屬性:
r:讀屬性
w:寫(xiě)屬性
x:執(zhí)行屬性
我們只用wzs用戶(hù)創(chuàng)建了一個(gè)新文件test.txt
-rw-rw-r--
這個(gè)第一個(gè)-指的是test.txt這個(gè)文件不是目錄文件
第2,3,4個(gè)分別是rw-:指的是文件擁有者對(duì)于這個(gè)文件擁有讀,寫(xiě)權(quán)限,沒(méi)有執(zhí)行權(quán)限
第5,6,7個(gè)分別是rw-:指的是文件所屬組對(duì)于這個(gè)文件擁有讀,寫(xiě)權(quán)限,沒(méi)有執(zhí)行權(quán)限
第8,9,10個(gè)分別是r--:指的是other對(duì)于這個(gè)文件擁有讀權(quán)限,沒(méi)有寫(xiě)和執(zhí)行權(quán)限
文件的詳細(xì)屬性(樣例):
跟剛才舉的現(xiàn)實(shí)生活中的例子相同的一點(diǎn):
如果一個(gè)文件本來(lái)就沒(méi)有執(zhí)行的屬性,就算你擁有這個(gè)文件執(zhí)行的權(quán)限,你也執(zhí)行不了這個(gè)文件,因?yàn)檫@個(gè)文件本來(lái)就不是一個(gè)可執(zhí)行文件
所以Linux文件如果想要能夠執(zhí)行:
1.必須具有可執(zhí)行權(quán)限x
2.它必須真的是一個(gè)可執(zhí)行程序
3.如何更改權(quán)限?
1.chmod ugoa ± rwx file
u:user(文件的擁有者)
g:group(文件的所屬組)
o:other
a:all(所有人)
+:添加對(duì)應(yīng)權(quán)限
-:取消對(duì)應(yīng)權(quán)限
rwx:讀寫(xiě)執(zhí)行權(quán)限
file:要修改權(quán)限的文件名
這里以test.txt為例:
例如我現(xiàn)在想要?jiǎng)h除所有人的所有權(quán)限
例如我現(xiàn)在想要增加user的rwx權(quán)限
這時(shí)test.txt對(duì)于擁有者來(lái)說(shuō)具有了執(zhí)行權(quán)限,但是test.txt不是一個(gè)可執(zhí)行程序
所以我./test.txt
去執(zhí)行,沒(méi)有任何反應(yīng)
2.利用8進(jìn)制設(shè)置文件權(quán)限
我們發(fā)現(xiàn)對(duì)于某個(gè)文件權(quán)限來(lái)說(shuō),這個(gè)文件權(quán)限一共有9個(gè)字符
對(duì)應(yīng)到每個(gè)角色身上一共有3個(gè)字符,每個(gè)位置一共有兩種狀態(tài),
一種是擁有這個(gè)權(quán)限,另一種是沒(méi)有這個(gè)權(quán)限
如果我們用0來(lái)表示對(duì)應(yīng)位置沒(méi)有該權(quán)限,1來(lái)表示對(duì)應(yīng)位置有該權(quán)限
所以我們可以用1個(gè)8進(jìn)制數(shù)字來(lái)代表一個(gè)角色的權(quán)限,用3個(gè)8進(jìn)制數(shù)字來(lái)代表整個(gè)文件的權(quán)限
例如:111:rwx權(quán)限都有
101:擁有r和x權(quán)限,沒(méi)有w權(quán)限
所以我們可以這樣去做
比方說(shuō)我現(xiàn)在想設(shè)置test.txt的權(quán)限為:擁有者:rwx,所屬組:r-x,other:—
對(duì)應(yīng)到8進(jìn)制表示為:750
4.root用戶(hù)面前權(quán)限有作用嗎?
沒(méi)有作用
比方說(shuō)我現(xiàn)在把test.txt的權(quán)限清空,轉(zhuǎn)為root用戶(hù)去添加內(nèi)容,讀取內(nèi)容
絲毫沒(méi)有任何約束
為了便于下面的操作,我新建了幾個(gè)目錄
5.chown和chgrp
那么我們來(lái)示范一下:
我現(xiàn)在想把這個(gè)文件給zs
但是給不了,為什么呢?
首先我們先明確一點(diǎn):
那么怎么才能給他呢?
一般來(lái)說(shuō)都是要用root去給,或者sudo指令提權(quán)
也就是這樣:
使用root用戶(hù)強(qiáng)制把這個(gè)文件給張三
那么能不能一起改呢?
答案是:可以的
6.own和grp一起改
比方說(shuō)我想把這個(gè)文件的擁有者改成wzs,所屬組改成zs
7. 匹配原則:
當(dāng)一個(gè)人同時(shí)是文件的擁有者和所屬組時(shí),會(huì)先匹配他是擁有者,然后只看他作為擁有者的權(quán)限,不去看他作為所屬組的權(quán)限
當(dāng)我把文件的擁有者給root之后,我只是文件的所屬組,那我就擁有了對(duì)于這個(gè)文件而言所屬組的r權(quán)限了
四.文件類(lèi)型
1.Linux中的文件類(lèi)型
我們可以通過(guò)ll來(lái)查看Linux中的文件類(lèi)型
我們先簡(jiǎn)單介紹一下鏈接文件和管道文件
1.鏈接文件
我們先創(chuàng)建一個(gè)test.c文件
然后我們gcc編譯一下test.c文件,并且把生成的可執(zhí)行程序a.out重命名為mycmd
然后把mycmd移動(dòng)到dir/dir1/dir2/dir3的路徑中
那么這個(gè)時(shí)候如果我想要在當(dāng)前這個(gè)目錄就能去執(zhí)行mycmd,
那么我們只能
這樣的話就不是很好,有點(diǎn)太麻煩了
這個(gè)時(shí)候鏈接文件就可以派上用場(chǎng)了
顯而易見(jiàn),這個(gè)鏈接文件就相當(dāng)于我們?cè)趙indows系統(tǒng)中創(chuàng)建的快捷方式
而且,在Linux中跟在windows系統(tǒng)中一樣,刪除快捷方式并不會(huì)影響到原來(lái)的可執(zhí)行程序
在現(xiàn)在而言,我們就把它簡(jiǎn)單地理解為是快捷方式,這個(gè)鏈接文件我們以后還會(huì)遇到的
2.管道文件
管道文件跟我們之前介紹過(guò)的管道有非常緊密的聯(lián)系,
我們可以先借助管道的作用來(lái)類(lèi)比一下這個(gè)管道文件
如圖,我們?cè)诘谝粋€(gè)終端當(dāng)中向管道文件mypipe中寫(xiě)入hello Linux.然后第一個(gè)終端就阻塞了.一直等到我們?cè)诹硪粋€(gè)終端中接收這個(gè)hello Linux,
也就是說(shuō)借助管道文件,我們就可以在兩個(gè)終端之間進(jìn)行信息交流了
管道文件和鏈接文件我們以后會(huì)詳細(xì)介紹
2.Linux中的文件后綴名
Linux中的文件類(lèi)型不通過(guò)后綴區(qū)分(但是:不代表Linux中后綴沒(méi)有作用,后綴名還是有很大的作用的)
1.Linux中的文件類(lèi)型是不通過(guò)后綴名區(qū)分的
首先,Linux中文件類(lèi)型不通過(guò)后綴名區(qū)分,這個(gè)怎么理解?
首先我們用nano在test.c文件中寫(xiě)了一段C語(yǔ)言代碼
無(wú)論我怎么修改這個(gè)可執(zhí)行文件a.out的名字,我都是可以直接運(yùn)行的
這也就說(shuō)明了Linux下的文件類(lèi)型是不通過(guò)后綴區(qū)分的
2.Linux中的后綴名的作用
1.Linux中的工具需要通過(guò)后綴名去區(qū)分文件類(lèi)型
你不是剛才說(shuō)過(guò)Linux中的文件類(lèi)型是不通過(guò)后綴名區(qū)分的嗎?
你現(xiàn)在怎么又說(shuō)Linux中的工具需要通過(guò)后綴名去區(qū)分文件類(lèi)型呢?
注意:Linux和Linux中的工具不是一回事
這里的Linux指的是Linux操作系統(tǒng),
Linux操作系統(tǒng)跟Linux上面的工具,指令,編譯器并不相同,也不包含
也就是說(shuō),這兩句話沒(méi)有任何沖突,矛盾的地方
下面給大家看一下演示:
我們把test.c重命名位test.txt,然后gcc編譯,發(fā)現(xiàn)報(bào)錯(cuò),無(wú)法編譯
這也就說(shuō)明了Linux中的工具需要通過(guò)后綴名去區(qū)分文件類(lèi)型
2.Linux中的后綴名也是為了方便我們?nèi)ミM(jìn)行操作
3.總結(jié)
3.file指令
file 文件名
file指令可以更加詳細(xì),直接地查看某一個(gè)文件的屬性
五.常見(jiàn)的權(quán)限三個(gè)問(wèn)題
一.目錄文件的權(quán)限知識(shí)
為了方便講解,我們把mycmd.mp4和test.txt文件都刪除了
只剩下了一個(gè)mydir目錄文件
現(xiàn)在我身為mydir這個(gè)目錄的擁有者,我可以進(jìn)入mydir
查看mydir中的文件
在mydir中創(chuàng)建文件
在mydir中刪除文件
下面我們分別去掉對(duì)應(yīng)權(quán)限看一下這一連串操作有哪些會(huì)受到影響
不過(guò)再此之前,我們?cè)谥匦聞?chuàng)建test.txt文件,并向里面寫(xiě)入一些數(shù)據(jù)
1.r權(quán)限
我連ls命令都執(zhí)行不了,也就是說(shuō)我根本連查看這個(gè)目錄當(dāng)中有什么什么文件的權(quán)限都沒(méi)有
那么我可以寫(xiě)文件嗎?
創(chuàng)建一個(gè)文件可以,查看一個(gè)文件的內(nèi)容也可以,甚至我也可以刪除一個(gè)文件
但是我連這個(gè)目錄當(dāng)中有什么類(lèi)型的文件都無(wú)法知道
對(duì)于目錄文件而言
r:決定了是否可以進(jìn)行對(duì)文件屬性信息進(jìn)行查看的權(quán)利(ll/ls -l)
2.w權(quán)限
我們無(wú)法新建一個(gè)文件,刪除一個(gè)文件
但是可以查看一個(gè)文件的內(nèi)容,修改一個(gè)文件的內(nèi)容
對(duì)于目錄文件而言
w:決定了是否可以在目錄下進(jìn)行新建和刪除文件
3.x權(quán)限
我無(wú)法進(jìn)入mydir,也無(wú)法查看里面的內(nèi)容,也無(wú)法對(duì)里面的文件進(jìn)行任何修改,無(wú)法新建和刪除文件
對(duì)于目錄文件而言:
x:決定是否可以進(jìn)入該目錄
二.文件的默認(rèn)權(quán)限
我們新建一個(gè)普通文件和一個(gè)目錄文件
然后ll查看他們的屬性
發(fā)現(xiàn)我們創(chuàng)建的普通文件:默認(rèn)的權(quán)限不是777,而是664
我們創(chuàng)建的目錄文件:默認(rèn)的權(quán)限不是777,而是775
為什么呢?
1.權(quán)限角度來(lái)理解
1.普通文件
首先,我們知道如果一個(gè)普通文件有x權(quán)限,那么這個(gè)文件就有可能是可執(zhí)行文件
而可執(zhí)行文件只是這普通文件中的一種而已,占比并不大
所以Linux中的文件剛剛創(chuàng)建的時(shí)候,默認(rèn)的權(quán)限應(yīng)該是不帶有x的
也就是說(shuō)默認(rèn)的起始權(quán)限應(yīng)該是666
那么為什么是664呢?
我們又注意到,666和664的區(qū)別是:
666:對(duì)于other來(lái)說(shuō)是rw-
664:對(duì)于other來(lái)說(shuō)是r–
也就是說(shuō)默認(rèn)權(quán)限將other的w權(quán)限取消,這也合情合理,因?yàn)槟鉶ther本來(lái)就不應(yīng)該擁有能夠修改我這個(gè)文件的權(quán)限
2.目錄文件
首先,對(duì)于一個(gè)目錄文件來(lái)說(shuō),進(jìn)入目錄,查看目錄內(nèi)容,查看對(duì)應(yīng)的文件內(nèi)容,新建/刪除/修改某個(gè)文件都是有必要的,因此起始權(quán)限應(yīng)該是777
那么為什么要是775呢?
777:other:rwx
775:other:r-x
也就是說(shuō)默認(rèn)權(quán)限將other的w權(quán)限取消,這也合情合理,因?yàn)槟鉶ther本來(lái)就沒(méi)有不應(yīng)該擁有能夠在我的目錄中新建,修改,刪除文件的權(quán)限
2.通過(guò)(umask:權(quán)限掩碼)的具體實(shí)現(xiàn)
那么Linux是怎么實(shí)現(xiàn)的呢?
是通過(guò)umask掩碼來(lái)實(shí)現(xiàn)的
這個(gè)umask的作用是:定制一個(gè)文件被創(chuàng)建的時(shí)候的默認(rèn)權(quán)限
我們可以通過(guò)umask命令來(lái)看一下對(duì)應(yīng)的umask掩碼
而且umask是可以修改的
比方說(shuō)我想把它改成0003
然后我再去創(chuàng)建一個(gè)普通文件,一個(gè)目錄文件
發(fā)現(xiàn):普通文件:664,目錄文件:774
那么它是怎么實(shí)現(xiàn)的呢?
1.實(shí)現(xiàn)的理解
然后我們可能會(huì)想:這還不簡(jiǎn)單,
直接相減不就ok了嗎?
或者:
異或一下不就ok了嗎?
1.異或的錯(cuò)誤
首先我們先證明一下為什么異或不對(duì)
我們提到過(guò)umask等于0003時(shí),
普通文件:664,目錄文件:774
那么我們用異或和普通文件為例來(lái)推導(dǎo)一下
看能否得出664
異或得出665來(lái),所以異或失敗
2.減法的錯(cuò)誤
還是以上面那個(gè)為例
減法出來(lái)的是663,不對(duì)
2.實(shí)現(xiàn)方法
其實(shí),實(shí)現(xiàn)方法是:
這么神奇,其實(shí)原理是這樣的
只有當(dāng)文件權(quán)限為1并且umask對(duì)應(yīng)位置的數(shù)據(jù)也為1時(shí),才會(huì)將文件權(quán)限的那個(gè)1改為0
umask先按位取反后,
就只需要讓文件權(quán)限為1并且umask對(duì)應(yīng)位置的數(shù)據(jù)為0時(shí),將那個(gè)1改為0,如果文件的權(quán)限為0,依然保持是0
也就是說(shuō)只有當(dāng)文件權(quán)限為1并且umask對(duì)應(yīng)位置的數(shù)據(jù)也是1的時(shí)候,該文件的權(quán)限才會(huì)保持是1,否則就是0
這不就是按位與(&)運(yùn)算嗎
三.粘滯位
1.一個(gè)現(xiàn)象
比方說(shuō)有一天,root想要捉弄一下zs,但是"玩笑"開(kāi)的太大了
什么玩笑呢?
root在zs的目錄中創(chuàng)建了一大堆文件,
而且創(chuàng)建文件之后會(huì)還把這些文件的權(quán)限置為了000
關(guān)于這個(gè)shell腳本命令
我之前在Linux常見(jiàn)指令2中提到過(guò)
i=0; while [ $i -le 100 ]; do echo "hello $i";touch $i.txt; let i++;done
i=0; while [ $i -le 100 ];do chmod a-rwx $i.txt; let i++;done
權(quán)限是000,所以zs無(wú)法查看,修改這些文件,
但是root不受權(quán)限的約束,所以root可以隨意操作這些文件
然后zs的工作環(huán)境非常糟糕,zs找了root很多次,root每次都是嘴上道歉,說(shuō)一定會(huì)刪了那些文件的,但是root沒(méi)有一次真正去刪過(guò)
后來(lái)zs受不了了,直接rm 全刪了
可是那些文件zs沒(méi)有任何權(quán)限啊,zs是怎么做到的呢?
因?yàn)檫@是zs的家目錄,這個(gè)目錄是zs的,zs作為這個(gè)目錄的擁有者
擁有w權(quán)限,因此即使你root在我zs的目錄下面搗亂,你建的文件,你把文件的權(quán)限全都關(guān)了,zs沒(méi)法看,沒(méi)法修改,但是zs能刪除
也就是說(shuō):
一個(gè)文件能否被刪除,并不取決于文件本身,而是取決于文件所處的目錄的擁有者是否具有w權(quán)限!
2.那么zs該不該刪呢?
而且我們系統(tǒng)的家目錄本來(lái)就只允許這個(gè)家的主人(對(duì)應(yīng)家目錄的創(chuàng)建者)進(jìn)入,所以一般情況下是不會(huì)出現(xiàn)我wzs在你zs的目錄中創(chuàng)建文件的.所以?xún)蓚€(gè)普通用戶(hù)之間基本是不會(huì)出現(xiàn)這種情況的
3.粘滯位的引出
我wzs沒(méi)法進(jìn)入你zs的目錄,你zs也沒(méi)法進(jìn)入我wzs的目錄,可是如果我們現(xiàn)在有一個(gè)需求:
如果我們想要在一個(gè)特定的目錄下面來(lái)實(shí)現(xiàn)文件的共享呢?
root創(chuàng)建了一個(gè)tmp目錄,并且為了實(shí)現(xiàn)讓多個(gè)用戶(hù)之間可以數(shù)據(jù)共享,root將other的rwx權(quán)限全部放開(kāi)
這里我們發(fā)現(xiàn)other的x權(quán)限被改為了t,這是為什么?
這個(gè)t就是粘滯位,我們?yōu)榱送癸@出粘滯位的作用
所以先把other的t這個(gè)權(quán)限去掉
然后我們讓wzs和zs在tmp目錄下共享文件
這里wzs創(chuàng)建了一個(gè)文件test.txt
往里面寫(xiě)了hello Linux
zs成功讀取了test.txt文件
成功實(shí)現(xiàn)了wzs和zs共享文件的需求
但是呢,假設(shè)有一天,wzs和zs鬧掰了
wzs把zs的權(quán)限關(guān)了,也就是把other的權(quán)限關(guān)了
zs沒(méi)法讀,沒(méi)法寫(xiě),zs一氣之下把test.txt刪了
在這里zs不該刪的,就算zs真的想要?jiǎng)h,也不應(yīng)該讓zs有這個(gè)權(quán)限去刪除
但是為什么zs可是刪除呢?
因?yàn)閠mp這個(gè)目錄對(duì)于other來(lái)說(shuō)rwx的權(quán)限都放開(kāi)了
zs和wzs都是other,都有w權(quán)限,因此都可以刪除彼此的文件
Linux系統(tǒng)必然不能允許這種行為成功執(zhí)行
因此引入了粘滯位這一解決方案
4.粘滯位的作用
下面我們把other的t權(quán)限加上
我們?cè)偃ブ貜?fù)一下剛才的操作
這個(gè)時(shí)候zs就刪不了我wzs的文件了
那么粘滯位的作用是什么呢?
粘滯位:就是給目錄中的other設(shè)置一個(gè)權(quán)限位,具有x的意義
同時(shí)也進(jìn)一步對(duì)目錄權(quán)限進(jìn)行特殊限定:
該目錄里面的文件,只有root和文件的擁有者才有權(quán)利進(jìn)行刪除
其他人一概不允許!
以上就是:Linux中的shell外殼與權(quán)限(包含目錄文件的權(quán)限,粘滯位的來(lái)龍去脈) 的全部?jī)?nèi)容,
希望能對(duì)大家有所幫助!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-717186.html
最后,祝大家1024節(jié)日快樂(lè)!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-717186.html
到了這里,關(guān)于Linux中的shell外殼與權(quán)限(包含目錄文件的權(quán)限,粘滯位的來(lái)龍去脈)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!