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個欄位:
- 與/etc/passwd文件中的登錄名欄位對應的登錄名
- 加密後的密碼
- 自上次修改密碼後過去的天數密碼(自1970 年1月1日開始計算)
- 多少天后才能更改密碼
- 多少天后必須更改密碼
- 密碼過期前提前多少天提醒用戶更改密碼
- 密碼過期後多少天禁用用戶賬戶
- 用戶賬戶被禁用的日期(用自1970年1月1日 到當天的天數表示)
- 預留欄位給將來使用
添加新用戶:
useradd可以一次性創 建新用戶賬戶及設置用戶HOME目錄結 構。useradd 命令使用系統的默認值以及命令行 參數來設置用戶賬戶。系統默認值被設置 在/etc/default/useradd文件中。可以使用加入了-D 選項的useradd 命令查看所用Linux系統中的這些 默認值。
這個例子列出的默認值如下:
- 新用戶會被添加到GID為100 的公共組;
- 新用戶的HOME目錄將會位 於/home/loginname;
- 新用戶賬戶密碼在過期後不會被禁用;
- 新用戶賬戶未被設置過期日期;
- 新用戶賬戶將bash shell作為默認shell;
- 系統會將/etc/skel目錄下的內容複製到用戶的 HOME目錄下;
- 系統為該用戶賬戶在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