《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > 「Linux」shell命令以及運(yùn)行原理和Linux權(quán)限詳解

「Linux」shell命令以及運(yùn)行原理和Linux權(quán)限詳解

2022-11-18
作者:電子技術(shù)應(yīng)用專欄作家 一口Linux
來源:電子技術(shù)應(yīng)用專欄作家 一口Linux
關(guān)鍵詞: Linux shell命令

  目錄

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

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

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

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

  將使用者的命令翻譯給核心(kernel)處理,。

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

  微信截圖_20221118165844.png

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

  對比windows GUI ,我們操作windows 不是直接操作windows內(nèi)核,,而是通過圖形接口,,點(diǎn)擊,從而完成我們的操作 (比如進(jìn)入D盤的操作,,我們通常是雙擊D盤盤符.或者運(yùn)行起來一個應(yīng)用程序) ,。

  shell 對于Linux ,有相同的作用,,主要是 對我們的指令進(jìn)行解析,,解析指令給Linux內(nèi)核 。反饋結(jié)果在通過內(nèi)核運(yùn)行出結(jié)果,,通過shell解析給用戶,。

  shell運(yùn)行原理

  shell是做命令行解釋的

  對系統(tǒng)有危害性的命令會被阻止從而保護(hù)操作系統(tǒng)

  其好處為子進(jìn)程出現(xiàn)任何問題都不會影響父進(jìn)程shell

  幫助理解:

  如果說你是一個悶騷且害羞的程序員,那shell就像媒婆

  操作系統(tǒng)內(nèi)核就是你們村頭漂亮的且有讓你心動的MM小花,。

  你看上了小花,,但是有不好意思直接表白,,那就讓你你家人找媒婆幫你提親

  所有的事情你都直接跟媒婆溝通,由媒婆轉(zhuǎn)達(dá)你的意思給小花

  而我們找到媒婆姓王,,所以我們叫它王婆,,它對應(yīng)我們常使用的bash。

  2. Linux權(quán)限

  2.1 權(quán)限的概念

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

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

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

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

  微信截圖_20221118165926.png

  用戶切換的命令

  命令 : su [用戶名]

  功能:切換用戶,。

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

  微信截圖_20221118165946.png

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

  切換回普通用戶 :用su - 用戶名 切回普通用戶,,( 此時不用輸入密碼,,但是我們不建議這樣切回,因為使用su -命令時,,會創(chuàng)建更多的bash進(jìn)程 )

  推薦的切換回普通用戶 : 輸入exit或者敲擊Ctrl+d ,,回退到普通用戶

  2.2 權(quán)限管理

  什么是權(quán)限

  權(quán)限本質(zhì)上是決定某件事情,某人能否做,。

  針對人: 例如我是這間房子的主人所以我可以自由進(jìn)出這個房子

  針對事物: 我想去吃一臺電腦,、我想在面包上玩英雄聯(lián)盟、看電影,。面包能吃,,但是電腦不能吃、你可以吃面包,,但是不能吃電腦,;這里面包括了兩個屬性。

  文件受人的影響和文件受本身自身特點(diǎn) (事物屬性) 的影響 所以 文件權(quán)限 = 人 + 事物屬性

  文件權(quán)限屬性:r(讀),、w(寫),、x(執(zhí)行權(quán)限)

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

  文件訪問者的分類(人)

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

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

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

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

  微信截圖_20221118170052.png

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

  微信截圖_20221118170119.png

  不需要列出other,因為不是擁有者和所屬組的就是other了

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

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

微信截圖_20221118170436.png

  文件類型

  d:文件夾

  -:普通文件

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

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

  p:管道文件

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

  s:套接口文件

微信截圖_20221118170454.png

  基本權(quán)限

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

微信截圖_20221118170512.png

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

  微信截圖_20221118170531.png

微信截圖_20221118170552.png

  權(quán)限更改

  $ chmod 777 text.c

  $ chmod 000 text.c

  $ chmod 640 text.c

微信截圖_20221118170613.png

  2.4 文件訪問權(quán)限的相關(guān)設(shè)置方法

  chmod

  功能 :設(shè)置文件的訪問權(quán)限

  格式 :chmod [參數(shù)] 權(quán)限 文件名

  常用選項:

  R -> 遞歸修改目錄文件的權(quán)限

  說明:只有文件的擁有者和root才可以改變文件的權(quán)限

  chmod命令權(quán)限值得格式

  ① 用戶表示符+/-=權(quán)限字符

  +:向權(quán)限范圍增加權(quán)限代號所表示的權(quán)限

  -:向權(quán)限范圍取消權(quán)限代號所表示的權(quán)限

  =:向權(quán)限范圍賦予權(quán)限代號所表示的權(quán)限

  用戶符號:

  u:擁有者

  g:擁有者同組用

  o:其它用戶

  a:所有用戶

  示例:

微信截圖_20221118170933.png

  注意:chmod可以給擁有者,,所屬組,,其他用戶同時修改權(quán)限,中間用逗號隔開

  如果要修改不是自己的文件的時候需要sudo臨時權(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//可以將擁有者,、所屬組同時修改

  $ sudo chown root:root test.c//可以將擁有者,、所屬組同時修改

微信截圖_20221118171001.png

  chgrp

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

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

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

  實(shí)例:

  $ sudo chgrp root text.c

  $ sudo chgrp lighthouse text.c

  微信截圖_20221118171103.png

  2.4 修改文件的掩碼

  umask

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

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

  微信截圖_20221118171143.png

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

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

  微信截圖_20221118173113.png

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

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

  微信截圖_20221118173124.png

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

  微信截圖_20221118173138.png

  說明:將現(xiàn)有的存取權(quán)限減去權(quán)限掩碼后,,即可產(chǎn)生建立文件時預(yù)設(shè)權(quán)限。超級用戶默認(rèn)掩碼值為0022,,普通用戶默認(rèn)為0002,。

  2.5 file指令

  file

  功能說明:辨識文件類型。

  語法:file [選項] 文件或目錄…

  常用選項:

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

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

  微信截圖_20221118173205.png

  3. 目錄權(quán)限

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

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

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

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

  x

  r

  w

  4. 粘滯位

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

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

  微信截圖_20221118173237.png

  結(jié)論:

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

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

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

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

  粘滯位

  語法:chmod +t 目錄名

  功能:給目錄加上粘滯位

  注意:

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

  示例:

  微信截圖_20221118173304.png

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

  5. 總結(jié)

  目錄的可執(zhí)行權(quán)限是表示你可否在目錄下執(zhí)行命令。

  如果目錄沒有-x權(quán)限,,則無法對目錄執(zhí)行任何命令,,甚至無法cd 進(jìn)入目, 即使目錄仍然有-r 讀權(quán)限(這個地方很容易犯錯,認(rèn)為有讀權(quán)限就可以進(jìn)入目錄讀取目錄下的文件)

  而如果目錄具有-x權(quán)限,,但沒有-r權(quán)限,,則用戶可以執(zhí)行命令,可以cd進(jìn)入目錄,。但由于沒有目錄的讀權(quán)限

  所以在目錄下,,即使可以執(zhí)行l(wèi)s命令,,但仍然沒有權(quán)限讀出目錄下的文檔,。

 

微信圖片_20210517164139.jpg

微信圖片_20220701092006.jpg

電子技術(shù)應(yīng)用專欄作家一口Linux

原文鏈接:https://mp.weixin.qq.com/s/SSC83ut0TfPiF0o5sBcUxQ

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]