Linux 入門記錄:十三、Linux 延伸權限,linux許可權

來源:互聯網
上載者:User

Linux 入門記錄:十三、Linux 延伸權限,linux許可權
一、預設許可權

每一個終端都有一個 umask 屬性,是用來確定建立檔案或目錄的預設許可權的許可權“掩碼”(mask 有“掩碼”的含義,至於 u,後面說)。

Linux 中一般有預設的許可權掩碼,使用命令 umask 用以查看或設定:

umask        查看預設掩碼umask 0022   設定預設掩碼

一般地,普通使用者(uid 為 500 以上)的許可權掩碼預設為 0002,root 使用者(uid 為 0)的許可權掩碼預設為 0022。

如果建立了一個檔案或目錄,那麼這個檔案或目錄的預設許可權等於 檔案或目錄的預設最高許可權 & (~ umask) 。

那麼,“檔案或目錄的預設最高許可權”是多少呢?一般來說,目錄的預設最高許可權是 0777,檔案的預設最高許可權為 0666(去掉了 x 許可權,禁止執行,安全考慮)。注意:Linux 的許可權值是八進位的!所以,網上的某些所謂十進位減法運算來計算建立檔案或目錄預設許可權的邏輯是錯誤的。還有什麼分情況討論的,在我看來實在麻煩。用電腦思維來理解電腦,這是我認為最合理、最準確且最簡單的思維方式。

 

怎麼記憶和理解這個運算邏輯?

umask,我把它的中文全稱記為用於“位取反的許可權掩碼”。“位取反” 來自 "u",“掩碼” 來自 "mask" 。拿這個位取反的許可權掩碼(~ umask)跟預設最高許可權相與 "&",就得到了建立檔案(或目錄)的預設許可權。

怎麼理解?

這裡主要是“掩碼”:掩碼是用來和目標數進行邏輯與 "&" 運算,取得目標數裡跟掩碼的位均為 1 的位組合,並將跟掩碼中位為 0 的對應位全部丟棄。掩碼的原理是邏輯與的原理,任何數和 1 相與都是它本身,任何數和 0 相與都是 0。而一個數跟掩碼的反碼(位取反)進行邏輯與,得到結果恰恰相反,結果是保留這個數裡跟掩碼裡位為 0 相對應的位,丟棄跟掩碼裡位為1 相對應的位。

這裡的 umask 就是這個作用,用預設最高許可權跟取反的 umask 相與,就從預設最高許可權裡丟棄了 umask 不允許的許可權。所以並不是簡單的十進位減法運算,例如 umask 值為 0022 和 0033 的時候,普通使用者建立檔案的預設許可權都是 0644(因為 0666 & (~ 0022) 和 0666 & (~ 0033) 的運算結果是一樣的),用 rwx 符號表示就是 -rw-r--r-- 。

 

二、特殊許可權

除了普通許可權外,還有三個特殊許可權:

許可權 對檔案的影響 對目錄的影響
suid

以檔案的所屬使用者身份執行,

而非執行檔案的使用者

sgid

以檔案所屬組身份執行

在該目錄中建立的任意新檔案的

所屬組與該目錄的所屬組相同,

即子檔案自動繼承該目錄的所屬組

sticky

對目錄擁有寫入許可權的使用者僅可以

刪除其擁有的檔案,無法刪除其他

使用者所擁有的檔案

 

擁有suid許可權的passwd命令

Linux 中普通使用者的密碼口令都儲存在 /etc/shadow 檔案裡,這個檔案的許可權是只有root使用者和root組才可以訪問的。那麼普通使用者使怎麼修改自己密碼的呢?Linux 提供了 passwd 命令普通使用者使用來實現自己的密碼:

我們看到,這個 passwd 的 U 許可權裡有個 "s" 佔用了原來的 "x"位,這表示執行該命令的使用者擁有 "suid" 許可權,以 root 使用者身份來運行,所以普通使用者可以通過執行 passwd 命令的來修改自己的密碼,並將它寫到 /etc/shadow 檔案裡。

 

三、設定特殊許可權

設定 suid:

chmod u+s filename

設定 sgid:

chmod g+s filename

設定 sticky:

chmod o+t filename

其中,設定 sgid 許可權會使 "s" 佔用 G 許可權的 "x" 位,例如:"-rwxr-s---";設定 sticky 許可權會使 "t" 佔用 O 許可權的 "x" 位,例如:"drwxr-xr-t"。這裡我所說的 G 許可權、O 許可權是基於 UGO 模型的 Linux 許可權。

一般來說,我們使用 sgid 來設定目錄的許可權,它允許了目錄的子檔案(或目錄)自動繼承該目錄的所屬組,常見的情況例如市場部目錄的員工目錄自動屬於市場部使用者組。經常使用 sticky 來設定目錄下的使用者可以刪除自己的檔案,但不能刪除別人的檔案,例如營銷部目錄的員工檔案可以被員工刪除,但不能刪除同事的檔案。

 

與普通許可權一樣,特殊許可權也可以用八位元值表示:

suid   = 4 (2 ^ 2)sgid   = 2 (2 ^ 1)sticky = 2 (2 ^ 0)

所以,我們也可以通過以下命令設定:

chmod 4755 filename   普通許可權755,所屬使用者可讀可寫可執行,所屬組和其他使用者不可寫,特殊許可權允許以所屬使用者身份執行

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.