Shell
Linux是一種開源的、基于Unix的操作系統,它因其靈活性、穩定性和高性能而廣泛應用于服務器、嵌入式系統、超級計算機、桌面計算等領域。
Linux內核(Linux Kernel)是操作系統的核心,負責與硬件直接交互,為用戶空間(應用程序和服務)提供資源管理和系統服務的接口。
Linux內核(Linux Kernel)的主要職責:
?硬件抽象:將底層硬件資源(如CPU、內存、硬盤等)抽象成更易于使用的接口。
?資源管理:負責分配和管理CPU時間、內存空間、文件系統和其他資源。
?系統調用接口:提供一組API,供用戶程序通過系統調用訪問硬件或操作系統功能。
?設備驅動:管理各種硬件設備(如鍵盤、顯示器、網絡卡等)。
一般來說,我們用戶是沒有辦法直接跟Linux內核(Linux Kernel)交互的,而是通過Shell來間接與Linux內核(Linux Kernel)交互的。
Shell是用戶與內核之間的交互界面,是一種命令解釋器(外殼程序)。它==將用戶輸入的命令翻譯為內核可以理解的系統調用==,進而控制操作系統的行為。
主要作用:
?命令解析:解釋并執行用戶輸入的命令(如文件操作、程序運行等)。
?腳本支持:可以運行編寫好的 Shell 腳本,實現任務自動化。
?提供用戶環境:允許用戶執行程序、管理文件和配置系統。
類比于Windows操作系統,Windows GUI就是相當于Linux中的Shell,我們操作Windows并不是直接操作其內核,而是通過圖形接口來完成各種操作。
用戶權限
在Linux系統中,root用戶和普通用戶是兩類不同權限級別的用戶,分別承擔著系統管理和普通操作的角色。
?root用戶:Linux系統中的超級管理員,擁有系統中所有資源的最高權限,可以執行任何操作。
?普通用戶:系統中權限受限的用戶,主要用于日常操作。
root用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。
切換用戶
1. 從普通用戶切換到root用戶:
? 使用 su 命令:
su
輸入 root 密碼后切換。
注意,這里的切換直接是從當前目錄切換到普通用戶。
可以看到,root用戶時的目錄是LinuxCode,而切換到普通用戶后目錄依然是LinuxCode。
2. 從root用戶切換到普通用戶:
? 退出 root 用戶:
exit
? 指定切換到某個普通用戶:
su username
3.su -指令
su -指令在切換用戶時就相當于重新登錄,不會在原有的目錄下切換。
? root 用戶的默認目錄:
/root
? 普通用戶的默認目錄:
/home/username
sudo
普通用戶的權限是比較小的,可以執行的操作也較少,但有的時候是需要普通用戶執行越權操作的,這個時候就要使用到sudo指令。
sudo(Superuser DO)是Linux和Unix系統中用于以root用戶或其他特權用戶身份執行命令的工具。它允許普通用戶在不直接登錄root用戶的情況下臨時提升權限,從而減少誤操作的風險并提高系統安全性。
正常來說,普通用戶想要使用sudo還需要將該普通用戶加入到白名單中,具體的配置文件在/etc/sudoers,我們可以用 vim 打開然后將普通用戶加入白名單。
vim /etc/sudoers
(演示環境為Ubuntu 20.04.6)
使用示例:
sudo apt update
系統會提示輸入當前用戶的密碼(而不是root用戶的密碼),然后以root權限執行命令。
文件與目錄權限
訪問者
Linux中的每個文件和目錄的訪問者主要由以下三部分組成:
1.用戶(Owner):文件或目錄的擁有者。
2.用戶組(Group):一組用戶,可以共享文件或目錄的權限。
3.其他人(Others):除了文件擁有者和用戶組之外的其他用戶。
權限表示
Linux使用rwx模式表示權限:
1.r(read):讀取權限。
? 對文件:可以查看內容。
? 對目錄:可以列出目錄內容。
2.w(write):寫入權限。
? 對文件:可以修改內容。
? 對目錄:可以創建、刪除或重命名目錄內的文件。
3.x(execute):執行權限。
? 對文件:可以作為程序運行。
? 對目錄:可以進入該目錄。
每個文件的權限用 10 個字符表示,例如:
-rwxr-xr--
第一個字符:文件類型
?-表示普通文件
?d表示目錄
?l表示符號鏈接
?b表示塊設備文件(例如硬盤、光驅等)
?p表示管道文件
?c表示字符設備文件(例如屏幕等串口設備)
?s表示套接口文件
接下來的 9 個字符:分為三組(用戶、用戶組、其他人)。
? 用戶(Owner):rwx表示可讀、可寫、可執行
? 用戶組(Group):r-x表示可讀、不可寫、可執行
? 其他人(Others):r--表示可讀、不可寫、不可執行
文件的權限還可以使用八進制和二進制表示:
權限 | 八進制 | 二進制 |
rwx | 7 | 111 |
rw- | 6 | 110 |
r-w | 5 | 101 |
r– | 4 | 100 |
-wr | 3 | 011 |
-w- | 2 | 010 |
–x | 1 | 001 |
— | 0 | 000 |
使用ls -l(ll) 指令來查看文件和目錄的權限:
ls -l
輸出示例:
-rw-r--r-- 1user group 1234Dec 110:00file.txt
?-rw-r--r--:權限位。
?user:文件擁有者。
?group:文件所屬的用戶組。
修改權限
1.chmod命令:用于修改文件或目錄的權限。
? 符號模式:
chmod u+x file.txt # 給擁有者增加執行權限 chmod g-w file.txt # 去掉用戶組的寫權限 chmod o+r file.txt # 給其他用戶增加讀取權限 chmod o=r filename # 設置其他用戶的權限為只讀(覆蓋其他權限)
? 數字模式(每種權限對應一個數字):
?r= 4
?w= 2
?x= 1
? 無權限 = 0
? 權限組合:rwx= 7,rw-= 6,r--= 4 等。
chmod754file.txt # 設置權限為 rwxr-xr--
?-R遞歸修改權限:
//對目錄及其子目錄和文件修改權限 chmod -R755/path/to/directory
2.chown命令 和chgrp:修改文件的擁有者和用戶組。
chown user file.txt # 更改文件擁有者 chgrp group file.txt # 更改文件用戶組 chown user:group file.txt # 更改文件擁有者和用戶組
?-R遞歸修改:
chown -R user:group /path/to/directory
umask
umask(User File Creation Mode Mask)是一個用于設置文件和目錄的默認權限的命令或配置。它定義了新創建的文件或目錄的權限屏蔽位,從而控制默認權限的初始值。
1.文件和目錄的默認權限
? 在Linux中,新創建的文件和目錄的權限基于以下默認值:
?文件:666(可讀寫,無執行權限)。
?目錄:777(可讀寫執行)。
? 然而,這些默認權限會被umask所屏蔽,最終權限是:
最終權限 = 默認權限 - umask
2.umask的表示形式
umask 的值通常有4位,但第一位的 0 表示特殊權限,不用理會,所以可將其視為3位八進制數字,每一位分別表示權限屏蔽:
?第一位:用戶(Owner)。
?第二位:用戶組(Group)。
?第三位:其他人(Others)。
屏蔽規則:
? 4:屏蔽讀取權限(r)。
? 2:屏蔽寫入權限(w)。
? 1:屏蔽執行權限(x)。
? 0:不屏蔽任何權限。
比如,umask的值為 0002,表示對其他人的寫入權限(w)進行屏蔽;0033表示對用戶組和其他人的寫入權限(w)和執行權限(x)進行屏蔽。
3.查看和設置 umask
查看當前 umask 值:
umask
設置umask:
umask0xxx //將umask碼設置成0xxx
目錄權限
在Linux系統中,目錄權限(Directory Permissions)決定了用戶對目錄的訪問和操作能力。目錄的權限與文件的權限類似,但其具體作用略有不同,因為目錄主要用于組織文件,而不是直接存儲內容。
讀權限(r,read)
? 允許查看目錄下的文件和子目錄列表。
? ==沒有執行權限==時,無法進入目錄,即使有讀權限也無法查看目錄內容。
寫權限(w,write)
? 允許在目錄內進行寫操作,包括:
? 創建新文件或目錄。
? 刪除或重命名文件/子目錄。
? ==需要執行權限配合==才能生效。
執行權限(x,execute)
? 允許進入目錄。
? 沒有讀權限時,可以進入目錄但無法列出內容。
粘滯位
粘滯位(Sticky Bit)是 Linux 和 Unix 系統中的一種特殊權限,主要用于目錄權限管理。它==確保目錄內的文件只能由文件的所有者或具有管理員權限的用戶刪除或修改==,即使目錄本身的寫權限對其他用戶開放。
1.粘滯位的作用
在常規權限設置下,==如果一個用戶對目錄有寫權限,就可以刪除或修改該目錄中的任何文件,而不管這些文件是否屬于自己==。粘滯位的作用是限制這種行為,提供更精細的權限控制:
? 只有文件的所有者、目錄的所有者或超級用戶(root)才能刪除或修改文件。
? 其他用戶即使對目錄有寫權限,也不能刪除或修改非自己創建的文件。
2.粘滯位的典型使用場景
? 公共目錄:
? 如/tmp目錄,所有用戶都可以在其中創建文件,但不能隨意刪除其他用戶的文件。
? /tmp 的權限通常設置為:
drwxrwxrwt # 注意最后的 t 表示啟用了粘滯位
? 協作環境:
? 共享目錄中,不同用戶可以創建自己的文件,但不能影響其他用戶的文件。
3.查看和設置粘滯位
使用ls -ld命令可以查看目錄的權限狀態:
ls -ld directory_name
示例輸出:
? 最后一位的t表示該目錄啟用了粘滯位。
?rwxrwxr-是基本權限(用戶、組、其他用戶)。
使用chmod命令可以設置或移除粘滯位。
//添加粘滯位 chmod +t directory chmod1775directory //粘滯位對應的八進制值是 1000 //移除粘滯位 chmod -t directory chmod0775directory
-
嵌入式系統
+關注
關注
41文章
3664瀏覽量
130872 -
Linux
+關注
關注
87文章
11456瀏覽量
212739 -
操作系統
+關注
關注
37文章
7077瀏覽量
124922 -
Shell
+關注
關注
1文章
371瀏覽量
23952
原文標題:【Linux系統】權力與優雅:Linux 權限的隱秘詩篇
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論