在linux系統中,shell命令及其運行原理是用戶與操作系統交互的關鍵機制。以下是關于shell命令以及其運行原理的詳細介紹:
Shell命令及其運行原理
什么是Shell?
linux嚴格意義上說是一個操作系統內核(kernel),但用戶不能直接與內核進行交互。用戶通過稱為Shell的“外殼”程序與內核溝通。Shell可以理解為命令行解釋器(Command Interpreter),它負責將用戶的命令翻譯給內核處理,并將內核的處理結果翻譯給用戶。
為什么不能直接使用內核?
內核是操作系統的核心部分,直接管理硬件資源和提供基本服務。如果用戶直接操作內核,可能會導致系統崩潰或安全漏洞。Shell作為中間層,提供了安全且用戶友好的交互方式。
Shell的功能
Shell的主要功能包括:
- 命令解析:將用戶輸入的命令解析并轉換為內核可以理解的指令。
- 結果反饋:將內核處理后的結果解析并展示給用戶。
與windows的GUI(圖形用戶界面)類似,用戶通過點擊圖形界面進行操作,而在Linux中,用戶通過Shell輸入命令進行操作。
簡而言之,Shell是用戶與內核交互的媒介,類似于通過編程語言與計算機進行交互。
Linux權限概念
權限分類
- 超級用戶(root):可以隨意操作系統,制定規則但不受規則約束。
- 普通用戶:必須遵守使用規則,某些命令需要超級用戶權限,例如使用yum命令安裝軟件。普通用戶可以申請相應權限。
- 每個用戶的密碼:每個用戶都應有獨特的密碼,避免重復。
用戶切換和權限管理
在Linux中,權限管理涉及文件訪問者的分類:
- 擁有者 > 所屬組 > 其他用戶
- 普通用戶屬于“其他用戶”類別,而擁有者和所屬組是同一陣營。
所屬組的作用
在工作中,通常以小組為單位提高效率。小組成員需要對系統進行操作,但不應被視為“其他人”。因此,所屬組的權限介于擁有者和其他用戶之間,防止其他小組的抄襲,同時允許小組成員訪問內容。這種權限分類有利于公司內部的競爭和秩序維護。
文件類型和訪問權限
在Linux中,文件后綴沒有實際意義,但某些操作需要特定后綴。例如,zip和unzip命令只能識別.zip文件。編譯后的文件(如a.out)可以隨意重命名并執行。
文件權限值的表示方法
-
字符表示法:
-
八進制表示法:
每種角色的權限占3位,可以用0和1表示,最大權限為111,即7。
選擇哪種表示方法取決于用戶的習慣和喜好。
文件訪問權限的相關設置方法
-
chmod:用于修改文件權限。
格式:
- 字符表示法
- 三位八進制數字
-
chown:用于更改文件擁有者。
-
chgrp:用于更改文件所屬組。
文件掩碼(umask)
功能:
- 查看或修改文件掩碼。
- 新建文件默認權限為0666,新建目錄默認權限為0777。
- 實際創建的文件和目錄權限受到umask的影響,計算公式為:mask & (~umask)。
格式:
- umask 權限值
說明:
- 將現有權限減去權限掩碼后,產生建立文件時的默認權限。
- 超級用戶默認掩碼值為0022,普通用戶默認為0002。
目錄權限
如果用戶擁有目錄的寫權限,可以刪除目錄下的文件。但如果其他人也有寫權限,是否意味著他們也可以刪除新建的文件?
為了解決這個問題,Linux引入了粘滯位(sticky bit)。
驗證
[root@localhost ~]# chmod 0777 /home/ [root@localhost ~]# ls /home/ -ld drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/ [root@localhost ~]# touch /home/root.c [root@localhost ~]# ls -l /home/ 總用量 4 -rw-r--r--. 1 root root 0 9月 19 15:58 abc.c drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao -rw-r--r--. 1 root root 0 9月 19 15:59 root.c [root@localhost ~]# su - litao [litao@localhost ~]$ rm /home/root.c #litao可以刪除root創建的文件 rm:是否刪除有寫保護的普通空文件 "/home/root.c"?y [litao@localhost ~]$ exit logout
目錄權限總結
通過以上內容,我們了解了Shell命令的運行原理和Linux權限管理的基本概念。