網(wǎng)站設(shè)計過程中需要注意的問題網(wǎng)站網(wǎng)頁的優(yōu)化方法
目錄
一.shell命令以及運行原理
二.Linux權(quán)限的概念與權(quán)限管理
2.1Linux權(quán)限的概念
sudo普通用戶提權(quán)
2.2Linux權(quán)限管理
2.2.1文件訪問者的分類(人)
2.2.2文件類型和訪問權(quán)限(事物屬性)
2.2.3文件權(quán)限值的表示方法?
字符表示方法
八進(jìn)制數(shù)值表示方法
2.2.4文件訪問權(quán)限的相關(guān)設(shè)置方法
chmod
?chown/chgrp
?用八進(jìn)制改權(quán)限
2.2.5目錄權(quán)限
?2.2.6缺省權(quán)限
?2.2.7粘滯位
一.shell命令以及運行原理
Linux嚴(yán)格意義上說的是一個操作系統(tǒng),我們稱之為“核心(kernel)“ ,但我們一般用戶,不能直接使用kernel。 而是通過kernel的“外殼”程序,也就是所謂的shell,來與kernel溝通。如何理解?為什么不能直接使用kernel?
??
從技術(shù)角度,Shell的最簡單定義:命令行解釋器(command Interpreter)主要包含:
將使用者的命令翻譯給核心(kernel)處理。
同時,將核心的處理結(jié)果翻譯給使用者。?
為什么要存在內(nèi)存程序?
1.方便用戶操作
2.外殼程序,保護內(nèi)核
(新命令到來,創(chuàng)建子進(jìn)程)
對比windows GUI,我們操作windows 不是直接操作windows內(nèi)核,而是通過圖形接口,點擊,從而完成我們的 操作(比如進(jìn)入D盤的操作,我們通常是雙擊D盤盤符.或者運行起來一個應(yīng)用程序)。
shell 對于Linux,有相同的作用,主要是對我們的指令進(jìn)行解析,解析指令給Linux內(nèi)核。反饋結(jié)果在通過內(nèi)核運行出結(jié)果,通過shell解析給用戶。
如果說你是一個悶騷且害羞的程序員,那shell就像媒婆,操作系統(tǒng)內(nèi)核就是你們村頭漂亮的 且有讓你心動的MM小花。你看上了小花,但是有不好意思直接表白,那就讓你你家人找媒婆幫你提 親,所有的事情你都直接跟媒婆溝通,由媒婆轉(zhuǎn)達(dá)你的意思給小花,而我們找到媒婆姓王,所以我們叫 它王婆,它對應(yīng)我們常使用的bash。
每次系統(tǒng)啟動都會有一個bash的程序,它內(nèi)部就是一個死循環(huán),不斷的進(jìn)行命令行解釋。shell是所有外殼程序的統(tǒng)稱(媒婆),bash是其中一個(王婆)。
二.Linux權(quán)限的概念與權(quán)限管理
2.1Linux權(quán)限的概念
Linux下有兩種用戶:超級用戶(root)、普通用戶。
超級用戶:可以再linux系統(tǒng)下做任何事情,不受限制
普通用戶:在linux下做有限的事情。
超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。
命令:su [用戶名]
功能:切換用戶。
例如,要從root用戶切換到普通用戶user,則使用 su user。 要從普通用戶user切換到root用戶則使用 su root(root可以省略),此時系統(tǒng)會提示輸入root用戶的口令。
su -:重新登錄
su:身份切換(不改變位置)
sudo普通用戶提權(quán)
我們普通用戶直接sudo +命令會不能運行。
我們需要用root添加類似白名單一樣的東西:
進(jìn)入之后修改:?
?
為:
這樣我的lwz普通用戶就可以使用sudo?來進(jìn)行暫時提權(quán)。
2.2Linux權(quán)限管理
權(quán)限首先限制的是角色(人)。
權(quán)限要求目標(biāo)必須具備對應(yīng)的屬性。
權(quán)限=角色+目標(biāo)權(quán)限屬性(文件屬性)
2.2.1文件訪問者的分類(人)
文件和文件目錄的所有者:u---User(中國平民 法律問題)(擁有者)
文件和文件目錄的所有者所在的組的用戶:g---Group(所屬組)
其它用戶:o---Others (外國人)
上面提到擁有者,所屬組,但是沒有看到other。因為匹配到的用戶不是擁有者和所屬組就是other,other很多。?
還有一個問題就是:擁有者和other都好理解,這個所屬組是什么意思呢?(為了有更精細(xì)化的權(quán)限管理)假如我是某個小組的組員,我寫了一段代碼,想給組長看一下我的代碼。那么我就必須開放權(quán)限給組長,如果只有文件擁有者和other的話,我開放權(quán)限就只能開放other的權(quán)限,那么其他所有人是不是都可以看見了,為了避免這樣的情況發(fā)生,就專門設(shè)置了一個叫做所屬組的東西,使開權(quán)限只讓所屬組看到。
2.2.2文件類型和訪問權(quán)限(事物屬性)
關(guān)于文件的權(quán)限,以前在C語言學(xué)過文件具有讀,寫,執(zhí)行權(quán)限:
除了第一列的文件類型,后面的九個字符分別代表擁有者,所屬組和other的權(quán)限位:
總體就是:?
2.2.3文件權(quán)限值的表示方法?
而r,w,x的意思:?
i.讀(r/4):Read對文件而言,具有讀取文件內(nèi)容的權(quán)限;對目錄來說,具有瀏覽該目錄信息的權(quán)限
ii.寫(w/2):Write對文件而言,具有修改文件內(nèi)容的權(quán)限;對目錄來說具有刪除移動目錄內(nèi)文件的權(quán)限
iii.執(zhí)行(x/1):execute對文件而言,具有執(zhí)行文件的權(quán)限;對目錄來說,具有進(jìn)入目錄的權(quán)限
iv.“—”表示不具有該項權(quán)限?
它們的組合方式:
字符表示方法
八進(jìn)制數(shù)值表示方法
2.2.4文件訪問權(quán)限的相關(guān)設(shè)置方法
chmod
用chmod u-r my.txt改變擁有者的r權(quán)限:?
這里顯示的就不在有r。
還有一個問題,先來看:
在正常情況下,這個文件可讀可寫:
我先把r和w權(quán)限去除:?
這里再想去讀或者寫就不行了:?
問題就是,雖然我的擁有者權(quán)限沒有了,但是我依然是所屬組里的人,所屬組的權(quán)限依然在:?
因為在確定用戶信息的時候,系統(tǒng)會先確定用戶是誰,在Centos下,用戶角色只確定一次,順序就是擁有者,所屬組和other。像上面的,我本身就是lwz用戶,在確定我是擁有者之后就不會再往后面去確認(rèn)了。?
再舉個例子:
這里我把擁有組的人改為了root,所屬組還是lwz:
之后我再用lwz用戶進(jìn)行寫和讀就可以了(先與擁有者比較,發(fā)現(xiàn)不是再與所屬組比):?
同理我把所屬組的rw權(quán)限也給去除,而且所屬組的人也給改為root?
?
后面用lwz用戶再去寫和讀依然是可以的,因為other的rw權(quán)限是保留的。??
我給my.txt給可執(zhí)行權(quán)限,那么這個文件就一定可以執(zhí)行嗎? 肯定不會。
可執(zhí)行權(quán)限!=文件可以執(zhí)行(要有可執(zhí)行的那個能力,給了機會你不中用啊)
?chown/chgrp
這兩個東西的用來更改人的,其實只需要用chown就可以更改全部的了。
把文件給別人必須高權(quán)限:
chgrp的用法跟chown一樣,不過它改的是所屬組。?
用chown直接就可以改擁有者和所屬組了。
sudo chown root:root my.txt
?用八進(jìn)制改權(quán)限
一個數(shù)字0-8可以表示所有的改變方案:
2.2.5目錄權(quán)限
我們進(jìn)入目錄的時候需要的是文件屬性的x屬性:
比如我把work目錄的x屬性去除:
r權(quán)限的作用:?
沒有r權(quán)限無法查看文件里的內(nèi)容:
?w權(quán)限的作用:
下面我們就無法touch新建文件:
對root無效!?
所以我們新建一個目錄的時候,rwx權(quán)限都必須有。任何用戶都無法進(jìn)入其他用戶的家目錄。
因為它們的權(quán)限只對自己有rwx權(quán)限:?
?2.2.6缺省權(quán)限
我們在新建文件的時候它們的默認(rèn)權(quán)限:
對于普通文件來講:起始權(quán)限是666,默認(rèn)不帶可執(zhí)行(除了可執(zhí)行程序文件)
對于目錄文件來講:起始權(quán)限是777,默認(rèn)帶可執(zhí)行?
但是我們創(chuàng)建的文件權(quán)限不是很符合這個起始權(quán)限:
因為系統(tǒng)會存在一個權(quán)限掩碼的概念(只看后三位):
最終權(quán)限=起始權(quán)限&(~umask)?
計算過程如下:
umask的目的:我們希望凡是在umask中出現(xiàn)的權(quán)限,都不應(yīng)該在最終權(quán)限里出現(xiàn)。
為什么要有umask:默認(rèn)權(quán)限是由OS自主決定,無法在創(chuàng)建之間修改,但是我們?nèi)绻梢宰约号渲?#xff0c;可以滿足靈活需要。在特殊情況下,配置umask可以控制文件的默認(rèn)權(quán)限,讓我們的代碼是可控的。
修改umask:?
之后創(chuàng)建的目錄還是普通文件都不會再有任何權(quán)限:?
?2.2.7粘滯位
目錄里文件的刪除跟目錄本身的w有關(guān),與目錄里的文件無關(guān)。
前面我們知道,一個普通用戶是不可以進(jìn)入另一個普通用戶。那如果我們要進(jìn)行數(shù)據(jù)交互的話就需要在公共目錄下建立一個兩個人都可以進(jìn)入,改變的目錄:
我們可以使用sudo以root的身份創(chuàng)建一個中立的目錄:
再給這個目錄的other添加w權(quán)限:?
這樣普通用戶就可以在這里實現(xiàn)數(shù)據(jù)交互,但是還有一個問題是,刪除文件時跟文件本身無關(guān),跟上一級的w權(quán)限有關(guān),上面把w權(quán)限放開了那么任何人都可以隨便刪除里面的文件了。?
為了避免這種情況,我們需要一個新的權(quán)限(粘滯位),讓我們可以在這個目錄下新建文件的同時,還不允許里面的文件被其他人刪除:
other就被添加上了t :
這樣之后,即使我們有w權(quán)限也不可以刪除其他人的文件了(自己的依舊可以刪除):
粘滯位特征:只能給需要共享的目錄添加粘滯位。