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