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