1.shell
1.1什么是shell?
shell即外殼,是運行在linux系統上的一個腳本語言,包裹在linux內核的外面。我們常說的linux操作系統實際上是linux內核。我們使用的所有指令都是一個個程序,而shell指令就是一個將我們用戶的操作翻譯給linux內核的程序。總的來說,shell就像是一個翻譯官,將用戶的意圖轉換加工并傳遞給內核,內核做出反應后傳遞給shell,shell再轉換加工并傳遞給用戶。
總結:shell就是我們用戶和操作系統之間進行交互的媒介(命令行解釋器)。
1.2 shell的作用
為什么不讓用戶直接在linux內核上操作呢?
要知道,操作系統是最接近計算機硬件的軟件,控制分配著計算機的各種硬件資源以及作業。如果直接暴露給用戶使用,那么我們的計算機將會變得非常危險,用戶一個不小心可能就會讓整個機器崩潰。另外,操作系統向上提供的這些接口較為復雜難懂,在用戶角度上來說是非常不友好的(大部分用戶都不是程序員)。所以,我們需要將這些操作系統的接口“包裝”起來,一來是可以更好的保護計算機,二來是為用戶操作提供容易理解并使用的“工具”。
?2.linux權限
2.1權限的概念
在我們的日常生活中會接觸到許許多多需要權限才能執行的事情,比如我們要看某個需要會員才能看的電影,通過“會員”,app可以篩選出誰能看這個電影,誰不能看這個電影。其實會員的概念跟權限一致,其實質都是在規定---什么樣的角色能干什么事。 而在linux操作系統中,“角色”包括普通用戶和root超級用戶。
root用戶和普通用戶的區別
超級用戶:可以再linux系統下做任何事情,不受限制
普通用戶:在linux下做有限的事情。
超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$“
2.2su指令
su用來切換當前的用戶身份??
語法 su [用戶名]?
常用格式?
指令格式 | 含義 |
---|---|
su? | 輸入root密碼后切換到root用戶但是pwd目錄不變 |
su - | 輸入root密碼后切換到root用戶但是pwd目錄/root |
su root | 輸入root密碼后切換到root用戶但是pwd目錄不變 |
su - root | 輸入root密碼后切換到root用戶但是pwd目錄/root |
su 某用戶名 | 輸入這個用戶的密碼后切換到該用戶但是pwd目錄不變 |
su - 某用戶名 | 輸入這個用戶的密碼后切換到該用戶但是pwd目錄在 /該用戶 |
舉例:
su root 指令演示
su - root指令演示
總結
su指令可實現普通用戶和root(超級管理員)之間的交換,值得注意的是,su默認只是切換身份,并沒有切換環境變量,環境變量依然是普通用戶的。切換用戶身份時,用戶的環境變量也切換成新用戶的環境變量,所以"-"不能省略,不然有些操作無法執行。這也是為什么su root之后所處的當前路徑不會更新,而su - root之后所處的當前路徑會回到/root下。
?2.3linux權限管理
?對linux而言,一切皆文件,Linux的權限管理其實大多也就是在管理文件。文件=文件內容+屬性,屬性又包括這個文件的路徑、最近修改時間、文件擁有者、文件所屬組等信息。即使我們創建一個空文件(沒有內容),這個文件的大小也不為0,因為還需要空間存儲屬性信息。
用ls 查看文件屬性?
?紅框框里面的就是文件屬性
2.3.1文件屬性
對于以下文件屬性
解析各個字段?
?2.3.2文件的擁有者、所屬組的概念
在Linux系統中,每個文件和目錄都有一個所有者(owner)和一個所屬組(group)。這兩個概念是用來控制對文件和目錄的訪問權限的。
擁有者
我們知道linux系統是多用戶操作系統,每個文件都有它的 擁有者,只有文件的擁有者才具有修改文件屬性的權力,當一個文件被創建時,會默認當前用戶為文件的擁有者。當然,root用戶可以隨意修改,即使該文件的擁有者并不是root.
所屬組
所屬組定義了文件或目錄的關聯組。所有屬于同一組的用戶都具有該組對文件或目錄的一些權限。這允許多個用戶在同一組中共享訪問權限。
注意
權限分為三個主要類別:所有者權限、所屬組權限和其他用戶權限。那為什么沒有標明其他用戶是誰呢?在linux文件屬性中,如果一個用戶既不是該文件的擁有者也不是所屬組,那么對于這個文件而言,這個用戶就是其他用戶,也只能使用其它用戶的權限。
2.4文件類型以及權限
?在這個字段中,一共有10個字符,第一個字符表示文件的類型,后面九個字符以三個為一組,分別表示這個文件的擁有者、所屬組、其它用戶的權限。
文件類型
d:文件夾
-:普通文件
l:軟鏈接(類似Windows的快捷方式)
b:塊設備文件(例如硬盤、光驅等)
p:管道文件
c:字符設備文件(例如屏幕等串口設備)
s:套接口文件?
?
?
?文件的權限
文件和目錄的權限由三組權限分別表示,分別是所有者權限、所屬組權限和其他用戶權限。每組權限都包含讀(read)、寫(write)和執行(execute)權限。r表示讀權限,w表示寫權限,x表示執行權限。如果沒有對應的權限,用“-”表示。(順序是固定的)
可用八進制表示每一組的權限
r的權值為4,二進制表示為100
w的權值為2,二進制表示為010
x的權值為1,二進制表示為001
其中權限的組合用每種權限的權值相加得到,例如7(八進制)用二進制表示為111(100+010+001=111),轉換為權限的含義就是,可讀可寫可執行。
如果某個文件總的權限用八進制表示為700,從左往右,分別表示,擁有者的權值為7,所屬組和其他的權值為0。
?例如:
r - - 表示可讀、不可寫、不可執行
r w - 表示可讀、可寫、不可執行
- - -? 表示不可讀、不可寫、不可執行
?分析以下部分文件屬性
-rw-rw-r-- 1 tsx tsx 0 Nov 30 18:53 file2.txt
通過這個文件屬性信息我們可以知道,file2.txt是一個普通文件,擁有者和所屬組都是tsx,擁有者和所屬組的權限都是是 可以讀取文件的內容,可以向該文件寫入信息,不可執行。而對于其他用戶來說,就只有讀的權限。
演示
假設cat 某個該用戶沒有讀權限的文件
?注意
對于一個文件夾來說,讀、寫、執行的權限含義與普通文件相比有所不同。
1、讀權限:表示用戶可以列出目錄中的文件和子目錄。對于一個目錄來說,如果該用戶沒有讀權限,即使可以列出該目錄的子目錄和文件,也無法查看其文件的內容?。
2、寫權限:表示用戶可以在目錄中創建、刪除和重命名文件或子目錄。對于一個目錄來說,如果該用戶沒有寫權限,可以列出該目錄的子目錄和文件。如果沒有寫權限,即使其子目錄或文件的權限是可寫的,也不能刪除或者修改等操作。
3、執行權限:對于目錄,執行權限表示用戶可以進入該目錄。如果用戶沒有執行權限,即使目錄是可讀的,也無法進入其中。也就意味著,用cd 指令進入某個沒有x(執行)權限的目錄會失敗。
2.5修改文件的權限
在linux操作系統中,我們可以使用一些指令來修改?文件的權限屬性,也可以修改文件的擁有者和所屬組。
2.5.1chmod指令
chmod是用來修改文件或者目錄權限的指令,它允許用戶為文件或目錄的所有者、所屬組和其他用戶分別設置讀、寫和執行權限。
常用選項:
-R -> 遞歸修改目錄文件的權限
說明:只有文件的擁有者和root才可以改變文件的權限?????????
?chmod命令權限值的格式
chmod 用戶表示符+/- /= 權限字符 文件名
用戶表示符
u:擁有者
g:擁有者同組用
o:其它用戶
a:所有用戶?
+、-、=符號
+:向權限范圍增加權限代號所表示的權限
-:向權限范圍取消權限代號所表示的權限
=:向權限范圍賦予權限代號所表示的權限?
將擁有者的權限減去一個r權限
考慮以下指令
chmod u-r 111
我們可以看到用chmod u-權限符 可以刪除某個文件擁有者的讀權限,那怎么加回來呢?
將擁有者的權限增加上一個r權限
考慮以下指令
chmod u+r 111
?
將某個目錄下的文件或者子目錄的所有用戶都刪除寫權限
考慮以下指令
?chmod -R a-w 111
?其實修改用戶的權限非常的簡單,指令格式也非常的容易理解。另外,我們也可以用對應的八進制來代替權限符。比如chmod 000 某個文件:
2.6思考
我們發現,創建的目錄或者是文件在被創建之后都會有默認的權限,這些默認權限的賦予規則是什么呢?
文件的默認權限
在Linux系統中,新創建的文件和目錄都會有默認權限。這些默認權限是由系統的 umask(用戶文件創建掩碼)值控制的。Umask決定了在創建新文件或目錄時從文件權限中去除的權限位。
2.6.1什么是umask?
umask
(用戶文件創建掩碼)是一個在Unix和類Unix系統中的概念,用于控制新文件和目錄的默認權限。它是一種權限掩碼,用來確定在創建新文件或目錄時從權限中要移除的位。
我們可以用umask直接查看umask值(八進制)
umask
2.6.2默認權限規則?
?Umask的值是從文件權限中減去的權限。我們知道文件的三個身份權限可以用三個八進制位表示,而默認創建的文件會將滿權限(一個身份的滿權限的權值是7,三個就是777)的八進制位分別減去對應的umask位(相同的八進制位).例如,如果umask的值為0002,那么在創建新文件時會去除其它用戶的寫權限(2)。
?
以umask值為0002為例(跟002一樣)
第一位八進制默認為 7-0=7,對應著擁有者的權限為111(二進制),也就是rwx
第二位八進制默認為 7-0=7,對應著所屬組的權限為111(二進制),也就是rwx
第三位八進制默認為 7-2=5,對應著擁有者的權限為101(二進制),也就是r-x
所以根據以上默認權限的規則,umask為0002時,創建的目錄或者文件的權限默認都是775
2.6.3 修改umask
我們可以用umask+ 合適的八進制值來修改umask
考慮以下指令集
umask 000
mkdir 555
根據前面的默認權限規則得到得到默認權限的過程
第一位八進制默認為 7-0=7,對應著擁有者的權限為111(二進制),也就是rwx
第二位八進制默認為 7-0=7,對應著所屬組的權限為111(二進制),也就是rwx
第三位八進制默認為 7-0=0,對應著擁有者的權限為111(二進制),也就是rwx
2.7修改文件的擁有者和所屬組
2.7.1修改文件的擁有者
chown指令
chown命令可以將某個文件的擁有者修改為另一個存在的用戶。只有超級用戶(root)才有權限使用
chown
命令。
考慮以下指令
chown root 111
2.7.2修改文件的所屬組
chgrp指令
chgrp命令
用于更改文件或目錄所屬組的命令。只有超級用戶(root)才有權限使用chgrp
命令。
考慮以下指令
chgrp root 222
2.8.總結
文件的權限總是圍繞著什么樣的角色能干什么樣的事,了解并熟悉權限操作管理有助于保護我們的文件信息也有助于團隊之間的信息溝通。就像我們人一樣,我們應當明確自己是什么角色、能干什么樣的事,恪守本分,遵紀守法,這樣社會才會有秩序,這樣我們才能安穩的生活。
?