廣州網(wǎng)站建設(shè)58培訓(xùn)課程網(wǎng)站
目錄
? ? 一:用戶權(quán)限:
? ? ? ★su命令
? ? ? ★sudo命令
? ? 二:文件權(quán)限
? ? ★文件的類型+權(quán)限
? ? ? ?★文件夾的權(quán)限的使用
? ? ? ? ? ? ?▲文件夾的可讀權(quán)限:
? ? ? ? ? ? ?▲文件夾的可寫權(quán)限:
? ? ? ? ? ? ?▲文件夾的可執(zhí)行權(quán)限:
? ? ? ★權(quán)限的修改操作
? ? ? ? ? ? ▲chmod命令
? ? ? ★對(duì)于文件的用戶分組的修改
? ? ? ? ? ? ? ?▲chown命令
? ? ? ?▲chgrp命令
? ? ? ?★權(quán)限掩碼以及umask指令
? ? ? ★粘滯位的使用場(chǎng)景及使用方法
? ? 在Linux當(dāng)中我們經(jīng)常會(huì)遇到命令執(zhí)行不允許的情況,通常會(huì)產(chǎn)生如下的報(bào)錯(cuò):
? 我們想要讀取一個(gè)文件,但是卻無(wú)法執(zhí)行。會(huì)顯示Permission denied。這就是因?yàn)闄?quán)限所造成的影響。權(quán)限分為兩大類:每個(gè)用戶所具有的權(quán)限,以及事物所具有的權(quán)限(多指文件的權(quán)限)。只要弄清了這兩部分我們以上的現(xiàn)象就會(huì)了然于胸。
? ? 一:用戶權(quán)限:
? 當(dāng)我們?cè)谑褂肔inux的時(shí)候經(jīng)常會(huì)出現(xiàn)一種情況,權(quán)限不允許。如下:
? 無(wú)論是上面的無(wú)法刪除文件還是下面的無(wú)法指定一定的操作都是權(quán)限不允許造成的。而下面的無(wú)法執(zhí)行相應(yīng)的操作就是我們用戶權(quán)限不足造成的。
? 根據(jù)我們的生活經(jīng)驗(yàn)都可以知道:一個(gè)集體要想發(fā)揚(yáng)光大一定要有一個(gè)領(lǐng)導(dǎo)者,這個(gè)領(lǐng)導(dǎo)者有一定的權(quán)力,可以做到有的人無(wú)法做到的事情。比如說(shuō)飯店的廚房里經(jīng)常會(huì)提示非工作人員禁止入內(nèi)。這就是一種權(quán)限的體現(xiàn)。(只有工作人員才允許進(jìn)入)
? 而在Linux當(dāng)中也是這樣,為了操作系統(tǒng)以及其他用戶的安全,系統(tǒng)會(huì)對(duì)于用戶選擇性的否決一些要求。因此就有了權(quán)限不允許的情況。
? 用戶的身份可以分為兩大類:
? ? ? 1.普通用戶
? ? ? 2.超級(jí)管理員用戶(root)
? 其中普通用戶就是我們使用adduser指定在root用戶當(dāng)中添加的新的用戶,而超級(jí)管理員用戶就是那個(gè)權(quán)限超級(jí)大的領(lǐng)導(dǎo)者。root用戶的權(quán)限很大,幾乎可以做到所有普通用戶無(wú)法執(zhí)行的命令。
? 我們可以通過(guò)特定的指令使得這兩種用戶可以任意切換身份以達(dá)到我們想要的效果。
? ? ? ★su命令
? ?因?yàn)檎G闆r下的普通用戶權(quán)限很低,所以我們想要執(zhí)行一些命令的時(shí)候需要切換到root用戶的狀態(tài)下執(zhí)行。這個(gè)時(shí)候就用到了 su 命令。
? 我們?cè)诿钚休斎肓藄u命令之后會(huì)讓我們輸入root用戶的密碼,輸入正確之后就成功切換到了我們的root用戶了。當(dāng)我們使用完root用戶之后我們可以通過(guò)exit指令退出root用戶,或者通過(guò)ctrl+D快捷鍵快速退出root用戶返回之前的普通用戶。
? ? ? ★sudo命令
? 當(dāng)然我們還可以給我們的普通用戶提升權(quán)限,以達(dá)到root用戶的執(zhí)行效果,這個(gè)時(shí)候就需要使用到了sudo命令。但是在執(zhí)行sudo指令之前需要將用戶信息配置進(jìn)入我們新人的用戶文件當(dāng)中,如果沒(méi)有配置就會(huì)產(chǎn)生我們這張圖片的報(bào)錯(cuò)。
? 對(duì)于相關(guān)文件的配置我們將會(huì)在vim章節(jié)詳細(xì)的進(jìn)行講解。
? ? 二:文件權(quán)限
? 上面我們說(shuō)到了由于權(quán)限不足產(chǎn)生的報(bào)錯(cuò)分為兩種:
? ? 1.用戶權(quán)限不足無(wú)法執(zhí)行指定命令而產(chǎn)生的報(bào)錯(cuò)
? ? 2.文件權(quán)限不允許無(wú)法執(zhí)行相應(yīng)的操作而產(chǎn)生的報(bào)錯(cuò)
? 在介紹完用戶權(quán)限之后我們?cè)賮?lái)介紹一下由于文件權(quán)限。
? 我們先通過(guò)一張圖片來(lái)大致認(rèn)識(shí)一下文件的相關(guān)信息:
? 通過(guò)指令顯示文件詳細(xì)的相關(guān)信息的時(shí)候我們會(huì)發(fā)現(xiàn)未知的內(nèi)容大致分為以上三部分。其中最后一部分容易理解:不就是文件創(chuàng)建的時(shí)間嗎?那么前面的部分呢?我們一一進(jìn)行講解。
? ? ★文件的類型+權(quán)限
?????
?第一部分一共有10個(gè)奇奇怪怪的字符。其中第一個(gè)字符表示文件的類型。就像是我們之前介紹過(guò)的 - 表示的是一個(gè)文件,d表示一個(gè)文件夾。文件還分為很多種,如:
? ? ?d:文件夾? ? ? ? ? ? ? ? -:普通文件? ? ? ? ? ? ? l:軟鏈接(類似Windows的快捷方式)? ? ? ? ? ? ? ? ? ? ? ? ? ?b:塊設(shè)備文件(例如硬盤、光驅(qū)等)? p:管道文件 c:字符設(shè)備文件(例如屏幕等串口設(shè)備)? ? ? ?s:套接口文件
? 我們?cè)诒敬尾┛托枰敿?xì)進(jìn)行講解的就是文件夾和文件相關(guān)的權(quán)限。
? 知道了第一個(gè)字符表示的含義之后我們?cè)賮?lái)學(xué)習(xí)后面九個(gè)字符所表示的特定的含義。
? 根據(jù)生活嘗試我們可以知道一個(gè)文件通常具有可讀和可寫的屬性。具有可讀屬性的文件我們可以讀取文件的內(nèi)容,具有可寫屬性的文件我們可以向其中寫入指定的內(nèi)容。
? 我們上面出現(xiàn)的后面的九個(gè)字符每三個(gè)分為一組,其中的 r 和 w 就表示的是文件是否具備可讀和可寫的屬性。- 表示的是不具備當(dāng)前屬性。
? 同樣是我們之前所提到過(guò)的,在Linux當(dāng)中一切事物皆文件,還記得我們之前使用gcc編寫代碼的時(shí)候系統(tǒng)會(huì)自動(dòng)生成一個(gè)可執(zhí)行程序嗎?他其實(shí)也是一個(gè)文件。當(dāng)我們的文件具有可執(zhí)行的屬性的時(shí)候就會(huì)有第三個(gè)字符 x 用來(lái)表是我們的文件可以作為一個(gè)可執(zhí)行程序進(jìn)行運(yùn)行。效果如下:
? 我們這三種權(quán)限就是文件本身所具有的權(quán)限。這三個(gè)權(quán)限可以同時(shí)存在。
? 前面我們說(shuō)到過(guò)后面九個(gè)字符需要分為三組,這又是什么原因呢?
? 其實(shí)這樣的分組就和我們后面的第二大類相關(guān)了。
? 同樣的權(quán)限分為的三部分其實(shí)是對(duì)應(yīng)后面的用戶分類的三部分的。對(duì)于一個(gè)文件,我們經(jīng)常會(huì)有一些想要保密的東西在里面,這個(gè)時(shí)候我們可以使用權(quán)限分類。第一類表示文件的創(chuàng)建者,一般權(quán)限都很高,可以執(zhí)行對(duì)文件的很多操作。第二類表示文件的所屬組,通常情況下用于我們想要賦予特殊權(quán)限的一類用戶。舉一個(gè)簡(jiǎn)單的例子:當(dāng)你工作的時(shí)候一定會(huì)有小組工作,每一個(gè)小組的合作都是可以互相看到的,這樣可以幫助我們更好的完成工作。但是我們?cè)诠ぷ鞯臅r(shí)候又會(huì)有競(jìng)爭(zhēng)對(duì)手,我們不想讓我們的創(chuàng)意被競(jìng)爭(zhēng)對(duì)手抄襲所以就不想讓他們看到。因此我們就有了所屬組和其他用戶。
? 其中所屬組代表的就是可以合作的人員,其他用戶代表的就是我們的競(jìng)爭(zhēng)對(duì)手。我們可以通過(guò)對(duì)這兩者可讀可寫操作權(quán)限的修改達(dá)到我們想要的目的。
? ? ? ?★文件夾的權(quán)限的使用
? 文件夾的權(quán)限其實(shí)大致是和我們文件的權(quán)限是相同的都是分為可讀,可寫,以及可執(zhí)行,這三部分。但是又會(huì)有人感到很好奇:可讀可寫容易理解,但是文件夾的可執(zhí)行是什么東西呢?以及當(dāng)我們的文件夾不具有可讀和可寫以及可執(zhí)行會(huì)帶來(lái)什么效果呢?
? ? ? ? ? ? ?▲文件夾的可讀權(quán)限:
? ?文件夾的可讀權(quán)限其實(shí)很容易理解,我們文件夾當(dāng)中可以存放各種各樣的內(nèi)容。比如說(shuō)一個(gè)新的文件夾以及文件等等??勺x權(quán)限就是讓我們可以讀取這個(gè)文件夾當(dāng)中到底存在哪些內(nèi)容。如果沒(méi)有可讀權(quán)限,那么我們進(jìn)入一個(gè)文件夾就無(wú)法使用 ls 命令查看其中的文件有哪些了。效果如下:
? 如上面的場(chǎng)景所展示的那樣:當(dāng)文件不具備可讀權(quán)限的時(shí)候,我們可以通過(guò)cd進(jìn)入文件夾當(dāng)中,但是不能在文件夾當(dāng)中使用 ls 命令查看都有哪些文件。
? ? ? ? ? ? ?▲文件夾的可寫權(quán)限:
? 顧名思義,當(dāng)一個(gè)文件夾不具備可寫權(quán)限的時(shí)候,我們不可以在其中創(chuàng)建新的文件以及新的文件夾,也不可以在其中刪除任意的文件。如下:
? 在該文件夾當(dāng)中無(wú)論是創(chuàng)建還是刪除文件或者文件夾的操作都會(huì)被駁回,產(chǎn)生Permission denied的提示。
? ? ? ? ? ? ?▲文件夾的可執(zhí)行權(quán)限:
? 文件夾的可執(zhí)行權(quán)限看似讓人很疑惑,但是其實(shí)很好理解。對(duì)于一個(gè)文件夾我們最常使用的一個(gè)操作 cd 還沒(méi)有解釋。無(wú)論是可讀權(quán)限還是可寫權(quán)限都對(duì)是否能夠進(jìn)入文件夾沒(méi)有任何影響。所以我們很容易聯(lián)想到,我們的 x 可執(zhí)行權(quán)限應(yīng)該和是否可以正常進(jìn)入文件夾有關(guān)。
? 通過(guò)測(cè)試也確實(shí)如此。當(dāng)我們的文件夾不具有可執(zhí)行權(quán)限的時(shí)候,我們就無(wú)法通過(guò) cd 指令進(jìn)入該文件夾。但是我們可以嘗試是否可以向該文件夾寫入一些文件或者讀取文件夾當(dāng)中的文件。
? 我們會(huì)發(fā)現(xiàn),當(dāng)我們的文件夾不具有可執(zhí)行權(quán)限的時(shí)候雖然我們的系統(tǒng)提示我們不能讀取文件,但是我們依舊讀出了文件夾當(dāng)中的文件有哪些(test)。但是我們?nèi)绻胍獎(jiǎng)?chuàng)建文件在該文件夾當(dāng)中的時(shí)候就必須進(jìn)入到該文件夾當(dāng)中,因?yàn)椴痪哂锌蓤?zhí)行權(quán)限會(huì)被當(dāng)場(chǎng)駁回。
? 我們可以通過(guò)手動(dòng)調(diào)節(jié)權(quán)限的設(shè)置以達(dá)到我們想要的目標(biāo)效果。
? ? ? ★權(quán)限的修改操作
? 在認(rèn)識(shí)完文件權(quán)限的種類以及作用之后,我們?cè)賮?lái)學(xué)習(xí)一下怎么修改文件或者文件夾的權(quán)限。
? ? ? ? ? ? ▲chmod命令
? 想要修改一個(gè)文件的權(quán)限我們可以使用chmod命令執(zhí)行我們的修改操作。使用方法如下:
? 我們可以通過(guò)加減的操作對(duì)權(quán)限執(zhí)行修改。其中u表示user也就是我們文件的所有者擁有的權(quán)限,group也就表示我們所屬組的權(quán)限,o也就是other表示的是其他分組所具有的權(quán)限。
? 上圖中我們?yōu)閡ser,group,other加上了所有的權(quán)限。同樣的我們還可以減去指定的權(quán)限,讓所有用戶失去文件的可執(zhí)行權(quán)限:
? 同樣的我們還可以使用比較簡(jiǎn)單的方式修改權(quán)限。因?yàn)槲覀冎付?quán)限的位置永遠(yuǎn)是不變的,第一位永遠(yuǎn)表示的是可讀權(quán)限,第二個(gè)位置永遠(yuǎn)表示的是可寫權(quán)限,第三個(gè)位置永遠(yuǎn)表示的是可執(zhí)行權(quán)限。所以我們就可以使用0或1表示是否具有該權(quán)限。可以通過(guò)一個(gè)十進(jìn)制數(shù)字表示這三個(gè)二進(jìn)制位的情況。例如:
? 就這樣我們可以使用7個(gè)數(shù)字表示我們所有的權(quán)限的狀態(tài),所以我們權(quán)限的賦值操作也可以寫成:
直接使用三個(gè)數(shù)字表示三組用戶的權(quán)限信息即可。
? ? ? ★對(duì)于文件的用戶分組的修改
? ? ? ? ? ? ? ?▲chown命令
? 在上面我們提到了用戶的分組情況,用戶的分組一共分為三類,第一類表示的是文件的創(chuàng)建用戶,第二類表示的是文件的所屬組,第三類表示其他。在查看文件的屬性的時(shí)候我們也可以觀察得到:
? 但是怎樣修改創(chuàng)建用戶和所屬組呢?
? 對(duì)于創(chuàng)建用戶我們可以使用chown命令進(jìn)行修改,ch代表change。own表示擁有者。但是我們需要注意的是在對(duì)文件的用戶進(jìn)行管理的時(shí)候我們需要具有一定的權(quán)限,否則將無(wú)法進(jìn)行修改。(一般是root用戶才可以進(jìn)行修改,或者配置過(guò)后的執(zhí)行sudo命令的普通用戶)
? ? ? ?▲chgrp命令
? 同樣的想要修改文件的所屬組用戶也需要特定的指令,需要使用到chgrp指令進(jìn)行調(diào)節(jié),使用方法和注意事項(xiàng)和chown命令相同。
? 但是一個(gè)一個(gè)更改會(huì)有點(diǎn)麻煩,所以要想同時(shí)修改文件的所屬用戶和所屬組應(yīng)該怎么辦呢?這個(gè)時(shí)候還是需要使用chown命令,我們只需要使用 :將我們創(chuàng)建用戶和所屬組的信息分隔開(kāi)來(lái)就好了。
? ? ? ?★權(quán)限掩碼以及umask指令
? 在我們創(chuàng)建一個(gè)文件或者文件夾的時(shí)候我們都會(huì)發(fā)現(xiàn),文件或者文件夾都會(huì)有一個(gè)默認(rèn)的屬性。一般文件的默認(rèn)屬性都是666,表示出了不具有可執(zhí)行屬性外具有任何可讀或者可寫的屬性。文件夾的默認(rèn)屬性為777,因?yàn)槲覀兺ǔ?huì)在文件夾當(dāng)中進(jìn)行一定的讀寫以及進(jìn)入等操作。但是經(jīng)過(guò)測(cè)試我們會(huì)發(fā)現(xiàn),事實(shí)上并不是這樣的。我們創(chuàng)建一個(gè)文件和文件夾的默認(rèn)屬性為:
? 這又是為什么呢?這是因?yàn)槲覀兊南到y(tǒng)為了用戶的安全會(huì)自動(dòng)設(shè)置一個(gè)權(quán)限掩碼,一般的權(quán)限掩碼都會(huì)對(duì)其他分組中的用戶進(jìn)行一定程度上的限制,以保證用戶信息的安全。我們可以通過(guò)umask命令進(jìn)行觀察系統(tǒng)當(dāng)中的權(quán)限掩碼:
? 如上圖所示:我們系統(tǒng)當(dāng)中的權(quán)限掩碼就為0002,一般的權(quán)限掩碼都是三位,每一個(gè)數(shù)字表示的都是一個(gè)八進(jìn)制數(shù)字。我們可以將第一個(gè)0想象成為八進(jìn)制數(shù)字的前導(dǎo)數(shù)。所以實(shí)質(zhì)上我們的權(quán)限掩碼也可以寫成:000 000 010 的形式。我們需要將原本文件的默認(rèn)屬性和我們的權(quán)限掩碼進(jìn)行一定的操作才可以得到我們想要的默認(rèn)的文件的權(quán)限。
? 我們需要先將權(quán)限掩碼按位取反,之后在和原本的權(quán)限進(jìn)行按位與的操作。執(zhí)行操作如下:
? 同理我們可以根據(jù)相同的操作得到我們文件夾最終所應(yīng)具有的權(quán)限775。
? 同樣的為了更好的使用權(quán)限掩碼,我們還可以手動(dòng)對(duì)權(quán)限掩碼進(jìn)行修改。我們只需要在umask命令后面加上我們想要修改的權(quán)限掩碼即可。
? 雖然我們可以手動(dòng)修改權(quán)限掩碼,但是我們最好使用系統(tǒng)中給出的權(quán)限掩碼,否則會(huì)產(chǎn)生很多不必要的麻煩,等到我們需要的時(shí)候再對(duì)其進(jìn)行修改即可。
? ? ? ★粘滯位的使用場(chǎng)景及使用方法
? 當(dāng)我們?cè)诠ぷ鞯臅r(shí)候肯定會(huì)需要很多人都共同進(jìn)行一個(gè)項(xiàng)目的編寫,也會(huì)需要多人對(duì)同一個(gè)文件進(jìn)行讀取或者修改的操作。但是服務(wù)器上面的每一個(gè)用戶都是相對(duì)獨(dú)立的,不允許相互訪問(wèn)。
? 在服務(wù)器上的所有的用戶,對(duì)于其他的用戶沒(méi)有可讀可寫和可執(zhí)行的權(quán)限,其他用戶無(wú)法進(jìn)行訪問(wèn)。因此,我們想要完成合作就需要?jiǎng)?chuàng)建一個(gè)用于共享的文件夾,可以在這個(gè)文件夾當(dāng)中寫入指定的內(nèi)容或者修改相關(guān)的文件。
? 但是我們閱讀權(quán)限會(huì)發(fā)現(xiàn),我們這個(gè)文件夾對(duì)于所屬組以及其他用戶的權(quán)限都不可寫,這樣怎么才可以實(shí)現(xiàn)共享呢?我好不容易有了一個(gè)項(xiàng)目的思路,但是卻寫不盡文件當(dāng)中!這個(gè)時(shí)候我們就需要調(diào)整權(quán)限,將 w 權(quán)限放開(kāi)。
? 當(dāng)我們放開(kāi)文件夾的寫權(quán)限的時(shí)候我們就可以向文件夾當(dāng)中寫入數(shù)據(jù)了。但是這樣真的安全嗎?會(huì)不會(huì)有人惡意刪除我們好不容易寫好的文件呢?我們可以嘗試一下:
? 我們會(huì)發(fā)現(xiàn)一個(gè)很奇怪的現(xiàn)象:其他用戶不需要經(jīng)過(guò)我們的允許就可以任意的刪除我們創(chuàng)建的文件,這就帶來(lái)了很大的安全隱患。但是我們不想讓人家刪除的話就只能將文件夾的 w 權(quán)限刪除,一旦刪除又沒(méi)辦法進(jìn)行文件的修改了。所以為了解決這個(gè)問(wèn)題在Linux當(dāng)中又引入了一個(gè)粘滯位的概念。
? 通常情況下粘滯位是作用于文件夾當(dāng)中的,我們可以將文件夾的x權(quán)限修改成為 t 。當(dāng)我們文件夾的x權(quán)限修改成為 t 之后,在該文件夾當(dāng)中的文件就只可以被我們文件的所有者刪除,其他用戶都不可以進(jìn)行刪除,這樣就解決了我們上面所出現(xiàn)的問(wèn)題了。
? 就像上面圖片中所展示的那樣,我們將文件夾的權(quán)限設(shè)置為粘滯位之后重新創(chuàng)建文件,其他用戶則無(wú)法將我們創(chuàng)建的用戶刪除。很大程度上保證了我們信息的安全。
? ?此上就是我們權(quán)限的所有的內(nèi)容了,但是需要提一點(diǎn):所有的權(quán)限限制對(duì)于root用戶都不管用,假如一個(gè)用戶是root用戶就可以無(wú)視文件或者系統(tǒng)的其他權(quán)限,直接進(jìn)行任意的修改操作。