一. Shell命令及原理
Linux操作系統狹義上是Linux內核,廣義上是指Linux內核+Linux外殼(Shell)和對應的配套程序
Linux外殼:Linux 外殼是用戶與內核之間的接口,用戶通過外殼與操作系統進行交互和操作。在 Linux 系統中,用戶可以選擇不同的外殼,比如常見的 Bash、Zsh 等。
配套程序: 工具程序和應用程序,用于完成各種任務,比如文件管理、網絡通信、系統配置等。這些配套程序一起構成了一個完整的操作系統。
什么是Shell???
Shell是命令行解釋器是外殼程序,作用有兩個1)將用戶的命令解析并傳給Linux內核?2)Linux內核將命令執行完后,Shell將接執行結果返還給用戶 windows下的外殼程序就是圖形化界面
Shell如何執行的?(后面會詳細講)
-
用戶輸入命令: 用戶在 Shell 提供的命令行界面中輸入命令,比如
ls
(列出目錄內容)、cd
(切換目錄)等。 -
解析命令: Shell 解析用戶輸入的命令,并根據命令的語法和結構進行解析,確定命令的名稱、參數和選項等信息。
-
查找命令: Shell 在系統的路徑(PATH)中查找用戶輸入的命令對應的可執行文件。系統會按照 PATH 中的順序依次查找,找到后就可以執行該命令。
-
創建子進程: 如果找到了要執行的命令,Shell 會創建一個子進程來執行該命令。這樣可以保持 Shell 進程和要執行的命令進程的獨立性,互不干擾。
-
加載程序: 子進程加載命令對應的可執行文件到內存中,準備執行。
-
執行程序: 子進程開始執行加載到內存中的程序,按照用戶輸入的命令參數和選項進行相應的操作。
-
等待命令執行完成: Shell 父進程會等待子進程執行完畢,并獲取子進程的執行結果,然后顯示給用戶。
-
返回結果: 最終,Shell 將命令執行的結果輸出到屏幕上供用戶查看。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Shell是外殼總稱,不同的系統有不同的shell,Centos7的Shell是bash,windows下的就是圖形化界面
說完了關于Shell的原理那為什么要有Shell呢?
用戶在用Linux操作系統時,是不會直接對操作系統進行使用,就是通過Shell,因為操作系統是非常復雜的東西,一般人不經過深度學習是無法直接使用操作系統,所以就有了Shell外殼程序,降低了技術門檻,簡化了成本
二. 權限
2.1: 權限的概念
root:超級用戶(基本不受權限的約束)
普通用戶:我們新建的用戶(受權限約束)
(Linux中所有的用戶都要有密碼,無論是root還是其他,即便是多個普通用戶,也要設置密碼,建議設置不同密碼)
adduser:創建新用戶
在root用戶下,使用 useradd
命令創建新用戶:在終端中輸入以下命令,用 useradd
命令創建新用戶。比如,創建一個名為 newuser
的新用戶:
useradd newuser? ? ?
設置新用戶的密碼:使用 passwd
命令為新用戶設置密碼,輸入以下命令并按照提示設置密碼:
passwd newuser
?(可選)設置新用戶的家目錄和其他屬性:如果需要設置新用戶的家目錄、Shell 類型等其他屬性,可以使用 useradd
命令的參數來指定。比如,設置新用戶的家目錄為:/home/newuser? ? ? ? ? ? ? ? ? ? ??
usermod -aG sudo newuser
?sudo command:對一條指令進行暫時提權,以root的身份運行(目前我們用adduser新建的用戶沒有頒發執行sudo,系統不信任你,除非未來將普通用戶添加到系統的信任列表里)
2.2Linux權限管理
2.2.00. Linux下有兩種用戶:超級用戶(root)、普通用戶。
-
su +用戶名
:使用su +用戶名
的方式進行切換用戶時,并不會改變當前環境變量,即當前用戶的環境變量(如 PATH、HOME 等)會繼續保留。這樣可能導致一些權限或者路徑等方面的問題,因為切換后的用戶環境變量并未加載。 -
su - +用戶名
:使用su - +用戶名
的方式進行切換用戶時,會以切換后的用戶的身份完全登錄到一個新的 shell 會話中,同時加載新用戶的環境變量,包括 HOME 目錄、PATH 等。這樣可以確保切換后的操作環境和權限與目標用戶一致,避免出現一些意想不到的問題
2.2.01.文件訪問者的分類(人)


dev
組,將所有開發人員添加到該組中,以便他們可以訪問和修改需要開發的文件和目錄。舉個例子a,b,c三個人。a寫了一份代碼不想讓c看到,但想讓b看到,a就可以把b拉進自己的所屬組,打開所屬組的權限,關閉 oher 的權限就可以了。
2.2.03.文件權限值的表示方法
Linux表示 | 說明 | Linux表示 | 說明 |
r-- | 只讀 | -w- | 只寫 |
--x | 僅可執行 | rw- | 可讀可寫 |
-wx | 可寫可執行 | r-x | 可讀可執行 |
rwx | 讀寫執行 | - - - | 無權限 |
權限符號(讀寫執行) | 八進制 | 二進制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
- - - | 0 | 000 |
2.2.04.文件訪問權限的相關設置方法
chmod u+w /home/abc.txt
chmod o-x /home/abc.txt
chmod 664 /home/abc.txt
b)chown
[root@localhost ~] chmod +t /home/ # 加上粘滯位
[root@localhost ~] ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~] su - litao
[litao@localhost ~] rm /home/abc.c #litao不能刪除別人的文件
rm:是否刪除有寫保護的普通空文件 "/home/abc.c"?y
rm: 無法刪除"/home/abc.c": 不允許的操作