0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

shell命令以及運(yùn)行原理

dyquk4xk2p3d ? 來(lái)源:良許Linux ? 作者:良許Linux ? 2022-11-21 10:56 ? 次閱讀

	

	

目錄

1. shell命令以及運(yùn)行原理

Linux嚴(yán)格意義上說(shuō)的是一個(gè)操作系統(tǒng),我們稱(chēng)之為“核心(kernel)“ ,但我們一般用戶,不能直接使用kernel。而是通過(guò)kernel的“外殼”程序,也就是所謂的shell,來(lái)與kernel溝通。

如何理解?為什么不能直接使用kernel?

從技術(shù)角度,Shell的最簡(jiǎn)單定義:命令行解釋器(command Interpreter)主要包含:

將使用者的命令翻譯給核心(kernel)處理。
同時(shí),將核心的處理結(jié)果翻譯給使用者。

938ff102-692c-11ed-8abf-dac502259ad0.jpg

注意:shell 是所有外殼程序的統(tǒng)稱(chēng),bash 是一種具體的shell。例如:centos 7外殼程序 :bash

對(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解析給用戶。

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。

?2. Linux權(quán)限

?2.1 權(quán)限的概念

Linux下有兩種用戶:超級(jí)用戶(root)、普通用戶。

超級(jí)用戶:可以再linux系統(tǒng)下做任何事情,不受限制

普通用戶:在linux下做有限的事情。

超級(jí)用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。

939899e2-692c-11ed-8abf-dac502259ad0.jpg

用戶切換的命令

命令:su [用戶名]

功能:切換用戶。

例如,要從root用戶切換到普通用戶user,則使用 su user。要從普通用戶user切換到root用戶則使用 suroot(root可以省略),此時(shí)系統(tǒng)會(huì)提示輸入root用戶的口令。

93a3b7dc-692c-11ed-8abf-dac502259ad0.jpg

切換到root:用su -,我們可以切換到root用戶(此時(shí)輸入root賬號(hào)密碼,密碼是不會(huì)回顯在屏幕上的)

切換回普通用戶:用su - 用戶名 切回普通用戶,(此時(shí)不用輸入密碼,但是我們不建議這樣切回,因?yàn)槭褂胹u -命令時(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(寫(xiě))、x(執(zhí)行權(quán)限)

人 (不是特定具體的人,而是一種角色):擁有者、所屬組、other (其它)

文件訪問(wèn)者的分類(lèi)(人)

文件和文件目錄的所有者:u—User(中國(guó)平民 法律問(wèn)題)

文件和文件目錄的所有者所在的組的用戶:g—Group(不多說(shuō))

其它用戶:o—Others (外國(guó)人)

文件類(lèi)型和訪問(wèn)權(quán)限(事物屬性)

93afe976-692c-11ed-8abf-dac502259ad0.jpg

使用命令 ls -l (ll) 顯示的多列屬性的第一列對(duì)應(yīng)的字符來(lái)區(qū)分它的文件類(lèi)型。

93b73ae6-692c-11ed-8abf-dac502259ad0.jpg

不需要列出other,因?yàn)椴皇菗碛姓吆退鶎俳M的就是other了

幫助理解 - 擁有者和所屬組

我們舉個(gè)簡(jiǎn)單的例子,在一家公司內(nèi)部,兩個(gè)項(xiàng)目組,要完成同樣的代碼任務(wù),他們之間彼此是互相競(jìng)爭(zhēng)的關(guān)系,但是公司給他們提供的服務(wù)器只有一個(gè),他們完成的代碼要提交上去,這是你寫(xiě)的代碼,肯定只是想讓你和你的組員組長(zhǎng)能看到,不想你的競(jìng)爭(zhēng)對(duì)手組看到,這就產(chǎn)生了所屬組的概念。

93bfc31e-692c-11ed-8abf-dac502259ad0.jpg

文件類(lèi)型

d:文件夾

-:普通文件

l:軟鏈接(類(lèi)似Windows的快捷方式)

b:塊設(shè)備文件(例如硬盤(pán)、光驅(qū)等)

p:管道文件

c:字符設(shè)備文件(例如屏幕等串口設(shè)備)

s:套接口文件

93ddad0c-692c-11ed-8abf-dac502259ad0.jpg

基本權(quán)限

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)限

93e9e45a-692c-11ed-8abf-dac502259ad0.jpg

?2.3 文件權(quán)限值的表示方法

字符表示方法

Linux表示

說(shuō)明

Linux

說(shuō)明

r - -

只讀

- w -

僅可寫(xiě)

- - x

僅可執(zhí)行

r w -

可讀可寫(xiě)

- w x

可寫(xiě)可執(zhí)行

r - x

可讀可執(zhí)行

r w x

可讀可寫(xiě)可執(zhí)行

- - -

無(wú)權(quán)限

八進(jìn)制數(shù)值表示方法

權(quán)限符號(hào) (讀寫(xiě)執(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

93f543a4-692c-11ed-8abf-dac502259ad0.jpg

  • 權(quán)限更改

$ chmod 777 text.c

$ chmod 000 text.c

$ chmod 640 text.c

94035976-692c-11ed-8abf-dac502259ad0.png

?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:所有用戶

示例:

941f7a5c-692c-11ed-8abf-dac502259ad0.jpg

注意: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í)修改

94318eae-692c-11ed-8abf-dac502259ad0.jpg

chgrp

功能:修改文件或目錄的所屬組

格式:chgrp [參數(shù)] 用戶組名 文件名

常用選項(xiàng):-R 遞歸修改文件或目錄的所屬組

實(shí)例:

$ sudo chgrp root text.c

$ sudo chgrp lighthouse text.c

943de85c-692c-11ed-8abf-dac502259ad0.jpg

?2.4 修改文件的掩碼

umask

功能:查看或修改文件掩碼

語(yǔ)法:umask 權(quán)限值

944d54c2-692c-11ed-8abf-dac502259ad0.jpg

新建文件夾默認(rèn)權(quán)限=0666

新建目錄默認(rèn)權(quán)限=0777

945a0212-692c-11ed-8abf-dac502259ad0.jpg

但是我們觀察到,新建的文件和目錄并不是默認(rèn)的起始權(quán)限,這里是什么原因呢?

原因就是創(chuàng)建文件或目錄的時(shí)候還要受到umask的影響。假設(shè)默認(rèn)權(quán)限是mask,則實(shí)際創(chuàng)建的出來(lái)的文件權(quán)限是:umask & ~umask

94688274-692c-11ed-8abf-dac502259ad0.jpg

我們也可以通過(guò)修改文件的umask碼值來(lái)修改文件的權(quán)限:

9482ed9e-692c-11ed-8abf-dac502259ad0.jpg

說(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í)文件類(lèi)型。

語(yǔ)法:file [選項(xiàng)] 文件或目錄…

常用選項(xiàng):

-c 詳細(xì)顯示指令執(zhí)行過(guò)程,便于排錯(cuò)或分析程序執(zhí)行的情形。

-z 嘗試去解讀壓縮文件的內(nèi)容。

948fcb36-692c-11ed-8abf-dac502259ad0.jpg

?3. 目錄權(quán)限

?面試題:進(jìn)入一個(gè)目錄要什么權(quán)限?

可讀權(quán)限: 如果目錄沒(méi)有可讀權(quán)限,則無(wú)法用ls等命令查看目錄中的文件內(nèi)容.

可寫(xiě)權(quán)限: 如果目錄沒(méi)有可寫(xiě)權(quán)限,則無(wú)法在目錄中創(chuàng)建文件, 也無(wú)法在目錄中刪除文件.

可執(zhí)行權(quán)限:如果沒(méi)有目錄可執(zhí)行權(quán)限,則無(wú)法cd到目錄中

x
r
w

?4. 粘滯位

?新發(fā)現(xiàn):

就是只要用戶具有目錄的寫(xiě)權(quán)限, 用戶就可以刪除目錄中的文件, 而不論這個(gè)用戶是否有這個(gè)文件的寫(xiě)權(quán)限.我創(chuàng)建的一個(gè)文件, 憑什么被你一個(gè)外人可以刪掉

949a3436-692c-11ed-8abf-dac502259ad0.jpg

結(jié)論:

如果目錄本身對(duì)other具有w權(quán)限,other可以刪掉任何目錄下的東西

如果目錄本身對(duì)other沒(méi)有w權(quán)限,other則不可以刪除

我們的需求:other可以在特定的目錄下創(chuàng)建文件并寫(xiě)入,但是不想讓任何人刪除掉自己的文件

這里為了解決這個(gè)不科學(xué)的問(wèn)題,Linux引入了粘滯位的概念

粘滯位

語(yǔ)法:chmod +t 目錄名

功能:給目錄加上粘滯位

注意:

只能對(duì)目錄設(shè)置,一般是限制other權(quán)限的,對(duì)設(shè)置粘滯位的目錄,在該目錄下,只能有文件的擁有者和root用戶可以刪除,其他人不能刪除

示例:

94aaa73a-692c-11ed-8abf-dac502259ad0.jpg

有多個(gè)人或者系統(tǒng)會(huì)有很多的臨時(shí)數(shù)據(jù),所有的臨時(shí)文件都放在系統(tǒng)的*/tmp*目錄下。所有的權(quán)限需要放開(kāi),但是只想讓文件的擁有者刪除自己的文件,這需要設(shè)置粘滯位

5. 總結(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í)行l(wèi)s命令,但仍然沒(méi)有權(quán)限讀出目錄下的文檔。



審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11215

    瀏覽量

    208754
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6703

    瀏覽量

    123151
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    363

    瀏覽量

    23262

原文標(biāo)題:chmod

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux系統(tǒng)中shell命令解析

    shell是Linux系統(tǒng)的用戶界面,提供了用戶與內(nèi)核交互的一種接口,它接收用戶輸入的命令并到送到內(nèi)核去執(zhí)行,因此也被稱(chēng)為L(zhǎng)inux的命令解釋器。
    的頭像 發(fā)表于 11-05 15:40 ?112次閱讀

    TCSH shell 編程入門(mén)

    ICer從業(yè)人員最先需要掌握的語(yǔ)言,就是linux shell語(yǔ)言。TCSH是ICer使用最多的Shell語(yǔ)言,可以說(shuō)ICer入門(mén)語(yǔ)言從TCSH開(kāi)始。
    發(fā)表于 11-01 10:45 ?0次下載

    shell腳本執(zhí)行的三種方式及區(qū)別

    在Linux系統(tǒng)中,Shell腳本是一種非常實(shí)用的工具,用于自動(dòng)化執(zhí)行一系列命令Shell腳本可以大大提高工作效率,簡(jiǎn)化復(fù)雜的任務(wù)。在這篇文章中,我們將介紹Shell腳本執(zhí)行的三種方
    的頭像 發(fā)表于 08-30 15:24 ?669次閱讀

    執(zhí)行shell腳本的方式包括什么

    執(zhí)行Shell腳本的方式有很多種,以下是一些常見(jiàn)的方法: 直接運(yùn)行腳本文件 在命令行中,可以直接使用腳本文件的路徑來(lái)運(yùn)行腳本。例如: ./script. sh 這種方式需要確保腳本文件
    的頭像 發(fā)表于 08-30 15:17 ?256次閱讀

    shell具有的功能和特點(diǎn)

    Shell 是一個(gè)命令行解釋器,用于與操作系統(tǒng)進(jìn)行交互。它提供了一種方便的方式來(lái)執(zhí)行命令、管理文件和目錄、運(yùn)行程序等。以下是 Shell
    的頭像 發(fā)表于 08-30 14:48 ?328次閱讀

    嵌入式學(xué)習(xí)-常見(jiàn)的shell命令之其他命令

    用戶的信息用法:who示例:5、PS查詢(xún)進(jìn)程命令命令:ps功能:顯示當(dāng)前操作系統(tǒng)中由該用戶運(yùn)行的進(jìn)程列表常見(jiàn)參數(shù):用法:示例1:ps示例2:ps -el查看所有進(jìn)程的詳細(xì)信息示例3:使用ps aux查看詳細(xì)
    發(fā)表于 08-22 09:42

    常見(jiàn)的shell命令之其他命令

    用戶的信息用法:who示例:5、PS查詢(xún)進(jìn)程命令命令:ps功能:顯示當(dāng)前操作系統(tǒng)中由該用戶運(yùn)行的進(jìn)程列表常見(jiàn)參數(shù):用法:示例1:ps示例2:ps -el查看所有進(jìn)程的詳細(xì)信息示例3:使用ps aux查看詳細(xì)
    發(fā)表于 08-21 09:49

    嵌入式學(xué)習(xí)-shell介紹

    本使用的Shell有可能不同,但是基本的特性還是一樣的:一、支持內(nèi)置命令可直接使用;二、支持命令組合成新的復(fù)合命令;三、支持TAB鍵補(bǔ)齊;四、支持后臺(tái)
    發(fā)表于 08-16 09:13

    shell基本介紹及常用命令shell介紹

    本使用的Shell有可能不同,但是基本的特性還是一樣的:一、支持內(nèi)置命令可直接使用;二、支持命令組合成新的復(fù)合命令;三、支持TAB鍵補(bǔ)齊;四、支持后臺(tái)
    發(fā)表于 08-15 09:28

    深入剖析Shell命令運(yùn)行機(jī)制與權(quán)限管理

    Linux作為一個(gè)操作系統(tǒng),稱(chēng)為"kernel",一般用戶不能直接使用kernel,而通過(guò)"kernel"的外殼程序"Shell"和kernel進(jìn)行溝通。
    發(fā)表于 03-08 12:36 ?571次閱讀
    深入剖析<b class='flag-5'>Shell</b><b class='flag-5'>命令</b><b class='flag-5'>運(yùn)行</b>機(jī)制與權(quán)限管理

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過(guò)命令行直接運(yùn)行Python代碼。在Shell中,可以輸入一行代碼并立即得到結(jié)果,非常適合于測(cè)試、嘗試新代碼或進(jìn)行簡(jiǎn)單的任務(wù)。本文將詳
    的頭像 發(fā)表于 11-29 14:36 ?1079次閱讀

    Fish Shell采用Rust重寫(xiě)會(huì)導(dǎo)致性能下降

    fish 是適用于 Linux、macOS 的命令Shell,其名字取于 "the friendly interactive shell" 的簡(jiǎn)稱(chēng),最大特點(diǎn)就是方便易用、功能強(qiáng)大、智能并且用戶友好。很多其他
    的頭像 發(fā)表于 11-28 11:23 ?410次閱讀
    Fish <b class='flag-5'>Shell</b>采用Rust重寫(xiě)會(huì)導(dǎo)致性能下降

    pycharm命令行終端運(yùn)行代碼

    。 PyCharm的命令行終端允許開(kāi)發(fā)者在IDE中直接執(zhí)行命令,并查看輸出結(jié)果。通過(guò)使用命令行終端,開(kāi)發(fā)者可以在不離開(kāi)PyCharm的情況下運(yùn)行代碼、調(diào)試程序和執(zhí)行其他與開(kāi)發(fā)相關(guān)的任務(wù)
    的頭像 發(fā)表于 11-22 11:20 ?4462次閱讀

    linux命令行運(yùn)行步驟

    運(yùn)行Linux命令行涉及以下步驟: 打開(kāi)終端 在Linux系統(tǒng)中,打開(kāi)命令行界面的方式有多種,最常見(jiàn)的是打開(kāi)終端應(yīng)用程序??梢栽趹?yīng)用程序菜單中找到終端,點(diǎn)擊打開(kāi)。 熟悉命令行提示符 在
    的頭像 發(fā)表于 11-17 10:18 ?737次閱讀

    Shell基本介紹及目錄常用命令

    01、Shell是什么?我們?cè)趧傞_(kāi)始接觸Linux的時(shí)候,經(jīng)常會(huì)聽(tīng)到工程師提到Shell這個(gè)詞,那么Shell到底是什么呢?簡(jiǎn)單的說(shuō),它是一個(gè)應(yīng)用,接收用戶命令,調(diào)用相應(yīng)的內(nèi)核接口函數(shù)
    的頭像 發(fā)表于 11-15 13:06 ?463次閱讀
    <b class='flag-5'>Shell</b>基本介紹及目錄常用<b class='flag-5'>命令</b>