命令列快速提示:許可權進階
前一篇文章介紹了 Fedora 系統上有關檔案許可權的一些基礎知識。本部分介紹使用許可權管理檔案訪問和共享的其他方法。它建立在前一篇文章中的知識和示例的基礎上,所以如果你還沒有閱讀過那篇文章,請檢視它。
符號與八進位制
在上一篇文章中,你瞭解到檔案有三個不同的許可權集。擁有該檔案的使用者有一個集合,擁有該檔案的組的成員有一個集合,然後最終一個集合適用於其他所有人。在長列表(ls -l
)中這些許可權使用符號模式顯示在螢幕上。
每個集合都有 r
、w
和 x
條目,表示特定使用者(所有者、組成員或其他)是否可以讀取、寫入或執行該檔案。但是還有另一種表達這些許可權的方法:八進位制模式。
你已經習慣了十進位制編號系統,它有十個不同的值(0
到 9
)。另一方面,八進位制系統有八個不同的值(0
到 7
)。在表示許可權時,八進位制用作速記來顯示 r
、w
和 x
欄位的值。將每個欄位視為具有如下值:
r
= 4w
= 2x
= 1
現在,你可以使用單個八進位制值表達任何組合。例如,讀取和寫入許可權(但沒有執行許可權)的值為 6
。讀取和執行許可權的值僅為 5
。檔案的 rwxr-xr-x
符號許可權的八進位制值為 755
。
與符號值類似,你可以使用八進位制值使用 chmod
命令設定檔案許可權。以下兩個命令對檔案設定相同的許可權:
chmod u=rw,g=r,o=r myfile1
chmod 644 myfile1
特殊許可權位
檔案上還有幾個特殊許可權位。這些被稱為 setuid
(或 suid
)、setgid
(或 sgid
),以及粘滯位(或阻止刪除位)。 將此視為另一組八進位制值:
setuid
= 4setgid
= 2sticky
= 1
除非該檔案是可執行的,否則 setuid
位是被忽略的。如果是可執行的這種情況,則該檔案(可能是應用程式或指令碼)的執行就像擁有該檔案的使用者啟動的一樣。setuid
的一個很好的例子是 /bin/passwd
實用程式,它允許使用者設定或更改密碼。此實用程式必須能夠寫入到不允許普通使用者更改的檔案中(LCTT 譯註:此處是指 /etc/passwd
和 /etc/shadow
)。因此它需要精心編寫,由 root
使用者擁有,並具有 setuid
位,以便它可以更改密碼相關檔案。
setgid
位對於可執行檔案的工作方式類似。該檔案將使用擁有它的組的許可權執行。但是,setgid
對於目錄還有一個額外的用途。如果在具有 setgid
許可權的目錄中建立檔案,則該檔案的組所有者將設定為該目錄的組所有者。
最後,雖然檔案粘滯位沒有意義會被忽略,但它對目錄很有用。在目錄上設定的粘滯位將阻止使用者刪除其他使用者擁有的該目錄中的檔案。
在八進位制模式下使用 chmod
設定這些位的方法是新增一個值字首,例如 4755
,可以將 setuid
新增到可執行檔案中。在符號模式下,u
和 g
也可用於設定或刪除 setuid
和 setgid
,例如 u+s,g+s
。粘滯位使用 o+t
設定。(其他的組合,如 o+s
或 u+t
,是沒有意義的,會被忽略。)
共享與特殊許可權
回想一下前一篇文章中關於需要共享檔案的財務團隊的示例。可以想象,特殊許可權位有助於更有效地解決問題。原來的解決方案只是建立了一個整個組可以寫入的目錄:
drwxrwx---. 2 root finance 4096 Jul 6 15:35 finance
此目錄的一個問題是,finance
組成員的使用者 dwayne
和 jill
可以刪除彼此的檔案。這對於共享空間來說不是最佳選擇。它在某些情況下可能有用,但在處理財務記錄時可能不會!
另一個問題是此目錄中的檔案可能無法真正共享,因為它們將由 dwayne
和 jill
的預設組擁有 - 很可能使用者私有組也命名為 dwayne
和 jill
,而不是 finance
。
解決此問題的更好方法是在資料夾上設定 setgid
和粘滯位。這將做兩件事:使資料夾中建立的檔案自動歸 finance
組所有,並防止 dwayne
和 jill
刪除彼此的檔案。下面這些命令中的任何一個都可以工作:
sudo chmod 3770 finance
sudo chmod u+rwx,g+rwxs,o+t finance
該檔案的長列表現在顯示了所應用的新特殊許可權。粘滯位顯示為 T
而不是 t
,因為 finance
組之外的使用者無法搜尋該資料夾。
drwxrws--T. 2 root finance 4096 Jul 6 15:35 finance
via: https://fedoramagazine.org/command-line-quick-tips-more-about-permissions/
作者:Paul W. Frields 選題:lujun9972 譯者:wxy 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 命令列快速提示:許可權命令列
- 命令列生成Dcat許可權列表命令列
- Linux ACL 許可權之進階篇Linux
- Linux常用命令--許可權管理命令Linux
- Linux檔案許可權管理命令Linux
- Windows Server 使用ICACLS在命令列給檔案賦予許可權WindowsServer命令列
- mysql 命令列安裝並給使用者sa所有許可權MySql命令列
- mongoDB安裝時提示沒有許可權MongoDB
- 許可權之選單許可權
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- js 許可權二進位制JS
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- 使用LDAP查詢快速提升域許可權LDA
- 雲端計算學習路線教程,檔案許可權管理高階許可權
- 許可權系統:一文搞懂功能許可權、資料許可權
- Linux常用檔案許可權命令詳解Linux
- 7.4 透過API列舉程式許可權API
- RAC安裝目錄許可權快速恢復
- Linux特殊許可權之suid、sgid、sbit許可權LinuxUI
- mysql許可權MySql
- 許可權控制
- Linux許可權Linux
- SpringBoot--- SpringSecurity進行登出,許可權控制Spring BootGse
- linux許可權字串rwxr-xrw-所對應的八進位制許可權數字Linux字串
- 修改組策略以安裝MSI程式進行許可權升級或許可權維持
- android動態許可權到自定義許可權框架Android框架
- 選單許可權和按鈕許可權設定
- Linux的檔案存取許可權和0644許可權Linux
- 新建外掛,提示沒有許可權,請大家幫看看。
- 網站提示:”會話目錄寫入許可權不足“網站會話
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- 檔案許可權管理命令chmod,chown與文字搜尋命令grep
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- 許可權系統:許可權應用服務設計
- 在Windows低許可權下利用服務進行提權Windows
- 前端如何進行使用者許可權管理前端
- 利用DSRM賬號進行許可權維持