商贏網(wǎng)站建設(shè)百度注冊
目錄
Shell的運行原理
Linux權(quán)限的概念
su命令
權(quán)限
文件訪問權(quán)限的相關(guān)設(shè)置方法
chmod指令
chown指令
chgrp指令
sudo命令
文件的常見問題
umask
粘滯位
關(guān)于權(quán)限的總結(jié)
Shell的運行原理
Shell運行原理 —— 外殼程序。
#問:如何理解?為什么不能直接使用核心(kernel)?
#問:那么我們的如何訪問操作系統(tǒng)的呢?那么圖形化界面 && 指令操作究竟是什么東西呢?
- 將使用者的命令翻譯給核心(kernel)處理。
- 同時,將核心的處理結(jié)果翻譯給使用者。
- 創(chuàng)建子進(jìn)程,讓子進(jìn)程進(jìn)行命令行解釋。
- 子進(jìn)程出現(xiàn)任何問題,都不影響父進(jìn)程Shell。
(用戶讓Shell(本身就是是一個進(jìn)程 )去做的事情,可能會導(dǎo)致去執(zhí)行的進(jìn)程,出現(xiàn)錯誤,導(dǎo)致崩潰,所以讓子進(jìn)程進(jìn)行命令)- 知道就可以了,父子進(jìn)程學(xué)習(xí)的時候深論。
????????幫助理解:操作系統(tǒng)是銀行的機器,Shell是銀行職員,用戶是辦理服務(wù)的我們。我們對于機器操作不清楚的我們,于是請了一個銀行職員幫助我們,比如我們想取錢,就告訴銀行職員,讓其幫我們進(jìn)行取1000元,于是銀行職員就去操作機器了,這個時候,機器說該用戶余額不足無法取款,于是告訴操作它的銀行職員,于是銀行職員告訴我們。(這個時候就是操作系統(tǒng)層拒絕我們)
????????然后,我們又告訴銀行職員我們就是要取1000,這個時候銀行職員知道余額不足,就直接拒絕了。(這個時候就是Shell層拒絕我們)這個時候也就變相的保護(hù)了機器中的余額數(shù)據(jù)(Shell變相操作系統(tǒng)中的數(shù)據(jù))
外殼程序shell的意義:
- 是用戶和操作系統(tǒng)交互的中間軟件層。
- 可以在一定程度,起到一定的保護(hù)操作系統(tǒng)的作用。
Linux權(quán)限的概念
Linux下有兩種用戶:超級用戶(root)、普通用戶。
- 超級用戶:可以再linux系統(tǒng)下做任何事情,不受限制。
- 普通用戶:在linux下做有限的事情。
????????所以:root <-切換-> 普通用戶,潛臺詞就是切換我們當(dāng)前的權(quán)限。超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。
su命令
切換到超級用戶root后切回剛剛的普通用戶:Ctrl + d / logout
由超級用戶root切換到普通用戶:su 用戶名?
? ? ? ? root是超級用戶,無需輸入普通用戶密碼。
權(quán)限
#問:是什么?
1.?文件訪問者的分類(人)
- 文件和文件目錄的所有者:u---User(中國平民 法律問題)
- 文件和文件目錄的所有者所在的組的用戶:g---Group(不多說)
- 其它用戶:o---Others (外國人)
2.?文件類型和訪問權(quán)限(事物屬性)

用戶:可以認(rèn)為是一種角色或者身份:root && 普通用戶(它們可以各自扮演下面的三個)
- 擁有者:文件屬于誰。
- 所屬組:文件屬于哪一個組。
- other:不屬于上面兩種的任何一個,就是other。
root、普通用戶是具體的用戶,上面是它們所扮演的角色。
#問:為什么會有所屬組這個概念?
????????在某個公司當(dāng)中有兩個小組團隊(A組、B組)在同一個Linux服務(wù)器上進(jìn)行著同一款項目的開發(fā)(賽馬模式),而你就是A組當(dāng)中的一員。
? ? ? ? ?有一天,A組的領(lǐng)導(dǎo)來找你,想看看你寫的代碼。如果這個時候用戶只有:擁有者和other,沒有所屬組。這個時候想讓A組領(lǐng)導(dǎo)看見代碼,就需要將other的權(quán)限打開。但是這個時候,作為B組的李四,也是other,就會導(dǎo)致李四也有權(quán)限。所以,如果只有擁有者和other,就會導(dǎo)致組內(nèi)的成員無法看見代碼,打開other權(quán)限,也就回導(dǎo)致所有人都會有權(quán)限。這就是有問題的,所以Linux映入了所屬組。這個時候想讓同組的人看見代碼,只需將和我們屬于同一組人的權(quán)限打開就可以了。
文件類型:
????????Linux下,不以文件后綴來區(qū)分文件類型(并不代表可以不使用,在系統(tǒng)層雖然沒有意義,但是可以給自己看)。注意:gcc、g++等是Linux上的軟件,它們是認(rèn)文件后綴的!
- d:文件夾
- -:普通文件
- l:軟鏈接(類似Windows的快捷方式)
- b:塊設(shè)備文件(例如硬盤、光驅(qū)等)
- p:管道文件
- c:字符設(shè)備文件(例如屏幕等串口設(shè)備)
- s:套接口文件
基本權(quán)限:
- 讀(r/4):Read對文件而言,具有讀取文件內(nèi)容的權(quán)限;對目錄來說,具有瀏覽該目錄信息的權(quán)限。
- 寫(w/2):Write對文件而言,具有修改文件內(nèi)容的權(quán)限;對目錄來說具有刪除移動目錄內(nèi)文件的權(quán)限。
- 執(zhí)行(x/1):execute對文件而言,具有執(zhí)行文件的權(quán)限;對目錄來說,具有進(jìn)入目錄的權(quán)限。
- “—”:表示不具有該項權(quán)限。
3.?文件權(quán)限值的表示方法
- 字符表示方法
Linux表示 | 說明 | Linux表示 | 說明 |
---|---|---|---|
r - - | 只讀 | - w - | 僅可寫 |
- - x | 僅可執(zhí)行 | r w - | 可讀可寫 |
- w x | 可寫和可執(zhí)行 | r - x | 可讀可執(zhí)行 |
r w x | 可讀可寫可執(zhí)行 | - - - | 無權(quán)限 |
文件訪問權(quán)限的相關(guān)設(shè)置方法
于是更改權(quán)限的操作就有兩類:
- 改用戶
- 改屬性
chmod指令
1. ?用戶表示符+/-=權(quán)限字符 ?
- +:向權(quán)限范圍增加權(quán)限代號所表示的權(quán)限。
- -:向權(quán)限范圍取消權(quán)限代號所表示的權(quán)限。
- =:向權(quán)限范圍賦予權(quán)限代號所表示的權(quán)限。
- 用戶符號:??
- u:擁有者
- g:擁有者同組用
- o:其它用戶
- a:所有用戶
舉例:
?若要同時設(shè)置不同類用戶的訪問權(quán)限,則需用逗號隔開。
2. ?八進(jìn)制
? ? ? ? 權(quán)限只有:有、沒有,兩個狀態(tài)。這也就是位圖的原理,二進(jìn)制表示,為0即否,為1即是。于是便有了八進(jìn)制的表現(xiàn)。
- 8進(jìn)制數(shù)值表示方法
?#問:如果沒有權(quán)限是什么樣子?
? ? ? ? 這個時候就是,根本原因:我們雖然是這個文件的所屬組,但是,我們依舊不具備任何權(quán)限,因為擁有者的權(quán)限被我們清掉了。即使是我們的文件,但是沒有權(quán)限就是不行。
#問:root是超級管理員,他的權(quán)限受不受約束?
? ? ? ? 這個時候,文件的擁有者和所屬組都不是root,是不是root就是other用戶了?此時是不是什么權(quán)限都沒有了?但是,可以發(fā)現(xiàn)root用戶是可以進(jìn)行任何操作的。
? ? ? ? ?并且還能更改該文件的權(quán)限。
Note:
? ? ? ? root用戶的權(quán)限十分的大!幾乎是不受權(quán)限的約束的!權(quán)限就是用來限制普通用戶。所以用戶的密碼十分重要。
chown指令
? ? ? ? 可以發(fā)現(xiàn)直接使用這個指令,報錯:這個操作是不被允許的。因為我們給別人東西是需要得到別人的同意的。
如何讓對方同意?
? ? ? ? 很簡單,強迫對方同意!直接換成root進(jìn)行操作。
chgrp指令
Note:
? ? ? ? 這個時候就使用chown、chgrp指令,改變了用戶,這個時候普通用戶qcr就變?yōu)榱薿ther。
sudo命令
????????除了用root超級用戶壓著對方強行移動文件還可以使用sudo。
Note:
? ? ? ? 如果用戶想執(zhí)行sudo,提升權(quán)限,需要該用戶在信任列表里面,才可以執(zhí)行sudo,添加用戶到信任列表是需要root身份的!
? ? ? ? 首先你得先切換到超級用戶,只有超級用戶才有權(quán)力將普通用戶添加到信任列表。切換到超級用戶后,我們使用vim打開文件sudoers進(jìn)行添加。
? ? ? ? 注意:普通用戶打開文件sudoers是空白什么都看不到。
????????添加完畢后,該用戶就可以使用sudo指令,也就是擁有提升當(dāng)前指令權(quán)限的能力了。
文件的常見問題
1. 目錄權(quán)限。
Note:
????????權(quán)限對于用戶,如果是擁有者和所屬組,只看擁有者權(quán)限,與所屬組沒有關(guān)系。不是擁有者是所屬組,那只看所屬組權(quán)限。因為權(quán)限只會認(rèn)證一次。
- 可執(zhí)行權(quán)限:?如果目錄沒有可執(zhí)行權(quán)限, 則無法cd到目錄中。
- 可讀權(quán)限:如果目錄沒有可讀權(quán)限, 則無法用ls等命令查看目錄中的文件內(nèi)容。
- 可寫權(quán)限:如果目錄沒有可寫權(quán)限, 則無法在目錄中創(chuàng)建文件, 也無法在目錄中刪除文件。
umask
Linux默認(rèn):
- 一個目錄被創(chuàng)建,起始權(quán)限是:777
- 一個普通文件被創(chuàng)建,起始權(quán)限是:666
? ? ? ? 但是我們會發(fā)現(xiàn),我們創(chuàng)建的目錄、文件一個是775、664.。并不是前面所提的起始權(quán)限。
#問:為何我們創(chuàng)建一個目錄或者文件,默認(rèn)權(quán)限是你所看到的樣子?
????????因為有umask的存在。
- 查看或修改文件掩碼。
- 新建文件夾默認(rèn)權(quán)限=0666,新建目錄默認(rèn)權(quán)限=0777,但實際上我們所創(chuàng)建的文件和目錄,看到的權(quán)限往往不是上面這個值。原因就是創(chuàng)建文件或目錄的時候還要受到umask的影響。假設(shè)默認(rèn)權(quán)限是mask,則實際創(chuàng)建的出來的文件權(quán)限是: mask & ~umask
? ? ? ? 只需要關(guān)心umask的后三位。但第 1 個數(shù)代表的是文件所具有的特殊權(quán)限(SetUID、SetGID、Sticky BIT)此文不涉及講解。
Note:
? ? ? ? 凡是在umask中出現(xiàn)的權(quán)限,都不應(yīng)該在最終權(quán)限中出現(xiàn)。
????????我們實際創(chuàng)建出來的文件和目錄的權(quán)限值并不是開始的起始權(quán)限,是還需要進(jìn)行進(jìn)一步umask換算才能得出 —— 掩碼的的后三位八進(jìn)制換算為二進(jìn)制,然后對其進(jìn)行按位取反。最終權(quán)限 = 起始權(quán)限 & (~umask)。
粘滯位
#問:當(dāng)一個普通文件,不具備任何權(quán)限,我們是否能夠刪除它?
? ? ? ? 可以發(fā)現(xiàn),我們可以利用讀寫權(quán)限阻擋別人閱讀,但是我們沒有辦法阻擋別人刪除。因為一個文件被刪除并不是一個文件本身的屬性,而是,文件所在的目錄中用戶是否具有寫權(quán)限。所以也不用擔(dān)心別人將我們的文件刪除,因為該文件所在的目錄是屬于我們的。
結(jié)論:
- 刪除一個文件,并不是這個文件說的算,而是這個文件所處的目錄說的算。
- 該文件也處于,自己的目錄下,所以也不用擔(dān)心別人刪除。(前提該目錄就只屬于你自己)
? ? ? ? 所以需要擔(dān)心的是,未來我們與某一個人一起在一個目錄下(特定路徑下),共同在一個目錄里維護(hù)一堆文件的時候,這個時候我們可以不給別人看的權(quán)限,但是我們架不住別人來刪除。
于是在一個場景下:
大家所有的用戶都在一個共同的路徑下,對該目錄具有讀寫執(zhí)行權(quán)限。
有一個在根目錄下的目錄就是這樣的:tmp
????????比如:我們創(chuàng)建了一個擁有者和所屬組都是root的目錄后,在該目錄中使用兩個普通用戶創(chuàng)建普通文件。
????????這個時候由于test_dirw目錄的擁有者和所屬組即使都是root,但是放開了對于other的寫權(quán)限,所以一個普通用戶是可以將另一個普通用戶的文件刪除的。
? ? ? ? 有個最直接的方法,就是將test_dirw目錄的other的寫權(quán)限關(guān)閉。
????????這個時候,倒是解決了別人刪我們的文件的問題,但是對于我們來說,我們也沒有了刪除的權(quán)限了,畢竟在這個擁有者與所屬組都是root的目錄下,作為普通用戶的我們來說,我們就是other,other的寫權(quán)限被我們關(guān)閉了。?
? ? ? ? 因為怕別人刪,反而導(dǎo)致了自己沒法刪除。
總結(jié):
- 當(dāng)多個用戶共享一個目錄,需要在該目錄下,進(jìn)行讀寫,創(chuàng)建刪除文件。
- 但是自己只能刪除自己的,而不能刪除別人的。(w:可以互相刪除)
? ? ? ? 所以便有了新的一個屬性:粘滯位。
????????說白了就是:既能保證用戶們在一個目錄下,你創(chuàng)建你的、我創(chuàng)建我的,你讀寫你的。又能保證其他人,無法刪除你的文件,你還能正常使用。
? ? ? ? 這個時候?t?是?x?的特殊情況,這個時候它的表現(xiàn)形式就是。
當(dāng)一個目錄被設(shè)置為"粘滯位"?( 用chmod + t ) ,則該目錄下的文件只能由:
- 超級管理員刪除。
- 該目錄的所有者刪除。
- 該文件的所有者刪除。
Note:
? ? ? ? 粘滯位只能給目錄設(shè)置,因為一個文件能否被刪除本身就是目錄的權(quán)限。
#問:會不會出現(xiàn)別的用戶將粘滯位取消后,跑過來將我們的文件刪除嗎?
????????不可以,因為對于這種共享目錄,一般都是擁有者和所屬組都是root。而粘滯位只能夠誰加的,誰來取。所以也不用擔(dān)心別人講目錄的粘滯位取消掉,因為要不就是root的目錄,要么就是我們的目錄。
? ? ? ? (root不用想了,它在服務(wù)器的機器上無所不能,它當(dāng)然可以取消你設(shè)置的粘滯位)不是完全的無所不能,比如他刪不掉一個正在被訪問的文件。
關(guān)于權(quán)限的總結(jié)
- 目錄的可執(zhí)行權(quán)限是表示你可否在目錄下執(zhí)行命令。
- 如果目錄沒有-x權(quán)限,則無法對目錄執(zhí)行任何命令,甚至無法cd 進(jìn)入目, 即使目錄仍然有-r 讀權(quán)限(這個地方很容易犯錯,認(rèn)為有讀權(quán)限就可以進(jìn)入目錄讀取目錄下的文件)。
- 而如果目錄具有-x權(quán)限,但沒有-r權(quán)限,則用戶可以執(zhí)行命令,可以cd進(jìn)入目錄。但由于沒有目錄的讀權(quán)限。
- 所以在目錄下,即使可以執(zhí)行l(wèi)s命令,但仍然沒有權(quán)限讀出目錄下的文檔。