所屬專欄:Linux學(xué)習(xí)??
?? >博主首頁:初陽785??
?? >代碼托管:chuyang785??
?? >感謝大家的支持,您的點(diǎn)贊和關(guān)注是對(duì)我最大的支持?。?!??
?? >博主也會(huì)更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文??!??
?? >關(guān)注我,關(guān)注我,關(guān)注我,重要的事情說三遍?。。。。。。?!??
1.shell外殼
1.1 shell外殼的定義
我們用指令執(zhí)行相應(yīng)的操作的基本流程如下:
而我們的shell外殼相當(dāng)于是一個(gè)中間商,是指令操作與內(nèi)核進(jìn)行交流的通道。
Linux嚴(yán)格意義上說的是一個(gè)操作系統(tǒng),我們稱之為“核心(kernel)“ ,但我們一般用戶,不能直接使用kernel。
而是通過kernel的“外殼”程序,也就是所謂的shell,來與kernel溝通。如何理解?為什么不能直接使用kernel?
1.2 shell外殼的作用
- 就如上面我們所說的,為什么我們輸入指令操作的時(shí)候要經(jīng)過shell來與我們的操作系統(tǒng)交流呢?而不是直接與操作系統(tǒng)進(jìn)行交流呢?
我們舉幾個(gè)生活中的例子吧:
就比如我們成年了,都要辦理身份證,而我們辦理身份證的時(shí)候去的地方是公安局,由公安局向國(guó)家?guī)臀覀兩暾?qǐng)辦理身份證,而這個(gè)時(shí)候我們就可抽象認(rèn)為,要辦理身份證的那個(gè)人就是指令操作,而公安局人員就是shell外殼,國(guó)家就是我們的操作系統(tǒng)。而這個(gè)時(shí)候我們能不能直接越過公安局人員直接向國(guó)家申請(qǐng)身份證呢?雖然說是可以的,但是你知道辦理一個(gè)身份證的具體流程,以及辦理身份證所需的各種材料證明嗎?最重要的是去哪里可以找到國(guó)家辦理身份證呢?所以這個(gè)時(shí)候公安局人員就會(huì)幫助我們一切問題,而我們只需要告訴他們我們需要辦理身份證,并且公安局人員還會(huì)檢查要辦理身份證的這個(gè)人是不是我們國(guó)家的,是不是偷渡過來的,檢查完后公安局人員就會(huì)走具體的流程辦理向國(guó)家申請(qǐng)幫你辦理身份證。等到辦理完成后,由國(guó)家把身份證發(fā)送到公安局人員手里,公安局人員再聯(lián)系你過來拿身份證。所以這個(gè)時(shí)候我們的公安局人員扮演了一個(gè)很重的角色。
所以shell外殼的作用就是:
- 用戶不能直接與操作系統(tǒng)/圖形化界面進(jìn)行交流,所以shell外殼充當(dāng)中介過程。
- 將使用者的命令翻譯個(gè)內(nèi)核(kernel)處理。
- 同時(shí)將內(nèi)核的處理結(jié)果翻譯個(gè)使用者。
- 對(duì)用戶輸入的指令進(jìn)行檢查合法性。
對(duì)比windows GUI,我們操作windows 不是直接操作windows內(nèi)核,而是通過圖形接口,點(diǎn)擊,從而完成我們的
操作(比如進(jìn)入D盤的操作,我們通常是雙擊D盤盤符.或者運(yùn)行起來一個(gè)應(yīng)用程序)。
shell 對(duì)于Linux,有相同的作用,主要是對(duì)我們的指令進(jìn)行解析,解析指令給Linux內(nèi)核。反饋結(jié)果在通過內(nèi)核運(yùn)
行出結(jié)果,通過shell解析給用戶。
1.3 shell的原理
shell再處理指令的時(shí)候,會(huì)對(duì)指令進(jìn)行一次判斷,低風(fēng)險(xiǎn)或者高風(fēng)險(xiǎn)。
- 如果是低風(fēng)險(xiǎn)的話,就由shell自行傳達(dá)個(gè)操作系統(tǒng),而shell
本質(zhì)其實(shí)是一個(gè)執(zhí)行起來的程序(進(jìn)程)
,系統(tǒng)啟動(dòng)期間一直存在。 - 如果有風(fēng)險(xiǎn)的話,shell都會(huì)通過
創(chuàng)建一個(gè)子進(jìn)程的方式讓子進(jìn)程執(zhí)行指令。
我們也可以看到我們的shell外殼:
- 這里就會(huì)有疑問了,為什么這里的外殼不是shell而是bash呢?
其實(shí)shell是外殼的統(tǒng)稱,centos下的外殼是bash。
而我們?cè)貺inux下我們看到的 其實(shí)就是我們的
bash
這也叫做命令行解釋器。
- 注:每次我們進(jìn)行xshell登陸的時(shí)候,操作系統(tǒng)(OS)都會(huì)給當(dāng)前登陸用戶新啟動(dòng)一個(gè)shell,bash。
2.Linux用戶權(quán)限
2.1創(chuàng)建普通用戶
Linux下有兩種用戶:超級(jí)用戶(root)、普通用戶。
-
超級(jí)用戶:
可以再linux系統(tǒng)下做任何事情,不受限制 -
普通用戶:
在linux下做有限的事情。
超級(jí)用戶的命令提示符是“#”,普通用戶的命令提示符是“$”
- 我們來用root超級(jí)用戶創(chuàng)建一個(gè)普通用戶。
adduser 用戶名——?jiǎng)?chuàng)建用戶
passwd 用戶名——設(shè)置密碼。
這個(gè)是以$開頭的,是普通用戶
而我們的root用戶是以#開頭的。
2.2 用戶之間的切換
命令:su [用戶名] / su - [用戶名]
功能:切換用戶。
例如,要從root用戶切換到普通用戶user,則使用 su user。 要從普通用戶user切換到root用戶則使用 su
root(root可以省略),此時(shí)系統(tǒng)會(huì)提示輸入root用戶的口令
-
su與su - 這兩個(gè)指令基本上相同,
只不過su - 是以root身份重新登陸一次。
做個(gè)比方:就是假如當(dāng)前用戶是chuyang,然后用su root用root用戶登陸,此時(shí)我們的權(quán)限就是root但是文件內(nèi)容還是chuyang的。
但是如果是su - root的話就是直接登陸到了root用戶了。 -
剛才我們創(chuàng)建了一個(gè)普通用戶,現(xiàn)在我們用普通用戶切換回root用戶。
我們用su root切換到root用戶,是要輸入密碼的。
- 而我們用root用戶切花到其他其他普通用戶是不需要密碼的,因?yàn)槌?jí)用戶不受限制,有最高權(quán)限。
-
而且我們r(jià)oot有用戶是可以直接修改普通用戶的密碼的,
不需要知道原先普通用戶的密碼也可以直接進(jìn)行修改。
-
再兩個(gè)普通用戶之間進(jìn)行切換的話都是需要
輸入對(duì)方的密碼。
2.3 sudo指令
sudo對(duì)指定的命令進(jìn)行提權(quán)
-
我們使用root超級(jí)用戶的時(shí)候,是可以直接查看到我們普通用戶的文件的,并且也可以執(zhí)行。
-
但是我們使用普通用戶是沒辦法訪問root用戶下的文件的,并且也沒法訪問其他普通用戶的文件。而
sudo指令可以給予普通用戶部分root的權(quán)限,
也就是說普通用戶可以擁有root的使用權(quán)限。
- 但是這個(gè)時(shí)候我們可以看到,我們還要輸入密碼,
這個(gè)密碼是當(dāng)前用戶的密碼
,不是root的密碼
,但是我們執(zhí)行了sudo指令為什么他會(huì)給我們報(bào)錯(cuò)呢?原因也很簡(jiǎn)單,我們要使用root的權(quán)限,而且還不用輸入root的密碼,那我們還要root用戶干嘛,直接每個(gè)普通用戶都使用sudo使用root的權(quán)限。所以要使用sudo指令我們要使用root用戶手動(dòng)把普通用戶添加到sudoers這個(gè)配置文件中
,就有點(diǎn)類似于root的白名單,
只有在這個(gè)白名單上的普通用戶才有資格使用root的權(quán)限。
而具體怎么添加我們后期的學(xué)習(xí)當(dāng)中會(huì)講解。
3.Linux文件權(quán)限
3.1文件訪問者的分類(人)
我們對(duì)文件的權(quán)限無非是這三個(gè)權(quán)限:文件的讀權(quán)限(r),文件的寫權(quán)限(w),文件的執(zhí)行權(quán)限(x)。
- 文件訪問者的分類(人)
類名 | 解釋 |
---|---|
u—User(擁有者) | 文件和文件目錄的所有者 |
g—Group(所屬組) | 文件和文件目錄的所有者所在的組的用戶 |
o—Others(其他) | 其它用戶 |
-
這個(gè)表示文件的屬性
-
這個(gè)表示文件的擁有者
-
這個(gè)表示文件的所屬組
-
除了擁有者和所屬組的其他都是other。
我們來解釋一下這些屬性。
-
首先擁有者user的話就不用過多的講解了,就是我們我們當(dāng)前用戶所創(chuàng)建的一個(gè)文件,我們那chuyang這個(gè)用戶來解釋一下。就是我們?cè)赾huyang這個(gè)用戶下創(chuàng)建一個(gè)文件,qfw這個(gè)用戶能訪問嗎?答案是不能,應(yīng)為我在chuyang這個(gè)用戶下創(chuàng)建的文件擁有者是chuyang這個(gè)用戶,其他普通用戶是訪問不了的。
-
而至于所屬組,我們可以理解為我們?cè)诖髮W(xué)里,我們知道大學(xué)對(duì)應(yīng)在各個(gè)專業(yè),而每個(gè)專業(yè)都會(huì)分幾個(gè)半,我們把同屬于一個(gè)專業(yè)但是不是一個(gè)班級(jí)的學(xué)生分為一個(gè)所屬組,也就是說在每個(gè)班級(jí)里,只有是同一個(gè)班級(jí)的學(xué)生才能享受到來自班級(jí)老師提供的學(xué)習(xí)文件,其他班級(jí)的學(xué)生拿不到這個(gè)學(xué)習(xí)資料?,F(xiàn)在回到剛才的問題,是不是我在chuyang這個(gè)用戶創(chuàng)建的文件qfw這個(gè)用戶一定訪問不了嗎?答案肯定不是的,只要我們的qfw和chuyang這兩個(gè)用戶所屬同一個(gè)組就可以共享其文件訪問。
之所以會(huì)涉及到這些屬性的問題,終歸都是為了在訪問文件這一塊的要求,那也就是說這些屬性的涉及都是為了訪問文件做的鋪墊,也就是訪問文件的權(quán)限。
3.2 文件文件類型和訪問權(quán)限(事物屬性)
一一對(duì)應(yīng)著我們Linux中的信息:
- 文件類型:
文件類型 | 所屬意思 |
---|---|
d | 文件夾 |
- | 普通文件 |
l | 軟鏈接(類似Windows的快捷方式) |
b | 塊設(shè)備文件(例如硬盤、光驅(qū)等) |
p | 管道文件 |
c | 字符設(shè)備文件(例如屏幕等串口設(shè)備) |
s | 套接口文件 |
-
這些對(duì)應(yīng)著我們屬性欄的第一列:
-
而后面的一大串字符串,三個(gè)為一組,分別對(duì)應(yīng)著r(讀),w(寫),x(執(zhí)行)權(quán)限操作:
注:這里的權(quán)限順序都是從左到右一次是:擁有者,所屬組,other
。他們的權(quán)限一次是r,w,x。
如果沒有權(quán)限的話就是用“-”表示。
3.3 chmod指令
功能:設(shè)置文件的訪問權(quán)限
格式:chmod [參數(shù)] (+/-)權(quán)限 文件名
常用選項(xiàng):
R -> 遞歸修改目錄文件的權(quán)限
說明:只有文件的擁有者和root才可以改變文件的權(quán)限
- chmod命令權(quán)限的格式
用戶表示符+/-=權(quán)限字符
+:向權(quán)限范圍增加權(quán)限代號(hào)所表示的權(quán)限
-:向權(quán)限范圍取消權(quán)限代號(hào)所表示的權(quán)限
=:向權(quán)限范圍賦予權(quán)限代號(hào)所表示的權(quán)限
用戶符號(hào):
u:擁有者
g:擁有者同組用
o:其它用戶
a:所有用戶
我們的file.txt,剛開始的權(quán)限:擁有者:讀寫權(quán)限。所屬組和other都只有讀權(quán)限。
-
現(xiàn)在我們對(duì)file.txt文件的擁有者加上x(執(zhí)行)權(quán)限:
-
也可對(duì)file.txt的所屬組加上wx讀和執(zhí)行權(quán)限:
-
也可以對(duì)other刪除r讀權(quán)限。
-
也可以給other加上rwx所有權(quán)限:
-
也可把擁有者,所屬組,other的權(quán)限全部去除:
也可以使用a——all的意思:
3.4三位8進(jìn)制數(shù)字更改權(quán)限
我們把上面的權(quán)限變換成我們計(jì)算機(jī)熟悉的二進(jìn)制位來理解。
有權(quán)限就是1,沒有權(quán)限就是0。也就是所一個(gè)所屬的權(quán)限范用8進(jìn)制來取值范圍就是0-8。于是我們就可以用8進(jìn)制的方式來更改我們的權(quán)限。
- 給file.txt的擁有者,所屬組,other都加上全部權(quán)限:
- 刪除other的wx權(quán)限:
3.5 權(quán)限匹配問題
- 注意:假設(shè)我們有一個(gè)a.out的可執(zhí)行程序
現(xiàn)在我們執(zhí)行一下:
發(fā)現(xiàn)是可以執(zhí)行的,那現(xiàn)在我們需改一下?lián)碛姓吆退鶎俳M的權(quán)限,然后再次執(zhí)行以下文件:
- 這里我們的a.out的擁有者雖然沒有x執(zhí)行權(quán)限,但是所屬組有x執(zhí)行權(quán)限,那為什么沒辦法執(zhí)行文件呢?
原因就是Linux的匹配規(guī)則:
當(dāng)一個(gè)賬號(hào)他在權(quán)限和文件權(quán)限匹配的時(shí)候,它自己的賬號(hào)和文件的擁有者身份和所屬組者身份一次進(jìn)行匹配,一旦匹配成功了就不會(huì)在匹配了。
現(xiàn)在來解釋一下上面出現(xiàn)的狀況。當(dāng)前的用戶是qfw,擁有者和所屬組都是qfw,那么在執(zhí)行這個(gè)文件的時(shí)候,用戶一次跟擁有者,所屬組進(jìn)行匹配,發(fā)現(xiàn)和擁有者匹配成功了,就不會(huì)再次往下匹配了。然后開始匹配文件權(quán)限,而擁有者的文件權(quán)限沒有x執(zhí)行權(quán)限,所以就會(huì)報(bào)出權(quán)限不夠的警告。
3.6 chown 和 chgrp指令
chown
功能:修改文件的擁有者
格式:chown [參數(shù)] 用戶名 文件名
chgrp
功能:修改文件或目錄的所屬組
格式:chgrp [參數(shù)] 用戶組名 文件名
常用選項(xiàng):-R 遞歸修改文件或目錄的所屬組
我們先切換到root用戶,這里因?yàn)槲覀兊腸huyang和qfw都還沒進(jìn)入root白名單,所以還無法使用sudo指令。
- 例如我們把text.txt文件的擁有者改成root:
- 把text.txt的所屬組改成root:
先在root用戶中把a(bǔ).out的擁有者改成chuyang
再切換為qfw用戶:
現(xiàn)在我們?cè)俅螆?zhí)行a.out:
會(huì)發(fā)現(xiàn)不會(huì)報(bào)錯(cuò)了,而是直接執(zhí)行了。這也就再次驗(yàn)證了我們的匹配權(quán)限。qfw用戶先跟擁有者chuyang匹配,匹配不成功跟所屬組匹配,匹配成功再匹配文件權(quán)限,有x執(zhí)行權(quán)限,所以就可以執(zhí)行。文章來源:http://www.zghlxwxcb.cn/news/detail-716747.html
注:root用戶無視權(quán)限直接執(zhí)行:文章來源地址http://www.zghlxwxcb.cn/news/detail-716747.html
到了這里,關(guān)于Linux中shell外殼,用戶權(quán)限,文件權(quán)限的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!