您好,登錄后才能下訂單哦!
今天小編給大家分享一下linux的外殼是什么及怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
在linux中,外殼是指“shell”,即存在于操作系統之上的“命令行解釋器”,是指一個面向用戶的命令接口,表現形式就是一個可以由用戶錄入的界面,這個界面也可以反饋運行信息。shell的作用:1、將用戶的命令翻譯給核心(kernel)處理;2、將核心(kernel)處理結果翻譯給用戶。
Linux的外殼程序稱作shell(命令行解釋器),是指一個面向用戶的命令接口,表現形式就是一個可以由用戶錄入的界面,這個界面也可以反饋運行信息
shell的作用是:
將命令翻譯給kernal
將kernl處理結果翻譯給用戶
?一般我們使用的shell為bash。
在解釋命令的時候,bash不會直接參與解釋,而是創建新進程進行命令的解釋,bash只用等待結果即可,這樣能保證bash進程的安全。
1.出現原因
在使用linux時,我們都說linux相較于windows,linux沒有圖形化界面,是用命令行進行操作。但是命令行的方式也并非是對計算機的直接操作。
我們知道計算機的底層其實就是由0和1組成,每個命令的傳達最終都會轉變為0,1信號傳輸給計算機讓計算機運行相應的指令。但如果讓大眾都用這種方式操作計算機,無疑會非常的困難。
2.作用
linux操作系統作為一個核心(kernel),用戶不能直接對其進行操作。而是通過shell來與計算機溝通。“shell”的英文釋義有“外殼”的意思,即存在于操作系統之上的“命令行解釋器”,用于將用戶的命令翻譯給核心(kernel)處理,核心(kernel)再將處理結果翻譯給用戶
shell其實就可以看做是用戶與操作系統之間的一位翻譯員,用戶與操作系統語言不通無法直接進行溝通,而是通過shell進行翻譯后進行對話
3.windows與linux的shell
在使用windows時,用戶無法直接操作windows的內核,而是通過點擊shell形成的圖形化界面進行相關操作
在linux中,shell則是對我們的指令進行解析,將解析指令傳給linux內核,反饋結果再通過內核運行出結果,將結果通過shell解析給用戶
4.存在意義
通過shell,用戶可以用更加簡便的方式使用操作系統,學習成本也會大大下降。
shell的另一個存在意義就是為了保護操作系統。通過對用戶非法或無效指令的攔截,避免操作系統進行無用或有害的操作。比如我們在linux下輸入一串亂碼,shell就會將該命令攔截并返回
5.運行模式
shell在執行命令時,會通過派生子進程的方式執行用戶的指令,而shell本身一般并不會執行對應的指令。
可以將shell本身看做一個翻譯派遣公司的總裁,用戶有翻譯需求時就向shell發出請求,而shell作為一個派遣公司總裁,一般不會親自上門服務,而是派遣手下的其他翻譯人員去服務,以應對繁多復雜的需求。這些外派的翻譯人員就是一個個子進程。
1.linux權限的概念
權限就是操作系統中對用戶的約束
在linux下,用戶分為兩種。一種是超級用戶,即root。另一種是普通用戶。
1.超級用戶(root)
root用戶有且僅有一個。同時,root用戶擁有對該操作系統的最高權限。
可以認為,root用戶在操作系統就像是古代國家的皇帝,不受任何法律條文的約束。在root用戶下,執行任何命令都不會受到權限的限制。下可訪問其他普通用戶的文件并對其進行修改、刪除。上可執行刪除操作系統的根目錄,數據庫等會對操作系統造成嚴重損害乃至崩潰的操作
因此,root賬戶的密碼一定要設置的復雜并保存好。
root用戶的命令提示符是“#”
2.普通用戶
普通用戶可以存在多個。普通用戶會受到權限的約束。這些權限約束來自于系統和root用戶。
普通用戶的命令提示符是“$”
在linux下,可以使用“su”命令切換用戶
在這里,你要登錄誰的賬戶就要輸入該賬戶的密碼。因此,每個賬戶的密碼都盡量要設置成不一樣的
要退出該賬戶的話,輸入exit或者使用快捷鍵“ctrl d”即可
注意:在普通用戶下“su”,需要輸入對應用戶的密碼。但是,在root用戶下“su”,無需輸入對應用戶密碼
如果我們是普通用戶,但此時我們需要執行的一條指令需要root權限,而我們又不想切換用戶去執行,此時就可以使用“sudo”命令。該命令可以短暫的提升普通用戶的權限。
注意:在輸入密碼時,是輸入本用戶的密碼,而不是root用戶的密碼
但此時我們會出現以下報錯:
這就是因為該普通用戶并不是root的信任用戶,在root的對應文件中并不存在該普通用戶,導致無法進行“sudo”命令
2.linux權限管理
在linux中,權限由“人”和“事物屬性”組成。人指的是進行操作的用戶,事物屬性則是指文件的屬性
在linux中,文件的訪問者分為三類:擁有者(onwer)、所屬組(group)、其他人(other)。與root用戶和普通用戶是一個具體的人不同,文件訪問者中的三類是一個比較抽象的概念,可以看做是一種角色。即其他用戶在該文件下的身份。例如,一個普通用戶在自己的目錄的文件看來可能是所有者和所屬組,但在其他用戶的文件看來就可能是其他人
1.所屬組存在原因
有人可能會疑惑,文件的擁有者和其他人都好理解,擁有者就是文件的創建者,other就是除了創建者之外的用戶,那文件的所屬組有什么意義呢?
假如現在我們有團隊A和團隊B在同一臺linux機器上開發產品,此時,團隊A的成員實現了一個模塊,團隊領導想查看該模塊內容。如果linux中存在owner和other,因為owner是我們自己,那么領導要查看代碼時,我們就需要將other的權限放開。但另一個團隊也被該文件視為other,放開other就意味著不僅領導能看,另一個團隊也能看你的代碼,就容易造成代碼泄漏。為了避免這種情況,就需要所屬組。我們只需要將領導添加為該文件的所屬組并放開所屬組的權限即可,這樣就可以在無需開放other權限的情況下向領導開放代碼
現在我們有以上一個test.c文件,可以看到,在這個文件文件名前存在一大串的屬性。在之前,我們最多知道“Oct 25 16:43”是上次修改時間,100是該文件按字節計算的該文件磁盤占用。但是前面的屬性我們就不認識了。
1.文件訪問者
上文中我們也提到了文件訪問者的分類,其實在上圖中的第一個root就代表所有者,第二個root則是指所屬組。而other則并沒有顯示,因為除了這兩個用戶以外的用戶就屬于other,不必顯示
2.文件類型
我們都知道,在linux中,文件的后綴是無意義的。因為linux不會通過文件后綴區分文件類型。但這不意味著linux中沒有文件類型。linux的文件類型通過“ll”顯示的屬性列中第一列中的第一個字符來區分。而在上圖中可以看到,在test和test.c的第一個字符分別是“d”和“-”的字符。而這兩個字符其實就是文件的類型。
1)linux中的常見文件類型
-: 普通文件
主要包括源代碼、庫文件、可執行程序、文檔壓縮包等
d:目錄文件
c:字符設備文件
主要為硬件,例如鍵盤、顯示器等
b:塊設備文件
例如磁盤
l:鏈接文件
以windows為例,桌面上的快捷方式其實就是一種鏈接文件。快捷方式鏈接著對應軟件的啟動程序。在linux下,我們執行“ln -s a.out test”命令:
此時就為a.out文件創建了一個鏈接文件test,而該文件的開頭其實就是“l”,代表著鏈接文件
如果我們要執行a.out文件,就可以使用test:
p:管道文件
管道文件涉及到進程間通信,這里就不詳講,現在只需要知道有這種文件存在即可
3.文件權限
可以看到,在這里除了第一個字符是文件類型外,還剩下了9個字符。同時我們知道文件訪問者分為三類,而這9個字符中每三個字符就代表著一種訪問者的訪問權限。
(1)文件權限分類
文件權限分為三類即“r”、“w”、“x”。
“r”代表著讀,即閱讀該文件。“w”代表著寫,即修改該文件內容。'“x”代表著執行,即執行對應文件
每個文件的訪問者權限都由這三個權限組成。以“rwx”的方式排序。如果對應的權限上為“-”,即未擁有該權限
如上圖中的權限“rwx -xr r-x”,就表示所有者有讀寫執行權限;所屬組有讀寫權限,沒有執行權限;訪問者有讀和執行權限,沒有寫權限。這里加空格只是為了方便區分,實際顯示不會有空格
(2)權限修改
1.逐個修改
linux中的權限也是支持修改的,修改時要使用“chomd”命令。例如,我們要將下圖中的執行者權限修改為“-wx”,就可以執行“chomd u-r test”:
這種形式下,“u”代表擁有者,“-”代表去掉對應權限。而“g”代表所屬組,“o”代表其他人。如果想修改其他訪問者權限,對應的修改“u”即可。如果想加上某種權限,則可以將“-”變更為“+”。
當然,增刪權限時也可以用多訪問者多權限的形式,如“chmod u-rwx,g-rwx test”:
如果想修改所有訪問者的權限,也可以將“u、g、o”修改為“a”帶上對應權限,這里就不演示了。
2.修改文件所有者及所屬組
修改文件所有者,需要有對應的權限,否則則需要使用“sudo”提權。修改文件所有者的命令為“chown 對應用戶 文件名”:
如果要修改所屬組,就使用“chgrp”命令,使用方法和“chown”相同,這里就不演示了
如果要同時修改擁有者和所屬組,就使用“chown 用戶名:用戶名 文件名”命令,使用方法也是一樣的:
此處使用的是root用戶,使用無需sudo,普通用戶則需要sudo。
對于other,無需修改,因為除了擁有者和所屬組以外的用戶就是other
3.權限同時修改
我們說過,在計算機中,所以的命令都是0,1信號的方式傳遞的。
權限存在有和無兩種狀態,也是由0,1組成的。“rwx”就可以看做是“111”,“---”則可以看做是“000”。而這些二進制如果轉換為八進制,則是“7”和“0”。由此,權限的八進制范圍可以看為是“[0, 7]”。在八進制中,“r”表示4,“w”表示2,“x”表示1
由此,在修改權限時,我們除了用“u-”這類形式去修改外,還可以以八進制的形式修改。即“chmod 三個訪問者的八進制數字組合 文件名”。如“chmod 777 test”:
這種修改方式,在需要修改多個訪問者權限時,就比第一種逐個修改要便捷
注意:這種方式如果不寫全,如寫“7”、“35”這種形式,系統是從后往前,即從other->group->owner的方向修改,因為此時其他權限默認為0不顯示。如下圖:
其實新建目錄的起始權限是777,新建文件夾的起始權限是666。但是我們實際看到的卻不是這樣的。原因就在于創建文件或目錄時會受到umask(權限掩碼)的影響。
umask值,即權限掩碼中存在的權限,系統會自動配置好。在生成文件或目錄時,都要去掉權限掩碼中的權限。
要查看umask值,直接輸入“umask”命令即可:
這里的第一個0我們不用管,在第一個0后面的就是每個訪問者要去掉的權限。即在系統的默認中,每個新建的文件或目錄的所有者無需去掉權限,所屬組需要去掉2,即寫權限;其他人需要去掉2,即寫權限
在文件的起始權限666中去掉022,目錄的起始權限777中去掉022就是上圖中的權限。
要注意,普通用戶和root用戶的umask值是不同的。普通用戶的umask值為002,root用戶則是022
umask值雖然可以由系統默認生成,但是也可以手動進行修改。
修改方式是“umask 0對應權限”。如“umask 0444”:
可以看到,修改umask值后,新建的文件的默認權限中的對應權限就被去掉了
注意:umask值不是用初始權限去減權限值,而是去掉對應的權限。例如文件的初始權限時666,此時我們將umask值修改為0111。如果用減法就會變成555,即“r-xr-xr-x”。但實際上應該是去掉1對應的“x”權限,即依然是“666”權限,即“rw-rw-rw-”:
有人可能會疑惑,為什么目錄的起始權限時777,而文件的起始權限時666。原因就在于要進入一個目錄,需要的是執行權限,即“x”權限:
如果是在root用戶下執行上述操作,則可以進入無“x”權限的目錄,因為root用戶不受權限約束
以上就是“linux的外殼是什么及怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。