linux-文件許可權

  • 2022 年 8 月 24 日
  • 筆記

一、/etc/passwd文件
Linux系統使用一個專門的文件來將用戶的登錄名匹配到對應的UID值。這個文件就是/etc/passwd 文件,它包含了一些與用戶有關的資訊。

欄位分別是:

  • 登錄用戶名
  • 用戶密碼
  • 用戶賬戶的UID(數字形式)
  • 用戶賬戶的組ID(GID)(數字形式)
  • 用戶賬戶的文本描述(稱為備註欄位)
  • 用戶HOME目錄的位置
  • 用戶的默認shell

root用戶賬戶是Linux系統的管理員,固定分配給 它的UID是0。Linux為系統賬戶預留了500以下的UID值。有些服 務甚至要用特定的UID才能正常工作。為普通用 戶創建賬戶時,大多數Linux系統會從500開始, 將第一個可用UID分配給這個賬戶。/etc/passwd文件中的密碼欄位都被設置成了x。絕大多數Linux系統都將用戶密碼保存在另 一個單獨的文件中(叫作shadow文件,位置 在/etc/shadow)。只有特定的程式(比如登錄程 序)才能訪問這個文件。

二、/etc/shadow文件
/etc/shadow文件對Linux系統密碼管理提供了更多 的控制。只有root用戶才能訪問/etc/shadow文 件,這讓它比起/etc/passwd安全許多。

在/etc/shadow文件的每條記錄中都有9個欄位:

  1. 與/etc/passwd文件中的登錄名欄位對應的登錄名
  2. 加密後的密碼
  3. 自上次修改密碼後過去的天數密碼(自1970 年1月1日開始計算)
  4. 多少天后才能更改密碼
  5. 多少天后必須更改密碼
  6. 密碼過期前提前多少天提醒用戶更改密碼
  7. 密碼過期後多少天禁用用戶賬戶
  8. 用戶賬戶被禁用的日期(用自1970年1月1日 到當天的天數表示)
  9. 預留欄位給將來使用

添加新用戶:
useradd可以一次性創 建新用戶賬戶及設置用戶HOME目錄結 構。useradd 命令使用系統的默認值以及命令行 參數來設置用戶賬戶。系統默認值被設置 在/etc/default/useradd文件中。可以使用加入了-D 選項的useradd 命令查看所用Linux系統中的這些 默認值。

這個例子列出的默認值如下:

  1. 新用戶會被添加到GID為100 的公共組;
  2. 新用戶的HOME目錄將會位 於/home/loginname;
  3. 新用戶賬戶密碼在過期後不會被禁用;
  4. 新用戶賬戶未被設置過期日期;
  5. 新用戶賬戶將bash shell作為默認shell;
  6. 系統會將/etc/skel目錄下的內容複製到用戶的 HOME目錄下;
  7. 系統為該用戶賬戶在mail目錄下創建一個用 於接收郵件的文件。

useradd 命令允許管理員創建一份默認的HOME目錄配置,然後把它作 為創建新用戶HOME目錄的模板。這樣就能自動 在每個新用戶的HOME目錄里放置默認的系統文件。


創建用戶test並建立home目錄。

刪除用戶:
如果你想從系統中刪除用戶,userdel 可以滿足 這個需求。默認情況下,userdel 命令會只刪 除/etc/passwd文件中的用戶資訊,而不會刪除系 統中屬於該賬戶的任何文件。如果加上-r 參數,userdel 會刪除用戶的HOME 目錄以及郵件目錄。然而,系統上仍可能存有已 刪除用戶的其他文件。這在有些環境中會造成問 題。

usermod
usermod 命令是用戶賬戶修改工具中最強大的一 個。它能用來修改/etc/passwd文件中的大部分字 段,只需用與想修改的欄位對應的命令行參數就 可以了。

  • -l 修改用戶賬戶的登錄名。
  • -L 鎖定賬戶,使用戶無法登錄。
  • -p 修改賬戶的密碼。
  • -U 解除鎖定,使用戶能夠登錄
    -L 選項尤其實用。它可以將賬戶鎖定,使用戶無法登錄,同時無需刪除賬戶和用戶的數據。要讓 賬戶恢復正常,只要用-U 選項就行了。

passwd
更改用戶密碼。-e 選項能強制用戶下次登錄時修改密碼。

chpasswd
chpasswd 命 令能從標準輸入自動讀取登錄名和密碼對(由冒號分割)列表,給密碼加密,然後為用戶賬戶設 置。你也可以用重定向命令來將含 有userid:passwd 對的文件重定向給該命令。

chsh
chsh 命令用來快速修改默認的用戶登錄 shell。使用時必須用shell的全路徑名作為參數, 不能只用shell名。

chfn
chfn 命令提供了在/etc/passwd文件的備註欄位中 存儲資訊的標準方法。chfn 命令會將用於Unix的 finger 命令的資訊存進備註欄位,而不是簡單地存入一些隨機文本(比如名字或昵稱之類的), 或是將備註欄位留空。

chage
管理用戶賬戶的有效 期。
chage 命令的日期值可以用下面兩種方式中的任 意一種:

  • YYYY-MM-DD格式的日期
  • 代表從1970年1月1日起到該日期天數的數值

chage 命令中有個好用的功能是設置賬戶的過期日期。


組許可權允許多個用戶對系統中的對象(比如文 件、目錄或設備等)共享一組共用的許可權。

/etc/group文件
/etc/group文件包含系統上用到的每個組的資訊。

系統賬戶用的組通常會分配低於500的GID值,而 用戶組的GID則會從500開始分配。
/etc/group文件有4個欄位:

  • 組名
  • 組密碼
  • GID
  • 屬於該組的用戶列表

用戶賬戶列表某種意義上有些誤導 人。你會發現,在列表中,有些組並沒有列 出用戶。這並不是說這些組沒有成員。當一 個用戶在/etc/passwd文件中指定某個組作為 默認組時,用戶賬戶不會作為該組成員再出 現在/etc/group文件中。

groupadd

usermod -G shared test 將test用戶加到shared組

groupmod
可以修改已有組的 GID(加-g 選項)或組名(加-n 選項)

文件許可權

第一個欄位的第一個字元代表了對象的類 型:

  • ‘-‘代表文件
  • d 代表目錄
  • l 代表鏈接
  • c 代表字元型設備
  • b 代表塊設備
  • n 代表網路設備

之後有3組三字元的編碼。每一組定義了3種訪問 許可權:

  • r 代表對象是可讀的
  • w 代表對象是可寫的
  • x 代表對象是可執行的

若沒有某種許可權,在該許可權位會出現單破折線。

這3組許可權分別對應對象的3個安全級別:

  • 對象的屬主
  • 對象的屬組
  • 系統其他用戶

  • rwx :文件的屬主
  • r-x :文件的屬組
  • r-x :系統上其他人

默認文件許可權
umask 命令用來設置所創建文件和目 錄的默認許可權。

第一位代表了一項特別的安全特性,叫作粘著位。後面的3位表示文件或目錄對應的umask 八進位值。八進位模式的安全性設置先獲取這3個rwx 許可權的 值,然後將其轉換成3位二進位值,用一個八進 制值來表示。在這個二進位表示中,每個位置代 表一個二進位位。因此,如果讀許可權是唯一置位 的許可權,許可權值就是r– ,轉換成二進位值就是100 ,代表的八進位值是4。


創建的文件的八 進位許可權是644。
對文件 來說,全許可權的值是666 (所有用戶都有讀和寫 的許可權);而對目錄來說,則是777 (所有用戶 都有讀、寫、執行許可權)。文件一開始的許可權是666 ,減去 umask 值022 之後,剩下的文件許可權就成了644。

chmod
改變文件和目錄的安全性設置。
格式是:
chmod options mode file
mode 參數可以使用八進位模式或符號模式進行安 全性設置。比如chmod 760 newfile

符號模式
[ugoa…][[+-=][rwxXstugo…]
第一組字元定義了許可權作 用的對象:

  • u 代表用戶
  • g 代表組
  • o 代表其他
  • a 代表上述所有

後面跟著的符號表示你是想在現有許可權基礎上增加許可權(+),還是在現有許可權基礎上 移除許可權(-),或是將許可權設置成後面的值 (=)。,第三個符號代表作用到設置上的許可權。
X :如果對象是目錄或者它已有執行許可權, 賦予執行許可權。
s :運行時重新設置UID或GID。
t :粘著位。
u :將許可權設置為跟屬主一樣。
g :將許可權設置為跟屬組一樣。
o :將許可權設置為跟其他用戶一樣。

chown
改變文件的屬主.令也支援同時改變文件的屬 主和屬組。

chgrp
改變文件的默認屬組

以下轉自://blog.csdn.net/mChenys/article/details/84136801
SUID許可權
當s這個標誌出現在文件所有者的x許可權上時,此時就被稱為Set UID,簡稱SUID。
作用:

  • SUID許可權僅對可執行文件有效
  • 執行者對於該可執行文件需要具有x許可權
  • 在執行過程中,調用者會暫時獲得該文件的擁有者許可權
  • 該許可權只在程式執行的過程中有效


實際上這2個可執行文件的所有者是root,但是我們依然可以在普通帳號下使用這兩個命令,這是因為普通帳號在使用這2個命令的時候會暫時獲得其擁有者的許可權。
SUID許可權中的s有大小寫之分,如果強行給普通文件添加s許可權,那麼現實的是大寫的S,因為普通文件沒有x許可權,這樣顯示的suid其實沒什麼用,因為它並不是可執行文件。

只有給文件添加了x許可權後,suid才有效。

SGID許可權
當s出現在文件的所屬組x許可權位置上時,表示所屬組有SGID的許可權。

作用:

  • 既可以作用於目錄,也可以作用於可執行文件
  • 只要父目錄有SGID許可權,所有的子目錄都會遞歸繼承
  • 執行者對於該可執行文件需要具有x許可權
  • 在執行過程中,調用者會暫時獲得該文件的所屬組許可權

下面演示對目錄和文件設置SGID許可權

同樣SGID的s許可權也是分大小寫的,當g許可權組沒有x許可權的時候,設置SGID後就會變成大寫的S,這點跟SUID一樣。

SBIT許可權
當t出現在其他組的x許可權位置時,表示其他組具有SBIT的許可權。
SBIT(Sticky Bit)目前只針對目錄有效,對於目錄的作用是:當用戶在該目錄下建立文件或目錄時,僅有自己與 root才有權力刪除。
最具有代表的就是/tmp目錄,任何人都可以在/tmp內增加、修改文件(因為許可權全是rwx),但僅有該文件/目錄建立者與 root能夠刪除自己的目錄或文件。


許可權t也有大小寫之分,大寫說明沒有x許可權,小寫說明有x許可權,這點和許可權s是一樣的。


SUID/SGID/SBIT許可權設置
和rwx許可權一樣通過chmod命令設置,s、t也有兩種設置方法:

1、符號表示:SUID: u+s ,SGID: g+s,SBIT: o+t
2、數字表示:SUID=4,SGID=2,SBIT=1,將原來的三位數擴展為四位數即可,把它們放在許可權數字的最開頭。例如設置SUID,可以寫成4777,設置SGID可以寫成,2777,設置SBIT可以寫成1777;如果同時設置就是數字之和,例如suid,sgid和sbit都設置的話就是7777