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é)果翻譯給使用者。
?
注意:shell 是所有外殼程序的統(tǒng)稱,bash 是一種具體的 shell。例如:centos 7 外殼程序 :bash
對(duì)比 windows GUI,我們操作 windows 不是直接操作 windows 內(nèi)核,而是通過(guò)圖形接口,點(diǎn)擊,從而完成我們的操作(比如進(jìn)入 D 盤的操作,我們通常是雙擊 D 盤盤符. 或者運(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 解析給用戶。
shell 運(yùn)行原理
?
shell是做命令行解釋的 對(duì)系統(tǒng)有危害性的命令會(huì)被阻止從而保護(hù)操作系統(tǒng) 其好處為子進(jìn)程出現(xiàn)任何問(wèn)題都不會(huì)影響父進(jìn)程shell
?
幫助理解:
如果說(shuō)你是一個(gè)悶騷且害羞的程序員,那 shell 就像媒婆
操作系統(tǒng)內(nèi)核就是你們村頭漂亮的且有讓你心動(dòng)的 MM 小花。
你看上了小花,但是有不好意思直接表白,那就讓你你家人找媒婆幫你提親
所有的事情你都直接跟媒婆溝通,由媒婆轉(zhuǎn)達(dá)你的意思給小花
而我們找到媒婆姓王,所以我們叫它王婆,它對(duì)應(yīng)我們常使用的 bash。
Linux 權(quán)限
2.1 權(quán)限的概念
Linux 下有兩種用戶:超級(jí)用戶(root)、普通用戶。
超級(jí)用戶:可以再 linux 系統(tǒng)下做任何事情,不受限制
普通用戶:在 linux 下做有限的事情。
超級(jí)用戶的命令提示符是 “#”,普通用戶的命令提示符是 “$”。
用戶切換的命令
命令:su [用戶名]
功能:切換用戶。
例如,要從 root 用戶切換到普通用戶 user,則使用 su user。要從普通用戶 user 切換到 root 用戶則使用 suroot(root 可以省略),此時(shí)系統(tǒng)會(huì)提示輸入 root 用戶的口令。
切換到 root:用 su -,我們可以切換到 root 用戶(此時(shí)輸入 root 賬號(hào)密碼,密碼是不會(huì)回顯在屏幕上的)
切換回普通用戶:用 su - 用戶名 切回普通用戶,(此時(shí)不用輸入密碼,但是我們不建議這樣切回,因?yàn)槭褂?su - 命令時(shí),會(huì)創(chuàng)建更多的 bash 進(jìn)程)
推薦的切換回普通用戶:輸入 exit 或者敲擊 Ctrl+d,回退到普通用戶
2.2 權(quán)限管理
什么是權(quán)限
權(quán)限本質(zhì)上是決定某件事情,某人能否做。
針對(duì)人:例如我是這間房子的主人所以我可以自由進(jìn)出這個(gè)房子
針對(duì)事物:我想去吃一臺(tái)電腦、我想在面包上玩英雄聯(lián)盟、看電影。面包能吃,但是電腦不能吃、你可以吃面包,但是不能吃電腦;這里面包括了兩個(gè)屬性。
文件受人的影響和文件受本身自身特點(diǎn) (事物屬性) 的影響 所以文件權(quán)限 = 人 + 事物屬性
文件權(quán)限屬性:r(讀)、w(寫)、x(執(zhí)行權(quán)限)
人 (不是特定具體的人,而是一種角色):擁有者、所屬組、other (其它)
文件訪問(wèn)者的分類(人)
文件和文件目錄的所有者:u—User(中國(guó)平民 法律問(wèn)題)
文件和文件目錄的所有者所在的組的用戶:g—Group(不多說(shuō))
其它用戶:o—Others (外國(guó)人)
文件類型和訪問(wèn)權(quán)限(事物屬性)
使用命令 ls -l (ll) 顯示的多列屬性的第一列對(duì)應(yīng)的字符來(lái)區(qū)分它的文件類型。
不需要列出 other,因?yàn)椴皇菗碛姓吆退鶎俳M的就是 other 了
幫助理解 - 擁有者和所屬組
我們舉個(gè)簡(jiǎn)單的例子,在一家公司內(nèi)部,兩個(gè)項(xiàng)目組,要完成同樣的代碼任務(wù),他們之間彼此是互相競(jìng)爭(zhēng)的關(guān)系,但是公司給他們提供的服務(wù)器只有一個(gè),他們完成的代碼要提交上去,這是你寫的代碼,肯定只是想讓你和你的組員組長(zhǎng)能看到,不想你的競(jìng)爭(zhēng)對(duì)手組看到,這就產(chǎn)生了所屬組的概念。
文件類型
d:文件夾
-:普通文件
l:軟鏈接(類似 Windows 的快捷方式)
b:塊設(shè)備文件(例如硬盤、光驅(qū)等)
p:管道文件
c:字符設(shè)備文件(例如屏幕等串口設(shè)備)
s:套接口文件
基本權(quán)限
i. 讀(r/4):Read 對(duì)文件而言,具有讀取文件內(nèi)容的權(quán)限;對(duì)目錄來(lái)說(shuō),具有瀏覽該目錄信息的權(quán)限
ii. 寫(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)限
2.3 文件權(quán)限值的表示方法
字符表示方法
Linux 表示 | 說(shuō)明 | Linux | 說(shuō)明 |
r - - | 只讀 | - w - | 僅可寫 |
- - x | 僅可執(zhí)行 | r w - | 可讀可寫 |
- w x | 可寫可執(zhí)行 | r - x | 可讀可執(zhí)行 |
r w x | 可讀可寫可執(zhí)行 | - - - | 無(wú)權(quán)限 |
八進(jìn)制數(shù)值表示方法
權(quán)限符號(hào) (讀寫執(zhí)行) | 八進(jìn)制 | 二進(jìn)制 |
r | 4 | 1 0 0 |
w | 2 | 0 1 0 |
x | 1 | 0 0 1 |
r w | 6 | 1 1 0 |
r x | 5 | 1 0 1 |
w x | 3 | 0 1 1 |
r w x | 7 | 1 1 1 |
- - - | 0 | 0 0 0 |
權(quán)限更改
?
$?chmod?777?text.c $?chmod?000?text.c $?chmod?640?text.c
?
2.4 文件訪問(wèn)權(quán)限的相關(guān)設(shè)置方法
chmod
功能:設(shè)置文件的訪問(wèn)權(quán)限
格式:chmod [參數(shù)] 權(quán)限 文件名
常用選項(xiàng):
R -> 遞歸修改目錄文件的權(quán)限
說(shuō)明:只有文件的擁有者和 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:所有用戶
示例:
注意:chmod 可以給擁有者,所屬組,其他用戶同時(shí)修改權(quán)限,中間用逗號(hào)隔開(kāi)
如果要修改不是自己的文件的時(shí)候需要 sudo 臨時(shí)權(quán)限提升或者直接切成 root 身份
sudo chmod 用戶表示符 +/-= 權(quán)限字符 文件名
chown
功能:修改文件的擁有者
格式:chown [參數(shù)] 用戶名 文件名
實(shí)例:
?
$?sudo?chown?root?test.c//?修改擁有者 $?sudo?chown?lighthouse?test.c//?修改擁有者 $?sudo?chown?:lighthouse?test.c//?修改所屬組 $?sudo?chown?lighthouse:lighthouse?test.c//?可以將擁有者、所屬組同時(shí)修改 $?sudo?chown?root:root?test.c//?可以將擁有者、所屬組同時(shí)修改
?
chgrp
功能:修改文件或目錄的所屬組
格式:chgrp [參數(shù)] 用戶組名 文件名
常用選項(xiàng):-R 遞歸修改文件或目錄的所屬組
實(shí)例:
?
$?sudo?chgrp?root?text.c $?sudo?chgrp?lighthouse?text.c
?
2.4 修改文件的掩碼
umask
功能:查看或修改文件掩碼
語(yǔ)法:umask 權(quán)限值
新建文件夾默認(rèn)權(quán)限 = 0666
新建目錄默認(rèn)權(quán)限 = 0777
但是我們觀察到,新建的文件和目錄并不是默認(rèn)的起始權(quán)限,這里是什么原因呢?
原因就是創(chuàng)建文件或目錄的時(shí)候還要受到 umask 的影響。假設(shè)默認(rèn)權(quán)限是 mask,則實(shí)際創(chuàng)建的出來(lái)的文件權(quán)限是:umask & ~umask
我們也可以通過(guò)修改文件的 umask 碼值來(lái)修改文件的權(quán)限:
說(shuō)明:將現(xiàn)有的存取權(quán)限減去權(quán)限掩碼后,即可產(chǎn)生建立文件時(shí)預(yù)設(shè)權(quán)限。超級(jí)用戶默認(rèn)掩碼值為 0022,普通用戶默認(rèn)為 0002。
2.5 file 指令
file
功能說(shuō)明:辨識(shí)文件類型。
語(yǔ)法:file [選項(xiàng)] 文件或目錄…
常用選項(xiàng):
-c 詳細(xì)顯示指令執(zhí)行過(guò)程,便于排錯(cuò)或分析程序執(zhí)行的情形。
-z 嘗試去解讀壓縮文件的內(nèi)容。
目錄權(quán)限
面試題:進(jìn)入一個(gè)目錄要什么權(quán)限?
可讀權(quán)限: 如果目錄沒(méi)有可讀權(quán)限,則無(wú)法用 ls 等命令查看目錄中的文件內(nèi)容.
可寫權(quán)限: 如果目錄沒(méi)有可寫權(quán)限,則無(wú)法在目錄中創(chuàng)建文件, 也無(wú)法在目錄中刪除文件.
可執(zhí)行權(quán)限:如果沒(méi)有目錄可執(zhí)行權(quán)限,則無(wú)法 cd 到目錄中
?
x r w
?
粘滯位
新發(fā)現(xiàn):
就是只要用戶具有目錄的寫權(quán)限, 用戶就可以刪除目錄中的文件, 而不論這個(gè)用戶是否有這個(gè)文件的寫權(quán)限.我創(chuàng)建的一個(gè)文件, 憑什么被你一個(gè)外人可以刪掉
結(jié)論
如果目錄本身對(duì) other 具有 w 權(quán)限,other 可以刪掉任何目錄下的東西
如果目錄本身對(duì) other 沒(méi)有 w 權(quán)限,other 則不可以刪除
我們的需求:other 可以在特定的目錄下創(chuàng)建文件并寫入,但是不想讓任何人刪除掉自己的文件
這里為了解決這個(gè)不科學(xué)的問(wèn)題,Linux 引入了粘滯位的概念
粘滯位
語(yǔ)法:chmod +t 目錄名
功能:給目錄加上粘滯位
注意
只能對(duì)目錄設(shè)置,一般是限制 other權(quán)限的,對(duì)設(shè)置粘滯位的目錄,在該目錄下,只能有文件的擁有者和 root 用戶可以刪除,其他人不能刪除
示例:
有多個(gè)人或者系統(tǒng)會(huì)有很多的臨時(shí)數(shù)據(jù),所有的臨時(shí)文件都放在系統(tǒng)的 /tmp 目錄下。所有的權(quán)限需要放開(kāi),但是只想讓文件的擁有者刪除自己的文件,這需要設(shè)置粘滯位
總結(jié)
目錄的可執(zhí)行權(quán)限是表示你可否在目錄下執(zhí)行命令。
如果目錄沒(méi)有 - x 權(quán)限,則無(wú)法對(duì)目錄執(zhí)行任何命令,甚至無(wú)法 cd 進(jìn)入目, 即使目錄仍然有 - r 讀權(quán)限(這個(gè)地方很容易犯錯(cuò),認(rèn)為有讀權(quán)限就可以進(jìn)入目錄讀取目錄下的文件)
而如果目錄具有 - x 權(quán)限,但沒(méi)有 - r 權(quán)限,則用戶可以執(zhí)行命令,可以 cd 進(jìn)入目錄。但由于沒(méi)有目錄的讀權(quán)限
所以在目錄下,即使可以執(zhí)行 ls 命令,但仍然沒(méi)有權(quán)限讀出目錄下的文檔。
審核編輯:湯梓紅
評(píng)論
查看更多