色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來(lái)到小浪云!


【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章


1、計(jì)算機(jī)系統(tǒng)中的權(quán)限

【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章

1.1、什么是權(quán)限

概念:

在計(jì)算機(jī)系統(tǒng)中,權(quán)限是指用戶或進(jìn)程對(duì)系統(tǒng)資源(如文件、目錄、設(shè)備、網(wǎng)絡(luò)等)可以執(zhí)行的操作的授權(quán)。權(quán)限的設(shè)計(jì)目的是為了保障系統(tǒng)的安全性,防止未經(jīng)授權(quán)的訪問(wèn)或操作。

權(quán)限的關(guān)鍵要素:

1、資源

權(quán)限總是針對(duì)某個(gè)具體資源,如:

文件或目錄數(shù)據(jù)庫(kù)記錄網(wǎng)絡(luò)端口系統(tǒng)配置

2、操作類(lèi)型

不同資源支持不同的操作類(lèi)型。如:

對(duì)文件:讀(Read)、寫(xiě)(Write)、執(zhí)行(Execute) 對(duì)數(shù)據(jù)庫(kù):查詢、插入、更新、刪除 對(duì)網(wǎng)絡(luò):連接、發(fā)送、接收

3、 主體

權(quán)限控制需要明確操作的主體,主體可以是:

用戶(User)用戶組(Group)進(jìn)程(Process)角色(Role)

簡(jiǎn)單來(lái)說(shuō),權(quán)限就是能或者不能去做一件事


1.2、為什么要有權(quán)限

權(quán)限設(shè)計(jì)的核心目的是保護(hù)系統(tǒng)資源,確保只有授權(quán)的用戶或進(jìn)程可以訪問(wèn)或修改特定的文件、程序或數(shù)據(jù)!

具體來(lái)說(shuō)有以下原因:

提升系統(tǒng)安全性:限制未授權(quán)用戶訪問(wèn)敏感數(shù)據(jù)或系統(tǒng)資源,防止數(shù)據(jù)泄露和惡意操作。精細(xì)化訪問(wèn)控制:根據(jù)用戶角色分配權(quán)限,確保最小權(quán)限原則,避免誤操作和資源浪費(fèi)。保障資源完整性:防止重要文件和數(shù)據(jù)被修改或破壞。支持多用戶環(huán)境:確保用戶之間的資源隔離,保護(hù)個(gè)人數(shù)據(jù)和協(xié)作權(quán)限。遵守合規(guī)要求:滿足行業(yè)法規(guī)和數(shù)據(jù)保護(hù)要求,提供審計(jì)追蹤功能。提升系統(tǒng)可維護(hù)性:通過(guò)角色和用戶組簡(jiǎn)化權(quán)限管理,提高系統(tǒng)擴(kuò)展性。減少潛在漏洞:通過(guò)嚴(yán)格的權(quán)限控制,降低系統(tǒng)漏洞帶來(lái)的風(fēng)險(xiǎn)。1.3、不同操作系統(tǒng)下的權(quán)限

不同操作系統(tǒng)下的權(quán)限設(shè)計(jì)方式有所不同,以下是主要操作系統(tǒng)的權(quán)限管理概述:


1.3.1、 Linux/unix

文件權(quán)限:

每個(gè)文件和目錄都有三種基本權(quán)限:讀(r)、寫(xiě)(w)、執(zhí)行(x),這些權(quán)限分別對(duì)文件的擁有者、所屬用戶組和其他用戶有效。 每個(gè)文件和目錄有三個(gè)權(quán)限組:

用戶(Owner):文件的擁有者權(quán)限。組(Group):與文件所有者同一組的用戶權(quán)限。其他(Others):其他用戶的權(quán)限。

文件權(quán)限表示:

通過(guò) ls -l顯示的文件權(quán)限(例如:-rwxr-xr-x)。

SELinux和AppArmor:

增強(qiáng)訪問(wèn)控制機(jī)制,通過(guò)給資源分配安全上下文來(lái)細(xì)化權(quán)限,提供更細(xì)粒度的安全控制。

ACL(access Control Lists):

提供比基本文件權(quán)限更細(xì)粒度的權(quán)限控制,允許為不同的用戶或組單獨(dú)設(shè)置不同的訪問(wèn)權(quán)限。

命令行管理:

使用 chmod、chown 和 chgrp等命令來(lái)設(shè)置文件或目錄的權(quán)限。

根用戶(root):

root 用戶在類(lèi) Unix 系統(tǒng)中擁有完全的控制權(quán)限,不受權(quán)限控制,可以執(zhí)行所有操作。


1.3.2、 Windows

NTFS 權(quán)限:

Windows 使用 NTFS 文件系統(tǒng)來(lái)管理文件和文件夾權(quán)限,權(quán)限包括讀取(Read)、寫(xiě)入(Write)、執(zhí)行(Execute)、修改(Modify)等。

用戶和組:

Windows 使用用戶賬戶和用戶組來(lái)管理權(quán)限,可以將權(quán)限分配給單個(gè)用戶或用戶組。

-訪問(wèn)控制列表(ACL):

文件和文件夾的訪問(wèn)控制通過(guò) ACL 設(shè)置,ACL 記錄哪些用戶或組具有哪些權(quán)限。

繼承權(quán)限:

在 Windows 中,文件夾的權(quán)限通常可以被其子文件繼承,這樣可以簡(jiǎn)化大規(guī)模權(quán)限管理。

用戶賬戶控制(UAC):

UAC 允許系統(tǒng)管理權(quán)限的請(qǐng)求,防止未授權(quán)應(yīng)用程序或惡意軟件獲得系統(tǒng)管理員權(quán)限。


1.3.3、 macos

UNIX 權(quán)限:

macos 基于 Unix,使用類(lèi)似于 Linux 的文件權(quán)限(讀、寫(xiě)、執(zhí)行)來(lái)管理文件。

用戶和組:

macOS 使用用戶和組進(jìn)行權(quán)限分配,每個(gè)文件都可以有不同的所有者和所屬用戶組。

系統(tǒng)完整性保護(hù)(SIP):

macOS 引入了 SIP 來(lái)保護(hù)系統(tǒng)關(guān)鍵文件和目錄,防止被修改。

ACL:

macOS 也支持訪問(wèn)控制列表,提供更細(xì)粒度的權(quán)限控制。


1.3.4、 ios

iOS 是基于 Unix(Darwin)的操作系統(tǒng),具有嚴(yán)格的權(quán)限管理機(jī)制,確保應(yīng)用沙盒隔離,并保護(hù)用戶數(shù)據(jù)和設(shè)備的安全:

應(yīng)用沙盒:

每個(gè)應(yīng)用在 iOS 中都被隔離在自己的沙盒中,無(wú)法直接訪問(wèn)其他應(yīng)用或系統(tǒng)文件。即使是同一應(yīng)用的不同部分,也只能在有限的沙盒內(nèi)運(yùn)行。

權(quán)限請(qǐng)求:

iOS 使用類(lèi)似 android 的權(quán)限請(qǐng)求機(jī)制,應(yīng)用在使用攝像頭、麥克風(fēng)、位置、照片庫(kù)等敏感信息時(shí),需要請(qǐng)求用戶授權(quán)。

App Store 審核:

iOS 應(yīng)用必須經(jīng)過(guò)嚴(yán)格的 App Store 審核,審核過(guò)程中會(huì)檢查應(yīng)用是否遵循 iOS 的權(quán)限管理規(guī)則。

System Integrity Protection (SIP):

類(lèi)似于 macOS,iOS 也擁有系統(tǒng)完整性保護(hù)機(jī)制,防止惡意應(yīng)用或代碼篡改系統(tǒng)文件。


1.3.5、 Android

Android 是基于 Linux 內(nèi)核的 ,因此它的權(quán)限管理方式也繼承Linux 的一些特性,但在移動(dòng)環(huán)境下做了很多調(diào)整:

應(yīng)用權(quán)限:

Android 應(yīng)用有一套權(quán)限管理系統(tǒng),應(yīng)用安裝時(shí)會(huì)請(qǐng)求用戶授權(quán)所需的權(quán)限,如訪問(wèn)攝像頭、位置、存儲(chǔ)等。

權(quán)限模型:

Android 使用基于角色的權(quán)限模型,系統(tǒng)級(jí)權(quán)限由 Android系統(tǒng)預(yù)定義,應(yīng)用程序則需要顯式聲明權(quán)限,用戶可以選擇是否授予這些權(quán)限。

運(yùn)行時(shí)權(quán)限:

Android6.0(Marshmallow)及更高版本引入了運(yùn)行時(shí)權(quán)限模型。用戶可以在應(yīng)用運(yùn)行時(shí)授予或撤銷(xiāo)特定權(quán)限,而不僅僅是在安裝時(shí)授權(quán)。

SELinux:

Android 也采用了 SELinux 強(qiáng)制訪問(wèn)控制機(jī)制,以提高安全性,確保應(yīng)用和進(jìn)程不能越權(quán)訪問(wèn)系統(tǒng)資源。

小結(jié):

操作系統(tǒng)

權(quán)限管理模型

特點(diǎn)

Linux/Unix

基于文件權(quán)限模型(r, w, x)和用戶、組、其他權(quán)限控制;使用命令行管理工具(chmod, chown, chgrp);支持 SELinux 和 AppArmor

類(lèi) Unix 系統(tǒng),支持精細(xì)權(quán)限控制,適用于服務(wù)器和開(kāi)發(fā)環(huán)境,強(qiáng)制訪問(wèn)控制(MAC)

Windows

基于用戶和組的權(quán)限管理,訪問(wèn)控制列表(ACL)控制文件權(quán)限,NTFS 文件系統(tǒng)

權(quán)限管理通過(guò)圖形界面和命令行工具(如 icacls)進(jìn)行,較為簡(jiǎn)單直觀,廣泛用于桌面環(huán)境

macOS

基于 Unix 系統(tǒng)(Darwin);文件權(quán)限管理與 Linux 相似,支持 ACL 和 System Integrity Protection(SIP)

通過(guò)沙盒機(jī)制、SIP 和 Gatekeeper 提供安全保護(hù),限制惡意軟件和非授權(quán)訪問(wèn),應(yīng)用需通過(guò)嚴(yán)格審核

Android

基于 Linux 內(nèi)核,但加入了應(yīng)用沙盒和運(yùn)行時(shí)權(quán)限管理;使用 SELinux 提高安全性

動(dòng)態(tài)權(quán)限請(qǐng)求,注重移動(dòng)設(shè)備安全,應(yīng)用被沙盒化,用戶控制權(quán)限的授予

iOS

基于 Unix 系統(tǒng)(Darwin);應(yīng)用沙盒機(jī)制,嚴(yán)格的權(quán)限控制;系統(tǒng)完整性保護(hù)(SIP)和審查機(jī)制

強(qiáng)化安全性,通過(guò)沙盒機(jī)制隔離應(yīng)用,嚴(yán)格的權(quán)限管理和審查機(jī)制,防止惡意行為和泄漏敏感數(shù)據(jù)

類(lèi) Unix 系統(tǒng)(Linux 和 Unix):基于文件和目錄權(quán)限,廣泛使用命令行工具來(lái)進(jìn)行權(quán)限控制,支持更多高級(jí)的安全機(jī)制(如 SELinux)。Android 和 iOS:作為移動(dòng)操作系統(tǒng),它們?cè)趥鹘y(tǒng)的文件權(quán)限控制基礎(chǔ)上增加了應(yīng)用沙盒和動(dòng)態(tài)權(quán)限管理,以提高安全性,避免應(yīng)用之間的相互干擾。Windows:使用 ACL 和 NTFS 權(quán)限模型,主要依賴于用戶和組管理,注重易用性,適合桌面操作系統(tǒng)的需求。macOS:與 Linux 相似的 Unix 權(quán)限模型,增強(qiáng)了系統(tǒng)完整性保護(hù)(SIP)和應(yīng)用沙盒,提供多層次的安全防護(hù)機(jī)制。

這些操作系統(tǒng)在權(quán)限管理上的主要差異在于它們的架構(gòu)設(shè)計(jì)和使用場(chǎng)景,移動(dòng)操作系統(tǒng)更注重用戶隱私和安全,而桌面系統(tǒng)則更多地依賴于文件系統(tǒng)和用戶賬戶管理。


2、Linux中的權(quán)限2.1、Linux下的兩種用戶2.1.1、普通用戶

定義:

普通用戶是指擁有有限權(quán)限的用戶。普通用戶無(wú)法執(zhí)行一些系統(tǒng)管理任務(wù),如修改系統(tǒng)配置文件或安裝軟件等。

權(quán)限:

普通用戶通常只能訪問(wèn)自己有權(quán)限的文件和資源,不能訪問(wèn)其他用戶的文件,除非擁有相應(yīng)的權(quán)限。

文件和目錄權(quán)限:

普通用戶通常只能對(duì)自己擁有的文件和目錄進(jìn)行讀寫(xiě)操作,對(duì)其他用戶的文件只能根據(jù)文件權(quán)限設(shè)置進(jìn)行操作。

命令執(zhí)行:

普通用戶只能執(zhí)行普通的命令或程序,不能執(zhí)行系統(tǒng)管理命令,除非獲得特殊權(quán)限(例如使用 sudo)。

常見(jiàn)用途:

普通用戶主要用于日常使用,比如瀏覽網(wǎng)頁(yè)、編輯文檔、運(yùn)行應(yīng)用程序等。

用戶管理:

在 Linux 中,每個(gè)普通用戶都有一個(gè)唯一的用戶 ID(UID)和一個(gè)與之關(guān)聯(lián)的用戶組。用戶可以屬于多個(gè)組,但每個(gè)文件和目錄都有一個(gè)與之關(guān)聯(lián)的所有者和所屬組。

普通用戶的命令行提示符:

代碼語(yǔ)言:JavaScript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

 [zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ 

2.1.2、超級(jí)用戶(root用戶)

定義:

超級(jí)用戶(也叫 root 用戶)是 Linux 系統(tǒng)中的管理員賬戶。root用戶擁有系統(tǒng)的完全控制權(quán)限,可以執(zhí)行所有操作,包括對(duì)系統(tǒng)進(jìn)行修改、安裝軟件、配置網(wǎng)絡(luò)等。

權(quán)限:

root 用戶具有幾乎無(wú)所不能的權(quán)限,能夠訪問(wèn)所有文件、修改系統(tǒng)設(shè)置、安裝和卸載程序、創(chuàng)建和刪除用戶等。root不受權(quán)限限制

文件和目錄權(quán)限:

root 用戶對(duì)所有文件和目錄都擁有讀寫(xiě)執(zhí)行權(quán)限,不受任何權(quán)限限制。

命令執(zhí)行:

root 用戶可以執(zhí)行所有系統(tǒng)級(jí)命令,包括管理系統(tǒng)、網(wǎng)絡(luò)、硬件和用戶等。

常見(jiàn)用途:

root 用戶主要用于系統(tǒng)管理、安裝軟件、配置系統(tǒng)、修復(fù)系統(tǒng)問(wèn)題等。普通用戶不能執(zhí)行的一些管理任務(wù),通常需要 root 用戶來(lái)執(zhí)行。

安全性:

由于 root 用戶具有極高的權(quán)限,濫用或誤用 root 權(quán)限可能會(huì)對(duì)系統(tǒng)造成嚴(yán)重破壞。因此,一般建議避免長(zhǎng)期以 root 用戶身份進(jìn)行工作,最好通過(guò) sudo 命令臨時(shí)獲得 root 權(quán)限來(lái)執(zhí)行需要的操作。2.1.3、用戶之間的切換

普通用戶切換為超級(jí)用戶:

使用su -命令:

輸入su – 命令后,系統(tǒng)會(huì)提示你輸入root用戶的密碼,密碼輸入正確后,將會(huì)切換為root用戶,并且默認(rèn)處在root用戶的家目錄。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ pwd/home/zwy[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ su -Password: Last login: Thu Jan 23 18:52:22 CST 2025 on pts/0[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# pwd/root

使用su命令:

輸入su 命令后,系統(tǒng)同樣會(huì)提示你輸入root用戶的密碼,密碼輸入正確后,將會(huì)切換為root用戶,并且會(huì)保留在切換身份前的目錄中。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ test]$ pwd/home/zwy/code/test[zwy@iZbp1dkpw5hx2lyh7vjopaZ test]$ suPassword: [root@iZbp1dkpw5hx2lyh7vjopaZ test]# pwd/home/zwy/code/test

超級(jí)用戶切換為其他普通用戶:

使用exit命令:

如果時(shí)使用 su或者su -命令從普通用戶切換為超級(jí)用戶,那么使用exit命令退出當(dāng)前的 root 會(huì)話,返回到之前的普通用戶會(huì)話。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ test]$ su -Password: Last login: Thu Jan 23 18:55:53 CST 2025 on pts/0[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# exitlogout[zwy@iZbp1dkpw5hx2lyh7vjopaZ test]$ 

使用su命令:

使用su uesrname命令即可切換到任意一個(gè)普通用戶,username代表要切換到的用戶名,由于root的權(quán)限為最高級(jí)別,所以無(wú)需密碼即可切換。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# su zwy[zwy@iZbp1dkpw5hx2lyh7vjopaZ root]$ pwd/root

切換后不會(huì)改變當(dāng)前路徑,仍然停留在切換為普通用戶前,root用戶所在的目錄


2.2、文件的權(quán)限2.2.1、文件類(lèi)型的劃分

普通文件(Regular File)

普通文件是最常見(jiàn)的文件類(lèi)型,通常包含文本、二進(jìn)制數(shù)據(jù)、圖像、音頻等內(nèi)容。普通文件不具備特殊的功能,它們僅存儲(chǔ)數(shù)據(jù)。表示符號(hào):-代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:/home/user/document.txt、/usr/bin/program

目錄文件(Directory File)

目錄文件用于存儲(chǔ)文件系統(tǒng)中的文件和其他目錄。它實(shí)際上是一個(gè)特殊的文件,用于存儲(chǔ)其他文件的名字和位置信息。目錄本身不包含數(shù)據(jù),而是充當(dāng)文件夾的角色。表示符號(hào):d代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:/home/user/、/etc/

符號(hào)鏈接文件(Symbolic Link File)

符號(hào)鏈接(也叫軟鏈接)是一個(gè)指向另一個(gè)文件或目錄的引用。符號(hào)鏈接實(shí)際上只是一個(gè)路徑,指向另一個(gè)文件或目錄。它允許用戶通過(guò)一個(gè)文件名訪問(wèn)另一個(gè)文件或目錄,而不需要知道實(shí)際文件的位置。表示符號(hào):l代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:/home/user/symlink(指向 /home/user/target_file)

字符設(shè)備文件(Character Device File)

字符設(shè)備文件是與字符設(shè)備(如終端、鍵盤(pán)、鼠標(biāo)等)相關(guān)的文件。這些設(shè)備通常按字符流的方式進(jìn)行輸入輸出。字符設(shè)備文件沒(méi)有緩存機(jī)制,每次輸入/輸出一個(gè)字符。表示符號(hào):c代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:/dev/tty1(終端設(shè)備),/dev/random(隨機(jī)設(shè)備)

塊設(shè)備文件(Block Device File)

塊設(shè)備文件是與塊設(shè)備(如硬盤(pán)、USB驅(qū)動(dòng)器、光盤(pán)等)相關(guān)的文件。塊設(shè)備將數(shù)據(jù)按塊(如 512字節(jié)或更大的塊)進(jìn)行存儲(chǔ)和傳輸。與字符設(shè)備不同,塊設(shè)備通常具有緩存機(jī)制,可以在多個(gè)塊上同時(shí)進(jìn)行讀寫(xiě)操作。表示符號(hào):b代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:/dev/sda(硬盤(pán)),/dev/sdb1(硬盤(pán)分區(qū))

命名管道文件(FIFO File)

FIFO(First In, FirstOut)文件也叫命名管道,是一種用于進(jìn)程間通信(IPC)的特殊文件。它允許一個(gè)進(jìn)程將數(shù)據(jù)寫(xiě)入管道,另一個(gè)進(jìn)程讀取這些數(shù)據(jù)。管道文件的作用是建立進(jìn)程之間的通信。表示符號(hào):p代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:/tmp/myfifo(管道文件)

套接字文件(Socket File)

套接字文件用于網(wǎng)絡(luò)通信或進(jìn)程間通信。它們提供了進(jìn)程間數(shù)據(jù)交換的通道,特別適用于客戶端-服務(wù)器通信。套接字通常用于建立網(wǎng)絡(luò)連接。表示符號(hào):s代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:/tmp/mysocket(套接字文件)

設(shè)備文件(Device File)

設(shè)備文件是 Linux 中與硬件設(shè)備的交互接口。它們分為字符設(shè)備和塊設(shè)備文件。設(shè)備文件一般位于 /dev 目錄下。字符設(shè)備文件(c):用于與字符設(shè)備(如終端、串口等)進(jìn)行交互。塊設(shè)備文件(b):用于與塊設(shè)備(如硬盤(pán)、USB 驅(qū)動(dòng)器等)進(jìn)行交互。

符號(hào)鏈接(Symbolic Link)

符號(hào)鏈接文件(軟鏈接)是 Linux 系統(tǒng)中的一種特殊文件,實(shí)際上它只是一個(gè)指向另一個(gè)文件的路徑引用。它允許用戶通過(guò)不同的路徑訪問(wèn)同一個(gè)文件或目錄。表示符號(hào):l代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

示例:ln -s /path/to/target /path/to/symlink

文件類(lèi)型查看

你可以使用 ls -l 命令查看文件的類(lèi)型。

輸出示例:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

-rw-r--r-- 1 user group 1048576 Jan 23 10:00 example.txt  # 普通文件drwxr-xr-x 2 user group 4096 Jan 23 10:00 myfolder     # 目錄文件lrwxrwxrwx 1 user group 10 Jan 23 10:00 symlink -> file.txt  # 符號(hào)鏈接crw-rw-rw- 1 root root 10, 1 Jan 23 10:00 /dev/tty1    # 字符設(shè)備文件brw-rw-rw- 1 root root 8, 0 Jan 23 10:00 /dev/sda     # 塊設(shè)備文件prw-r--r-- 1 user group 0 Jan 23 10:00 myfifo         # FIFO 文件srw-rw-rw- 1 user group 0 Jan 23 10:00 mysocket       # 套接字文件

文件類(lèi)型總結(jié)

文件類(lèi)型

表示符號(hào)

說(shuō)明

示例

普通文件

包含文本、圖像、程序等數(shù)據(jù)

/home/user/document.txt

目錄文件

d

存放其他文件或目錄

/home/user/

符號(hào)鏈接

l

指向其他文件的快捷方式

/home/user/symlink -> /home/user/target_file

字符設(shè)備文件

c

與字符設(shè)備(如終端、鼠標(biāo))交互的文件

/dev/tty1

塊設(shè)備文件

b

與硬盤(pán)等塊設(shè)備交互的文件

/dev/sda

FIFO 文件

p

用于進(jìn)程間通信的文件

/tmp/myfifo

套接字文件

s

用于進(jìn)程間或網(wǎng)絡(luò)通信的文件

/tmp/mysocket

設(shè)備文件

c、b

用于與硬件設(shè)備交互的文件,字符設(shè)備和塊設(shè)備

/dev/sda(塊設(shè)備),/dev/tty1(字符設(shè)備)

符號(hào)鏈接文件(軟鏈接)

l

文件系統(tǒng)中的快捷方式,指向其他文件或目錄

/home/user/symlink -> /home/user/target_file

2.2.2、文件權(quán)限的表示

文件訪問(wèn)用戶的分類(lèi):

文件的擁有者(User)與文件擁有者同組的用戶(Group)稱為所屬組其他用戶(Others)

文件訪問(wèn)的權(quán)限:

r:讀權(quán)限w:寫(xiě)權(quán)限x:執(zhí)行權(quán)限如果沒(méi)有某項(xiàng)權(quán)限,則該位置為 –

文件的權(quán)限=訪問(wèn)角色+目標(biāo)文件屬性

角色就是文件訪問(wèn)者的身份目標(biāo)屬性就是目標(biāo)文件本身的屬性

說(shuō)明:

文本文件本身不具備可執(zhí)行的屬性,那么即使文件訪問(wèn)者具備執(zhí)行該文件的權(quán)限,由于該文件本身不可執(zhí)行,最終文件的權(quán)限表示為不可執(zhí)行可執(zhí)行文件本身就具備可執(zhí)行的屬性,那么如果文件訪問(wèn)者具備執(zhí)行該文件的權(quán)限,那么文件的權(quán)限就表示為可執(zhí)行,如果文件訪問(wèn)者不具備執(zhí)行該文件的權(quán)限,那么文件的權(quán)限就表示為不可執(zhí)行

通俗的說(shuō),給你機(jī)會(huì)你也不中用啊,即便系統(tǒng)給你執(zhí)行該文件的權(quán)限,但是該文件本來(lái)就不具備可執(zhí)行屬性,那么最終文件的權(quán)限還是不可執(zhí)行

再次理解,文件的權(quán)限=訪問(wèn)角色+目標(biāo)文件屬性

例如:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ ls -ltotal 0-rw-r--r-- 1 root root 0 Jan 22 21:40 root.txt-rw-rw-r-- 1 zwy  zwy  0 Jan 22 21:56 zwy.txt

對(duì)如上文件權(quán)限分析:

【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章

根據(jù)上述分析:

root.txt: 該文件為普通文件,文件本身不具備可執(zhí)行的屬性,標(biāo)識(shí)符為-,擁有者為root,所屬組為root,擁有者的權(quán)限為rw-,可讀可寫(xiě)不可執(zhí)行,所屬組的權(quán)限為r–,只可讀不可寫(xiě)不可執(zhí)行,其他用戶other的權(quán)限為r–,只可讀不可寫(xiě)不可執(zhí)行zwy.txt: 該文件也為普通文件,文件本身不具備可執(zhí)行的屬性,標(biāo)識(shí)符為-,擁有者為zwy,所屬組為zwy,擁有者的權(quán)限為rw-,可讀可寫(xiě)不可執(zhí)行,所屬組的權(quán)限為rw-,可讀可寫(xiě)不可執(zhí)行,其他用戶other的權(quán)限為r–,只可讀不可寫(xiě)不可執(zhí)行

文件權(quán)限的八進(jìn)制表示:

【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章

每個(gè)用戶類(lèi)別的權(quán)限是獨(dú)立的,因此可以用二進(jìn)制的0或1來(lái)表示每個(gè)用戶的權(quán)限,0表示沒(méi)有該權(quán)限,1表示擁有該權(quán)限。則每3個(gè)二進(jìn)制位可以表示該用戶的權(quán)限,而3個(gè)二進(jìn)制位剛好可以表示一個(gè)八進(jìn)制數(shù),共3組八進(jìn)制數(shù)就構(gòu)成了文件權(quán)限的八進(jìn)制表示。

例如:

權(quán)限

擁有者(Owner)

所屬組(Group)

其他用戶(Others)

二進(jìn)制表示

八進(jìn)制表示

rwxr-xr-x

rwx (7)

r-x (5)

r-x (5)

111 101 101

755

rw-r–r–

rw- (6)

r– (4)

r– (4)

110 100 100

644

rwx——

rwx (7)

— (0)

— (0)

111 000 000

700

r–r–r–

r– (4)

r– (4)

r– (4)

100 100 100

444

rwxrwxrwx

rwx (7)

rwx (7)

rwx (7)

111 111 111

777

—rwx—

— (0)

rwx (7)

— (0)

000 111 000

070

r-x——

r-x (5)

— (0)

— (0)

101 000 000

500

rw——-

rw- (6)

— (0)

— (0)

110 000 000

600

r–r-xr–

r– (4)

r-x (5)

r– (4)

100 101 100

454


2.2.3、文件權(quán)限的修改

使用chmod指令修改文件的權(quán)限

操作符:

+:添加權(quán)限。-:移除權(quán)限。=:設(shè)置精確權(quán)限(覆蓋現(xiàn)有權(quán)限)。

用戶類(lèi)別:

u:擁有者(User)g:所屬組組(Group)o:其他用戶(Others)a:所有用戶(All,包含 u、g 和 o)

權(quán)限字符:

r:讀權(quán)限w:寫(xiě)權(quán)限x:執(zhí)行權(quán)限

命令格式:

chmod 用戶 操作符 權(quán)限 文件名

添加權(quán)限:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod u+x filename:#給文件的擁有者添加執(zhí)行權(quán)限。chmod g+r filename:#給文件的所屬組添加讀權(quán)限。chmod o+w filename:#給其他用戶添加寫(xiě)權(quán)限。

移除權(quán)限:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod u-x filename:#給文件的擁有者移除執(zhí)行權(quán)限。chmod g-w filename:#給文件的所屬組移除寫(xiě)權(quán)限。chmod o-r filename:#給文件其他用戶移除讀權(quán)限。

精確設(shè)置權(quán)限:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod u=rwx filename:#將文件的擁有者的權(quán)限設(shè)置為讀、寫(xiě)、執(zhí)行。chmod g=rx filename:#將文件的所屬組權(quán)限設(shè)置為讀和執(zhí)行。chmod o=r filename:#將文件其他用戶權(quán)限設(shè)置為只讀。

使用八進(jìn)制表示法修改文件的權(quán)限

八進(jìn)制模式使用一個(gè)三位二進(jìn)制數(shù)字來(lái)表示文件的權(quán)限。每一位數(shù)字表示不同類(lèi)別的權(quán)限,范圍從 0 到 7。

示例:

設(shè)置文件權(quán)限為 rwxr-xr-x(755)代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod 755 filename

說(shuō)明:所有者有讀、寫(xiě)、執(zhí)行權(quán)限(7),用戶組和其他用戶有讀和執(zhí)行權(quán)限(5)。

設(shè)置文件權(quán)限為 rw-r–r–(644)代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod 644 filename

說(shuō)明:所有者有讀和寫(xiě)權(quán)限(6),用戶組和其他用戶有只讀權(quán)限(4)。

設(shè)置文件權(quán)限為 rwx——(700)代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod 700 filename

說(shuō)明:所有者有讀、寫(xiě)、執(zhí)行權(quán)限(7),用戶組和其他用戶沒(méi)有任何權(quán)限(0)。

設(shè)置文件權(quán)限為 r–r–r–(444)代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod 444 filename

說(shuō)明:所有者、用戶組和其他用戶只有讀權(quán)限(4)。

設(shè)置文件權(quán)限為 rwxrwxrwx(777)代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod 777 filename

說(shuō)明:所有者、用戶組和其他用戶都有讀、寫(xiě)、執(zhí)行權(quán)限(7)。

設(shè)置文件權(quán)限為 r-xr-xr-x(555)代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod 555 filename

說(shuō)明:所有者、用戶組和其他用戶都有讀和執(zhí)行權(quán)限(5),沒(méi)有寫(xiě)權(quán)限。

遞歸修改權(quán)限

當(dāng)需要修改目錄及其所有子文件和子目錄的權(quán)限時(shí),可以使用 -R 選項(xiàng)來(lái)遞歸修改權(quán)限。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chmod -R 755 /path/to/Directory #指定目錄

這將會(huì)遞歸地將指定目錄及其所有內(nèi)容的權(quán)限設(shè)置為 rwxr-xr-x(755)

2.2.4、文件擁有者和所屬組的修改

在 Linux 系統(tǒng)中,文件的 擁有者(owner)和 所屬組(group)可以通過(guò)命令進(jìn)行修改。這對(duì)于文件的管理和權(quán)限控制非常重要。

chown 命令 chown(change owner)命令用于更改文件或目錄的擁有者和所屬組。

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chown [OPTIONS] USER:GROUP FILE

USER: 新的文件擁有者(用戶)。GROUP: 新的文件所屬組(組)。FILE: 目標(biāo)文件或目錄的路徑。

如果你只需要更改文件的 擁有者 或 所屬組,可以省略 GROUP 或 USER。

修改文件的擁有者:

要將文件 file.txt 的擁有者改為用戶 Sam,可以執(zhí)行以下命令:代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chown Sam file.txt

這會(huì)將 file.txt 的擁有者更改為 Sam,而文件的所屬組保持不變。

修改文件的所屬組:

要將文件 file.txt 的所屬組改為Bob,可以執(zhí)行以下命令:代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chown :Bob file.txt

或者使用chgrp命令:代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chown Bob file.txt

這會(huì)將 file.txt 的所屬組更改為Bob,而文件的擁有者保持不變。

同時(shí)修改文件的擁有者和所屬組: 要將文件 file.txt 的擁有者更改為Sam,同時(shí)將所屬組更改為 Bob,可以執(zhí)行以下命令:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chown Sam:Bob file.txt

或者也可以使用這種方式:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chown Sam.Bob file.txt

修改目錄及其內(nèi)部所有文件的擁有者和所屬組

如果你想遞歸地修改目錄及其下所有文件的擁有者和所屬組,可以使用 -R 選項(xiàng):代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

chown -R Sam:Bob /path/to/directory

這會(huì)將 /path/to/directory 目錄及其所有內(nèi)容(包括子目錄和文件)的擁有者更改為 Sam,所屬組更改為Bob。

修改文件的權(quán)限和擁有者時(shí)的注意事項(xiàng):

文件擁有者:只有超級(jí)用戶(root)才能修改文件的擁有者。如果你沒(méi)有足夠的權(quán)限,系統(tǒng)會(huì)提示權(quán)限錯(cuò)誤。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ test]$ chown zyy:zyy zwy.txtchown: changing ownership of ‘zwy.txt’: Operation not permitted

文件所屬組:普通用戶可以更改文件的所屬組,但需滿足兩個(gè)條件:用戶是文件的當(dāng)前所有者。用戶屬于目標(biāo)組。


2.2.5、文件權(quán)限的缺失

文件沒(méi)有讀取權(quán)限:

如果一個(gè)文件沒(méi)有讀取權(quán)限,用戶無(wú)法查看該文件的內(nèi)容。嘗試打開(kāi)文件時(shí),會(huì)返回權(quán)限拒絕錯(cuò)誤。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 16-rwxrwxrwx 1 zwy zwy 8360 Jan 25 16:13 code--w-rw-rw- 1 zwy zwy   75 Jan 25 20:57 code.c[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ cat code.ccat: code.c: Permission denied

這意味著用戶無(wú)法查看文件的內(nèi)容。

文件沒(méi)有寫(xiě)入權(quán)限:

如果一個(gè)文件沒(méi)有寫(xiě)入權(quán)限,用戶無(wú)法修改該文件。嘗試編輯或覆蓋文件時(shí),會(huì)收到權(quán)限拒絕的錯(cuò)誤。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 16-rwxrwxrwx 1 zwy zwy 8360 Jan 25 16:13 code----rw-rw- 1 zwy zwy   75 Jan 25 20:57 code.c[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ echo 'hello linux' >> code.c-bash: code.c: Permission denied

這意味著用戶無(wú)法對(duì)文件進(jìn)行修改或?qū)懭氩僮鳌?/p>

文件沒(méi)有執(zhí)行權(quán)限: 如果文件是腳本或二進(jìn)制文件,而沒(méi)有執(zhí)行權(quán)限,用戶無(wú)法運(yùn)行該文件作為程序。

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 16-rw-rwxrwx 1 zwy zwy 8360 Jan 25 16:13 code-rw-rw-rw- 1 zwy zwy   75 Jan 26 11:59 code.c[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ ./code-bash: ./code: Permission denied

這意味著用戶無(wú)法執(zhí)行該文件。

文件沒(méi)有修改權(quán)限:如果你嘗試修改文件權(quán)限(例如使用 chmod)但沒(méi)有足夠的權(quán)限,你可能會(huì)收到如下系統(tǒng)反饋:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 16-rw-rwxrwx 1 zwy  zwy  8360 Jan 25 16:13 code-rw-rw-rw- 1 zwy  zwy    75 Jan 26 11:59 code.c-rw-r--r-- 1 root root    0 Jan 26 12:03 root.txt[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ chmod o+w root.txtchmod: changing permissions of ‘root.txt’: Operation not permitted

以zwy用戶身份使用chmod指令修改root用戶的文件權(quán)限,顯然該操作不被系統(tǒng)允許,不具備足夠的權(quán)限


2.3、目錄的權(quán)限Linux下一切皆文件

目錄也是一種特殊的文件 。由于目錄權(quán)限的特殊性,我們將目錄單獨(dú)講解

【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章

大家覺(jué)得用戶能否進(jìn)入一個(gè)目錄,取決于目錄的哪個(gè)權(quán)限呢?答對(duì)了!取決于是否擁有該目錄的執(zhí)行權(quán)限

2.3.1、目錄的執(zhí)行權(quán)限含義: 允許用戶進(jìn)入(訪問(wèn))該目錄,執(zhí)行與該目錄相關(guān)的路徑操作。使用場(chǎng)景: 用戶需要有執(zhí)行權(quán)限才能通過(guò) cd 命令進(jìn)入該目錄,或訪問(wèn)該目錄的子目錄(即使該目錄不可讀)。如果沒(méi)有執(zhí)行權(quán)限,用戶不能進(jìn)入該目錄,即使有其他權(quán)限(如讀取權(quán)限)。沒(méi)有執(zhí)行權(quán)限時(shí): 如果目錄沒(méi)有執(zhí)行權(quán)限,用戶無(wú)法進(jìn)入該目錄,甚至無(wú)法通過(guò)路徑訪問(wèn)該目錄的任何文件或子目錄。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ lltotal 4drw-rwxr-x 2 zwy zwy 4096 Jan 26 12:03 code[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ cd code/-bash: cd: code/: Permission denied[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ ls -l code/ls: cannot access code/root.txt: Permission deniedls: cannot access code/code.c: Permission deniedls: cannot access code/code: Permission deniedtotal 0-????????? ? ? ? ?            ? code-????????? ? ? ? ?            ? code.c-????????? ? ? ? ?            ? root.txt

由此可以得出結(jié)論,如果沒(méi)有目錄的執(zhí)行權(quán)限,用戶無(wú)法通過(guò)cd命令進(jìn)入該目錄,也無(wú)法通過(guò)ls命令查看該目錄的任何內(nèi)容2.3.2、目錄的讀權(quán)限含義: 允許用戶列出目錄中的文件和子目錄。使用場(chǎng)景: 用戶可以使用 ls 命令查看目錄中的文件名和子目錄名稱,但無(wú)法查看文件的內(nèi)容。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ lltotal 4drwxrwxr-x 2 zwy zwy 4096 Jan 26 12:03 code[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ ls -l code/total 16-rw-rwxrwx 1 zwy  zwy  8360 Jan 25 16:13 code-rw-rw-rw- 1 zwy  zwy    75 Jan 26 11:59 code.c-rw-r--r-- 1 root root    0 Jan 26 12:03 root.txt

沒(méi)有讀取權(quán)限時(shí): 如果目錄沒(méi)有讀取權(quán)限,嘗試執(zhí)行 ls 命令會(huì)返回權(quán)限拒絕的錯(cuò)誤,即使你有進(jìn)入該目錄的權(quán)限,仍然無(wú)法列出其中的內(nèi)容。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ chmod u-r code[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ ls -l code/ls: cannot open directory code/: Permission denied[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ cd code/[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ ls -l ls: cannot open directory .: Permission denied

2.3.3、目錄的寫(xiě)權(quán)限含義: 允許用戶在該目錄內(nèi)創(chuàng)建、刪除和重命名文件或子目錄。使用場(chǎng)景: 用戶可以在該目錄中創(chuàng)建新的文件或子目錄,或者刪除目錄中的文件和子目錄。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

 [zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 16-rw-rwxrwx 1 zwy  zwy  8360 Jan 25 16:13 code-rw-rw-rw- 1 zwy  zwy    75 Jan 26 11:59 code.c-rw-r--r-- 1 root root    0 Jan 26 12:03 root.txt[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ touch log.txt[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ mv code.c code.cpp[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 16-rw-rwxrwx 1 zwy  zwy  8360 Jan 25 16:13 code-rw-rw-rw- 1 zwy  zwy    75 Jan 26 11:59 code.cpp-rw-rw-r-- 1 zwy  zwy     0 Jan 26 12:39 log.txt-rw-r--r-- 1 root root    0 Jan 26 12:03 root.txt

沒(méi)有寫(xiě)入權(quán)限時(shí): 如果目錄沒(méi)有寫(xiě)入權(quán)限,用戶無(wú)法在目錄內(nèi)進(jìn)行修改,如創(chuàng)建文件、刪除文件或重命名文件。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ chmod u-w code[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ cd code/[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ touch test.ctouch: cannot touch ‘test.c’: Permission denied[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ rm -f log.txtrm: cannot remove ‘log.txt’: Permission denied[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ mv code.cpp code.cmv: cannot move ‘code.cpp’ to ‘code.c’: Permission denied

2.4、缺省權(quán)限(默認(rèn)權(quán)限)文件:新文件的默認(rèn)權(quán)限通常是 666(rw-rw-rw-),即所有者、組用戶和其他用戶都具有讀寫(xiě)權(quán)限,但沒(méi)有執(zhí)行權(quán)限。目錄:新目錄的默認(rèn)權(quán)限通常是 777(rwxrwxrwx),即所有者、組用戶和其他用戶都可以讀、寫(xiě)和執(zhí)行,即可以進(jìn)入該目錄。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

 [zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ touch log.txt[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ mkdir test-dir[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 4-rw-rw-r-- 1 zwy zwy    0 Jan 26 21:14 log.txtdrwxrwxr-x 2 zwy zwy 4096 Jan 26 21:15 test-dir

但當(dāng)我們?cè)贚inux下實(shí)際操作時(shí)發(fā)現(xiàn):

創(chuàng)建新文件時(shí),默認(rèn)權(quán)限是664(rw-rw-r–),并不是666(rw-rw-rw-)創(chuàng)建新目錄時(shí),默認(rèn)權(quán)限是775(rwxrwxr-x),并不是777(rwxrwxrwx)

為什么會(huì)出現(xiàn)這種情況呢? 這是因?yàn)橛衭mask的存在

2.4.1、權(quán)限掩碼umask

【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章

什么是權(quán)限掩碼?

權(quán)限掩碼(umask) 是一個(gè)用于控制新創(chuàng)建文件和目錄權(quán)限的機(jī)制

它定義了系統(tǒng)在創(chuàng)建文件或目錄時(shí),應(yīng)該從默認(rèn)權(quán)限中去除哪些權(quán)限。umask值通過(guò)位掩碼的方式指定,影響文件和目錄的讀(r)、寫(xiě)(w)和執(zhí)行(x)權(quán)限。

默認(rèn)文件權(quán)限:666(rw-rw-rw-)默認(rèn)目錄權(quán)限:777(rwxrwxrwx)掩碼:umask會(huì)“減去”這些默認(rèn)權(quán)限的一部分,從而影響最終的權(quán)限。

為什么要有權(quán)限掩碼?

權(quán)限掩碼的目的是為了 增強(qiáng)安全性 和 控制權(quán)限,因?yàn)椴皇撬杏脩艋虺绦蚨紤?yīng)該對(duì)文件或目錄擁有相同的訪問(wèn)權(quán)限。

增強(qiáng)安全性:默認(rèn)情況下,文件創(chuàng)建時(shí)具有過(guò)多的權(quán)限可能會(huì)導(dǎo)致安全問(wèn)題。例如,如果一個(gè)文件對(duì)所有人都開(kāi)放寫(xiě)權(quán)限,任何用戶都可以修改它,這可能導(dǎo)致數(shù)據(jù)丟失或泄露。控制訪問(wèn):通過(guò)設(shè)置合適的umask值,管理員可以確保文件和目錄僅限于必要的用戶和組訪問(wèn)。比如,管理員可以避免其他用戶(不是文件的所有者或所屬組的用戶)擁有不必要的寫(xiě)權(quán)限。滿足特定需求:不同的環(huán)境和項(xiàng)目可能需要不同的權(quán)限控制。例如,一些敏感項(xiàng)目要求嚴(yán)格的訪問(wèn)權(quán)限,因此可以設(shè)置更嚴(yán)格的umask值。

怎么使用權(quán)限掩碼?

查看umask:

在命令行中輸入umask指令即可查看當(dāng)前用戶的umask設(shè)置代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ umask0002

或者在命令行中輸入umask -S查看當(dāng)前用戶的umask設(shè)置代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ ~]$ umask -Su=rwx,g=rwx,o=rx

更改umask:

如果你想設(shè)置新的umask值為0022,直接在命令行中輸入 umask 0022代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

 [zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ umask 0022[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ umask0022

注意:

這樣設(shè)置只是臨時(shí)的,umask只能在當(dāng)前狀態(tài)下有效,當(dāng)重啟Xshell時(shí)就會(huì)恢復(fù)。如果要永久更改umask,需要編輯 /etc/profile或用戶的 ~/.bash_profile 文件,添加或修改 umask 設(shè)置。如果你只想影響特定用戶,可以編輯他們的~/.bash_profile 或 ~/.bashrc 文件

四位umask的含義:

四位umask的格式為:0ABC

其中:

第1位(0):控制特殊權(quán)限位(setuid、setgid、sticky bit)。后3位(ABC):控制基本權(quán)限(所有者、組、其他用戶的權(quán)限掩碼)。

第一位數(shù)字用于屏蔽以下權(quán)限:

setuid(SUID):允許用戶以文件所有者的權(quán)限執(zhí)行程序。setgid(SGID):對(duì)目錄生效時(shí),新建文件會(huì)繼承目錄的組;對(duì)文件生效時(shí),以文件所屬組的權(quán)限執(zhí)行。sticky bit:常見(jiàn)于目錄(如/tmp),僅允許文件所有者刪除自己的文件。

八進(jìn)制值

二進(jìn)制值

被屏蔽的權(quán)限

說(shuō)明

0

000

無(wú)

允許設(shè)置所有特殊權(quán)限

1

001

Sticky Bit

屏蔽 Sticky Bit

2

010

SGID

屏蔽 SGID

3

011

SGID + Sticky Bit

同時(shí)屏蔽 SGID 和 Sticky Bit

4

100

SUID

屏蔽 SUID

5

101

SUID + Sticky Bit

同時(shí)屏蔽 SUID 和 Sticky Bit

6

110

SUID + SGID

同時(shí)屏蔽 SUID 和 SGID

7

111

SUID + SGID + Sticky Bit

屏蔽所有特殊權(quán)限

后三位與三位umask一致,通過(guò)掩碼屏蔽權(quán)限:

文件默認(rèn)權(quán)限:666 – umask(文件默認(rèn)無(wú)執(zhí)行權(quán)限)。目錄默認(rèn)權(quán)限:777 – umask(目錄默認(rèn)有執(zhí)行權(quán)限)。

八進(jìn)制值

二進(jìn)制值

屏蔽的權(quán)限(rwx)

0

000

不屏蔽任何權(quán)限

1

001

屏蔽執(zhí)行(x)

2

010

屏蔽寫(xiě)(w)

3

011

屏蔽寫(xiě)和執(zhí)行

4

100

屏蔽讀(r)

5

101

屏蔽讀和執(zhí)行

6

110

屏蔽讀和寫(xiě)

7

111

屏蔽所有權(quán)限

2.4.2、最終權(quán)限的確定

最終權(quán)限=缺省權(quán)限(默認(rèn)權(quán)限)&(~umask) 如何理解?

默認(rèn)權(quán)限:文件和目錄的初始最大權(quán)限(文件 666,目錄 777)。umask:需要屏蔽(禁用)的權(quán)限位,通過(guò) 按位取反(~) 后與默認(rèn)權(quán)限進(jìn)行 按位與(&) 操作。最終權(quán)限:實(shí)際生效的權(quán)限。

示例驗(yàn)證:

文件權(quán)限計(jì)算(默認(rèn) 666,umask 022)

默認(rèn)權(quán)限:666 → 二進(jìn)制 110 110 110umask:022 → 二進(jìn)制 000 010 010按位取反(~umask):111 101 101

按位與(&):

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

110 110 110  (666)& 111 101 101  (~022)--------------------110 100 100  → 八進(jìn)制 `644`(rw-r--r--)

目錄權(quán)限計(jì)算(默認(rèn) 777,umask 027)

默認(rèn)權(quán)限:777 → 二進(jìn)制 111 111 111umask:027 → 二進(jìn)制 000 010 111按位取反(~umask):111 101 000

按位與(&):

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

111 111 111  (777)& 111 101 000  (~027)--------------------111 101 000  → 八進(jìn)制 `750`(rwxr-x---)

為什么看起來(lái)可以等價(jià)為“減法”?

當(dāng) umask 的二進(jìn)制位是默認(rèn)權(quán)限的子集時(shí),按位與取反后的 umask 等價(jià)于 默認(rèn)權(quán)限減去 umask。

示例: 默認(rèn)權(quán)限 666(110 110 110),umask 022(000 010 010):

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

666 - 022 = 644 → 結(jié)果與按位與一致。

局限性:

如果 umask 的某一位權(quán)限值超過(guò)默認(rèn)權(quán)限的對(duì)應(yīng)位,減法會(huì)借位,但按位與不會(huì)(此時(shí)兩種方法結(jié)果不同)。(實(shí)際場(chǎng)景中,umask 通常不會(huì)設(shè)置超過(guò)默認(rèn)權(quán)限的位,因此減法仍適用。)

公式的普遍適用性:

適用所有情況:無(wú)論是三位還是四位 umask,均可用此公式計(jì)算最終權(quán)限。特殊權(quán)限位:四位 umask 的第一位(如 0022 中的 0)也遵循此規(guī)則代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

默認(rèn)權(quán)限(含特殊位):7777(SUID/SGID/Sticky Bit + rwxrwxrwx)umask 0777 → 屏蔽所有權(quán)限(包括特殊權(quán)限)。

方式

優(yōu)點(diǎn)

缺點(diǎn)

默認(rèn)權(quán)限 – umask

直觀,適合簡(jiǎn)單場(chǎng)景

不適用于 umask 位超過(guò)默認(rèn)權(quán)限的情況

默認(rèn)權(quán)限 & (~umask)

嚴(yán)格符合二進(jìn)制邏輯,普適所有場(chǎng)景

需要理解位運(yùn)算


2.5、權(quán)限粘滯位2.5.1、問(wèn)題導(dǎo)入

思考一個(gè)問(wèn)題:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

drwxrwxrwx   2 root root  4096 Jan 27 12:44 temp-backup

如果有多人協(xié)同辦公的需求,我們可以在在/下創(chuàng)建臨時(shí)目錄temp-backup來(lái)解決這樣的場(chǎng)景,所有人對(duì)該目錄都具有讀寫(xiě)和執(zhí)行的權(quán)限,我們知道,擁有目錄的寫(xiě)權(quán)限就可以在目錄內(nèi)新建或者刪除文件,那么如果不是我們的文件,可以刪除嗎?

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ temp-backup]$ lltotal 4-rw-r--r-- 1 root root 11 Jan 27 15:54 root.txt[zwy@iZbp1dkpw5hx2lyh7vjopaZ temp-backup]$ cat root.txthelloworld[zwy@iZbp1dkpw5hx2lyh7vjopaZ temp-backup]$ echo 'hellolinux' >> root.txtbash: root.txt: Permission denied[zwy@iZbp1dkpw5hx2lyh7vjopaZ temp-backup]$ rm -f root.txt[zwy@iZbp1dkpw5hx2lyh7vjopaZ temp-backup]$ lltotal 0

答案是可以的!

即便我不是文件的擁有者和所屬組,我只有文件的讀權(quán)限,但是我仍然可以刪除這屬于root用戶的文件,且不需要任何身份確認(rèn)!因?yàn)槲募芊癖粍h除取決于所在目錄的讀權(quán)限,而不取決于文件本身的權(quán)限

在這些共享目錄中,如果有人惡意刪除文件,那么即便不是他的文件他也有權(quán)力刪除,就會(huì)導(dǎo)致一些不可預(yù)料的錯(cuò)誤,針對(duì)這個(gè)問(wèn)題,Linux中對(duì)目錄增加了粘滯位的概念。

2.5.2、粘滯位的設(shè)置

在 Linux 和類(lèi) Unix 系統(tǒng)中,給目錄設(shè)置 粘滯位(Sticky Bit)是一種常見(jiàn)的做法,尤其是在共享目錄中。

粘滯位的作用是限制對(duì)目錄中文件的刪除權(quán)限,確保只有文件的所有者、目錄的所有者,或者超級(jí)用戶(root)才能刪除該目錄中的文件。

為什么需要設(shè)置粘滯位?

防止非所有者刪除文件:

在多用戶系統(tǒng)中,可能有多個(gè)用戶共享一個(gè)目錄。如果沒(méi)有設(shè)置粘滯位,任何用戶都可以刪除該目錄中的文件。為了避免誤刪除或惡意刪除其他用戶的文件,可以設(shè)置粘滯位。粘滯位限制了文件的刪除權(quán)限,只有文件的所有者(即該文件創(chuàng)建者)或超級(jí)用戶(root)才能刪除該文件,即使其他用戶對(duì)該目錄有寫(xiě)權(quán)限。

增強(qiáng)共享目錄的安全性:

如果有一個(gè)公共的共享目錄,多個(gè)用戶可以向其中添加文件。如果沒(méi)有粘滯位,那么用戶 A、B、C 都可以刪除目錄中其他用戶的文件。而如果設(shè)置了粘滯位,則只有文件的擁有者才能刪除自己的文件,其他用戶不能刪除。這樣可以避免共享目錄中的文件被無(wú)意中或惡意刪除。

常見(jiàn)應(yīng)用場(chǎng)景:

/tmp 目錄:這是一個(gè)常見(jiàn)的設(shè)置粘滯位的目錄。所有用戶都可以在 /tmp 目錄中創(chuàng)建臨時(shí)文件,但只有文件的所有者或 root用戶能夠刪除文件。這樣即使其他用戶也能在該目錄下創(chuàng)建文件,也無(wú)法刪除他人創(chuàng)建的文件。/var/tmp 目錄:類(lèi)似于 /tmp,也經(jīng)常會(huì)設(shè)置粘滯位來(lái)防止文件的刪除問(wèn)題。

粘滯位的查看:

使用 ls -l 命令查看目錄的權(quán)限,如果最后一個(gè)字符是 t,說(shuō)明目錄已啟用粘滯位:代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

drwxrwxrwt.   8 root root  4096 Jan 27 03:28 tmp

根目錄下的tmp目錄就是啟用粘滯位的目錄,用來(lái)存放臨時(shí)文件多人協(xié)作辦公

【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章

設(shè)置粘滯位:

設(shè)置粘滯位:使用 chmod 命令可以設(shè)置或取消粘滯位。設(shè)置粘滯位的命令如下: chmod +t /tmp 這樣就會(huì)為 /tmp 目錄啟用粘滯位。代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 4drwxrwxr-x 2 zwy zwy 4096 Jan 27 18:58 temp-backup[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ chmod +t temp-backup[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 4drwxrwxr-t 2 zwy zwy 4096 Jan 27 18:58 temp-backup

取消粘滯位:

如果你不再需要該目錄具有粘滯位,可以使用以下命令來(lái)取消:chmod -t /tmp代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 4drwxrwxr-t 2 zwy zwy 4096 Jan 27 18:58 temp-backup[zwy@iZbp1dkpw5hx2lyh7vjopaZ code]$ lltotal 4drwxrwxr-x 2 zwy zwy 4096 Jan 27 18:58 temp-backup

總結(jié):

公共目錄在沒(méi)有粘滯位的情況下,任何用戶都可以刪除目錄中的文件。設(shè)置粘滯位后,只有文件的所有者或 root用戶才能刪除目錄中的文件,即使其他用戶對(duì)目錄具有寫(xiě)權(quán)限。設(shè)置粘滯位是為了增強(qiáng)共享目錄的安全性,防止用戶誤刪或惡意刪除其他用戶的文件。它特別適用于公共目錄,如/tmp,通過(guò)限制刪除權(quán)限,保證系統(tǒng)的穩(wěn)定性和安全性。


3、Linux下的家目錄

在 Linux 系統(tǒng)中,每個(gè)用戶都有一個(gè) 家目錄(Home Directory),該目錄是用戶存儲(chǔ)個(gè)人文件、配置文件和其他數(shù)據(jù)的地方。家目錄通常位于 /home 目錄下,每個(gè)用戶都會(huì)有一個(gè)與其用戶名相同的子目錄。例如,用戶 LA的家目錄通常是 /home/LA

3.1、家目錄的基本知識(shí)

家目錄的基本概念: 家目錄是一個(gè)為每個(gè)用戶分配的獨(dú)立空間,包含該用戶的文件、設(shè)置、配置文件等。家目錄為用戶提供一個(gè)隔離的環(huán)境,使得他們可以自由地管理自己的文件,而不影響其他用戶的文件。

家目錄的默認(rèn)位置: 默認(rèn)情況下,Linux 系統(tǒng)為每個(gè)用戶創(chuàng)建一個(gè)家目錄,通常位于 /home 目錄下。 例如:

用戶 la 的家目錄:/home/la用戶 hq 的家目錄:/home/hq對(duì)于 root 用戶(超級(jí)用戶),家目錄通常位于 /root,這是 root 用戶的默認(rèn)工作目錄。3.2、家目錄的權(quán)限

家目錄的權(quán)限通常為 700,即僅允許該用戶自己訪問(wèn),其他用戶無(wú)法查看或修改其家目錄。這樣就做到了多用戶彼此隔離,互不干擾

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

[root@iZbp1dkpw5hx2lyh7vjopaZ home]# ls -ltotal 8drwx------ 3 zwy zwy 4096 Jan 26 22:32 zwydrwx------ 2 zyy zyy 4096 Jan 27 19:48 zyy
【Linux權(quán)限】—— 于虛擬殿堂,輕撥密鑰啟華章

3.3、家目錄的創(chuàng)建和刪除

家目錄中的內(nèi)容: 家目錄通常包含以下內(nèi)容:

配置文件:大多數(shù)程序的配置文件都會(huì)存放在家目錄下,通常以 . 開(kāi)頭,表示它們是隱藏文件。例如,~/.bashrc、 ~/.profile 等。個(gè)人數(shù)據(jù):用戶在家目錄下存放的文件和文件夾程序和應(yīng)用的臨時(shí)文件:一些程序可能會(huì)在家目錄下創(chuàng)建臨時(shí)文件和緩存文件,通常在隱藏的文件夾內(nèi)。

創(chuàng)建用戶時(shí)的家目錄: 當(dāng)使用 useradd 命令創(chuàng)建新用戶時(shí),系統(tǒng)會(huì)默認(rèn)為用戶創(chuàng)建一個(gè)家目錄。默認(rèn)情況下,該目錄位于 /home 下,目錄名與用戶的用戶名相同。

例如,創(chuàng)建一個(gè)名為 xxn 的用戶時(shí):

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

sudo useradd xxn

系統(tǒng)會(huì)為xxn用戶創(chuàng)建 /home/xxn 目錄,并將其設(shè)置為該用戶的家目錄。

設(shè)置家目錄: 如果你希望為某個(gè)用戶設(shè)置一個(gè)不同的位置作為家目錄,可以使用 -d 選項(xiàng):

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

sudo useradd -d /custom/path/username username

這會(huì)將用戶 username 的家目錄設(shè)置為 /custom/path/username

訪問(wèn)家目錄: 用戶可以通過(guò) cd 命令進(jìn)入自己的家目錄:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

cd ~

或者

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

cd /home/username

~ 是一個(gè)快捷方式,表示當(dāng)前用戶的家目錄。你也可以使用 echo $HOME 命令查看當(dāng)前用戶的家目錄路徑。

刪除用戶及其家目錄: 如果你想刪除用戶以及他們的家目錄,可以使用 userdel 命令的 -r 選項(xiàng):

sudo userdel -r alice

這會(huì)刪除用戶 alice 和其家目錄 /home/alice。

4、權(quán)限小結(jié)4.1、文件權(quán)限

權(quán)限

含義

數(shù)字表示

示例

r

讀權(quán)限

4

r–(只讀)

w

寫(xiě)權(quán)限

2

rw-(讀寫(xiě))

x

執(zhí)行權(quán)限

1

rwx(完全權(quán)限)

4.2、權(quán)限表示(數(shù)字)

權(quán)限組合

含義

數(shù)字表示

rwx

所有者:讀、寫(xiě)、執(zhí)行

7

r-x

所有者:讀、執(zhí)行

5

rw-

所有者:讀、寫(xiě)

6

r–

所有者:讀

4

4.3、 文件和目錄權(quán)限

操作

文件權(quán)限

目錄權(quán)限

r

讀取文件內(nèi)容

列出目錄中的文件

w

修改文件內(nèi)容

創(chuàng)建、刪除文件

x

執(zhí)行文件

進(jìn)入目錄(cd)

4. 4、常用命令

命令

說(shuō)明

ls -l

查看文件權(quán)限

chmod 755 file.txt

修改文件權(quán)限

chown alice:staff file.txt

更改文件的擁有者和所屬組

useradd alice

創(chuàng)建新用戶

usermod -aG devs john

將用戶添加到組

4.5、 特殊權(quán)限

相關(guān)閱讀

主站蜘蛛池模板: 国产免费一区二区三区最新 | 制服丝袜视频在线 | 一级一级毛片免费播放 | 欧美日本免费观看αv片 | 日韩福利视频 | 99视频精品全部 在线 | 五月婷婷综合色 | 日韩福利在线观看 | 国产美女精品在线 | 高清人人天天夜夜曰狠狠狠狠 | 国产一区二区中文字幕 | 免费韩国一级毛片 | 久久久久久久综合 | 中国一及黄色片 | 在线jyzzjyzz免费视频 | 国产精品第十页 | 精品一区二区三区免费毛片爱 | 亚洲狠狠婷婷综合久久久图片 | 狠狠色综合网 | 台湾一级毛片 | 四虎影视亚洲精品 | 午夜黄色毛片 | 黄色片毛片 | 我想看一级黄色大片 | 日韩精品1区 | 日韩精品一区二区三区中文3d | 狠狠操天天操视频 | 在线成人国产 | 在线精品国产一区二区 | 午夜精品久久久久久久99 | 国产日韩欧美在线观看 | 五月激情六月婷婷 | 欧美3p在线观看一区二区三区 | 最近中文字幕高清字幕在线视频 | 视频一区二区三区免费观看 | 最好韩国日本高清 | 激情开心成人网 | 欧美色五月 | 国内精品久久久久久久aa护士 | 免费看欧美一级特黄a大片 免费看全黄特黄毛片 | 国产人伦视频在线观看 |