Linux8系統學習 使用者身份與檔案許可權(二)

2021-10-08 18:24:20 字數 2631 閱讀 3613

一、檔案的特殊許可權

在複雜多變的生產環境中,單純設定檔案的rwx許可權無法滿足我們對安全和靈活性的需求,因此便有了suid、sgid與sbit的特殊許可權位。

1.  suid
suid是一種對二進位制程式進行設定的特殊許可權,可以讓二進位制程式的執行者臨時擁有屬主的許可權(僅對擁有執行許可權的二進位制程式有效)。例如,所有使用者都可以執行passwd命令來修改自己的使用者密碼,而使用者密碼儲存在/etc/shadow檔案中。仔細檢視這個檔案就會發現它的預設許可權是000,也就是說除了root管理員以外,所有使用者都沒有檢視或編輯該檔案的許可權。但是,在使用passwd命令時如果加上suid特殊許可權位,就可讓普通使用者臨時獲得程式所有者的身份,把變更的密碼資訊寫入到shadow檔案中。

如果原先許可權位上有x執行許可權,則x改變成s,rwx變成了rws;如果原先許可權位上沒有x執行許可權,那麼被賦予特殊許可權後將變成大寫的s,rw-變成了rws。

2. sgid

sgid主要實現如下兩種功能:

讓執行者臨時擁有屬組的許可權(對擁有執行許可權的二進位制程式進行設定);

在某個目錄中建立的檔案自動繼承該目錄的使用者組(只可以對目錄進行設定)。

sgid的第一種功能是參考suid而設計的,不同點在於執行程式的使用者獲取的不再是檔案所有者的臨時許可權,而是獲取到檔案所屬組的許可權。

如果原先許可權位上有x執行許可權,則x改變成s,rwx變成了rws;如果原先許可權位上沒有x執行許可權,那麼被賦予特殊許可權後將變成大寫的s,rw-變成了rws。

3. sbit

sbit(sticky bit)特殊許可權位(也可以稱之為特殊許可權位之粘滯位)。sbit特殊許可權位可確保使用者只能刪除自己的檔案,而不能刪除其他使用者的檔案。換句話說,當對某個目錄設定了sbit粘滯位許可權後,那麼該目錄中的檔案就只能被其所有者執行刪除操作了。

當目錄被設定sbit特殊許可權位後,檔案的其他人許可權部分的x執行許可權就會被替換成t或者t,原本有x執行許可權則會寫成t,原本沒有x執行許可權則會被寫成t。

二、檔案的隱藏屬性

linux系統中的檔案除了具備一般許可權和特殊許可權之外,還有一種隱藏許可權,即被隱藏起來的許可權,預設情況下不能直接被使用者發覺。
chattr命令

chattr命令用於設定檔案的隱藏許可權,格式為「chattr [引數] 檔案」。如果想要把某個隱藏功能新增到檔案上,則需要在命令後面追加「+引數」,如果想要把某個隱藏功能移出檔案,則需要追加「-引數」。chattr命令中可供選擇的隱藏許可權引數非常豐富。

chattr命令中用於隱藏許可權的引數及其作用

lsattr命令

lsattr命令用於顯示檔案的隱藏許可權,格式為「lsattr [引數] 檔案」。在linux系統中,檔案的隱藏許可權必須使用lsattr命令來檢視

三、檔案訪問控制列表

如果希望對某個指定的使用者進行單獨的許可權控制,就需要用到檔案的訪問控制列表(acl)了。通俗來講,基於普通檔案或目錄設定acl其實就是針對指定的使用者或使用者組設定檔案或目錄的操作許可權。另外,如果針對某個目錄設定了acl,則目錄中的檔案會繼承其acl;若針對檔案設定了acl,則檔案不再繼承其所在目錄的acl。

setfacl命令

setfacl命令用於管理檔案的acl規則,格式為「setfacl [引數] 檔名稱」。檔案的acl提供的是在所有者、所屬組、其他人的讀/寫/執行許可權之外的特殊許可權控制,使用setfacl命令可以針對單一使用者或使用者組、單一檔案或目錄來進行讀/寫/執行許可權的控制。其中,針對目錄檔案需要使用-r遞迴引數;針對普通檔案則使用-m引數;如果想要刪除某個檔案的acl,則可以使用-b引數。

getfacl命令

getfacl命令用於顯示檔案上設定的acl資訊,格式為「getfacl 檔名稱」。linux系統中的命令就是這麼又可愛又好記。想要設定acl,用的是setfacl命令;要想檢視acl,則用的是getfacl命令。

四、su命令與sudo服務

su命令可以解決切換使用者身份的需求,使得當前使用者在不退出登入的情況下,順暢地切換到其他使用者。

使用sudo命令把特定命令的執行許可權賦予給指定使用者,這樣既可保證普通使用者能夠完成特定的工作,也可以避免洩露root管理員密碼。

sudo命令用於給普通使用者提供額外的許可權來完成原本root管理員才能完成的任務,格式為「sudo [引數] 命令名稱」。

sudo命令具有如下功能:

限制使用者執行指定的命令:

記錄使用者執行的每一條命令;

配置檔案(/etc/sudoers)提供集中的使用者管理、許可權與主機等引數;

驗證密碼的後5分鐘內(預設值)無須再讓使用者再次驗證密碼。

sudo服務中的可用引數以及作用

引數 作用

-h 列出幫助資訊

-l 列出當前使用者可執行的命令

-u 使用者名稱或uid值 以指定的使用者身份執行命令

-k 清空密碼的有效時間,下次執行sudo時需要再次進行密碼驗證

-b 在後台執行指定的命令

-p 更改詢問密碼的提示語

Linux8系統學習 編寫Shell指令碼(一)

一 編寫shell指令碼 shell終端直譯器是人與計算機硬體之間的 翻譯官 它作為使用者與linux系統內部的通訊媒介,除了能夠支援各種變數與引數外,還提供了諸如迴圈 分支等高階程式語言才有的控制結構特性。要想正確使用shell中的這些功能特性,準確下達命令尤為重要。shell指令碼命令的工作方式...

Linux系統學習之使用者與使用者組

在linux中,每個使用者都擁有乙個唯一的使用者名稱和與之相關的使用者識別符號 uid,數值型 乙個使用者可以屬於多個使用者組,每個使用者組都擁有唯一乙個名稱和乙個使用者組識別符號 gid,數值型 uid和gid的主要用途有 一,確定各種系統資源的所有權 二,對賦予程序訪問資源的許可權進行控制。說起...

LINUX系統學習 安裝與概要

cpu 主頻1ghz以上 記憶體 1gb以上 硬碟 分割槽空閒空間8gb以上 個人使用wmware建議版本8.0以下 磁碟分割槽 是使用分割槽編輯器 partition editor 在磁碟上劃分幾個邏輯部分。碟片一旦劃分成數個分割槽 partition 不同類的目錄與檔案可以儲存進不同的分割槽。分...