本章內容
Linux的安全模型
用戶和組
用戶和組管理命令
文件權限
默認權限
特殊權限
ACL訪問控制
一:3A認證
Authentication :認證
Authorization :授權
Audition 審計
Authentication(認證):驗證用戶的身份(賬號和密碼)與可使用的網絡等一系列服務
Authorization (授權):依據認證結果開放網絡等各種服務給用戶,對用戶的資源訪問權限進行集中控制。
Audition (審計):將用戶所有的操作日志集中記錄管理和分析,不僅可以對用戶行為進行監控,并且可以通過集中的審計數據進行數據挖掘,以便于事后的安全事故責任的認定。
形象的說就是用戶通過用戶名和密碼認證,認證后獲得令牌token(identity),令牌是已經被授權過的“身份卡”,擁有令牌之后就可以訪問或者操作系統了,但是活動內容是被授權時賦予的權限限制的,規定了你能做什么;而審計是一種監督管控的措施,它保留日志等一切有關系統、用戶活動的事物,可以管控用戶是否有非正常操作等不合理的地方。
而linux系統在此過程中,用到的有:
用戶名(USERID即UID)
密碼(passwd)
主組(GID)
附加組(輔助組)(other)
文件和目錄權限
ACL訪問控制列表
通過上述各項,對用戶的系統活動進行初步的管理
二、用戶和組
1、用戶user和用戶ID(UID)
在linux系統中每一個用戶都有自己用戶名,但是linux在識別時,并不是識別我們登陸時鍵入的用戶名,而是用戶名所對應的UID,而UID才是真正的身份證號碼,就好比我們的身份證一樣,最后用于核實身份的是身份證號碼就是這個道理。因此用戶名與用戶ID(UID)的關系如下
用戶名:類此姓名 方便用戶記憶操作登錄
用戶ID:類此身份證號碼 系統識別身份的真正依據
比如我們在系統正常新建一個用戶User1,指定UID號碼是1111,然后
在linux中用戶(UESRNAME和UID)分為
管理用戶(管理員root UID=0)
普通用戶(UID=1-65535)
系統用戶(如nologin)CentOS6.8默認UID=1-499;CentOS7.2默認UID=1-999
作用:對為了能夠讓后臺進程或服務類進程以非管理員的身份運行,通常系統或應用程序需要為此創建多個普通用戶,這類用戶從不用登錄系統,僅僅用來讓其他進程以它的身份運行,從而僅能獲取普通權限的;用戶自己也可以常見系統用戶。
登錄交互用戶(我們日常登陸工作的賬戶))CentOS6.8默認UID=500-60000;CentOS7.2默認
UID=1000-60000
作用:我們日常工作所用的交互賬戶,也是我們正常推薦所用的賬戶(root權限太大,操作有風險),有普通的權限,能夠正常操作維護系統。
OK,我們來看一下示例,來看看UID如何影響用戶名(賬號)的
示例(1)
我們正常新建一個普通登錄用戶user1,并且指定UID=1111
1
|
useradd -u 1111 user1 |
然后在/etc/passwd中查看user1用戶信息
1
|
getent passwd user1 |
查看普通用戶家目錄/home下的用戶家目錄列表存在的user1家目錄的信息
1
|
ll /home |
然后刪除user1賬戶,但是保留家目錄
1
|
userdel user1 |
查看普通用戶家目錄/home下的用戶家目錄列表存在的user1家目錄的信息的變化
1
|
ll /home |
添加用戶user2,但是指定其uid=1111,與原來的user1相同
1
|
useradd -u 1111 user2 |
查看/etc/passwd中查看用戶信息變化以及家目錄中的變化
1
2
|
getent passwd ll /home |
示例2
作此示例請做好備份快照
我們用nano或vim文本編輯工具編輯修改/etc/passwd中的root uid=2222,并將user2的 uid=0
首先我們先要激活user2的密碼,否則無法登陸
1
|
passwd user2 |
然后編輯配置/etc/passwd的信息,將root uid改為2222 將user2 uid改為0
1
|
vim /etc/passwd |
我們以前提到過管理員的命令提示符默認是 # ,而普通用戶為 $
然后我們重新登錄一下系統,系統會重新讀取/etc/passwd文件
1
|
exit |
重新登錄
登錄user2會發現命令提示符變為 # 而默認管理員的命令提示符就是 # 而且切換用戶root并不需要密碼
而反觀root用戶原先只有管理員能夠查看的/etc/shadow文件竟然不能訪問查看,而且命令提示符號變為默認的普通用戶 $ ;切換回user2賬號竟然需要密碼!而且能夠查看/etc/shadow文件了
由此我們可以看出系統中的識別機制:是以用戶ID即UID為依據的,并不是我們所用的用戶名。
所以linux中的uid可以決定用戶的身份,并影響其所屬關系及權限。
注意:以上恢復原狀,把root和user2的uid改回原值即可
用戶uid是可以重復的(用命令創建和修改),但是一般不建議如此做
/etc/passwd 是全局配置文件之一 是數據庫文件 記錄的是用戶賬戶的相關信息,可以用
1
|
man 5 passwd |
了解相關參數的含義
2、密碼
賬戶密碼是用戶登錄認證的關鍵,我們在這里初步了解一下linux中用戶密碼,在系統中存儲位置,和密碼組成以及加密算法
在linux密碼在早期版本中存儲在數據庫文件/etc/passwd中的第二個參數位置上,但是后期存儲在/etc/shadow中,從現在的機制來說了,由于系統運作所需,passwd是所有用戶都可以查看的,而shadow文件只能是root管理員查看來看,是為了安全因素所以給轉移存儲位置了,如果想要回到原來的存儲模式,方法如下:
1
2
|
pwunconv #關閉影子密碼,是密碼重新存儲到/etc/passwd,而非/etc/shadow中 pwconv #打開影子密碼 |
上圖我們可以看到,當關閉影子密碼后,密碼已經存儲得到/etc/passwd中了,而且我們會發現/etc/shadowwen文件沒有了?。?!重現開啟回到系統默認的影子密碼模式,/etc/shadow文件又有了,密碼又不存儲在/etc/passwd中了,而是又存儲到/etc/shadow中了
密碼的組成:在系統中正常的密碼組成由三部分構成
第一個$后是加密算法,數字與加密算法對應關系如下:
1:MD5 128位
2:sha1 160位
3:sha224 224位
4:sha256 256位
5:sha384 384位
6:sha512 512位
也因此我們可以看出上圖user2的加密算法是sha512的
而早期密碼算法多用MD5和sha1,位數沒有上圖顯示的那么長,在當時雖然已經有更復雜的密碼,但是考慮到加密和解密驗證,都是要消耗系統資源的,同時還沒有人能破解這種加密算法,所以為了讓系統系統資源利用率更高,而沒有使用更復雜算法;但是,在2005年由我國數學家王小云女博士!女博士!女博士!成功破解,也因此導致其后所有重要領域的密碼加密算法改變。
天朝威武霸氣,女博士天下無敵!?。?!
女博士后是怪物!是寂寞?。〔淮挡缓?!呵呵
加密機制:
加密:明文–> 密文
解密:密文–> 明文
單向加密:相同算法定長輸出,獲得密文不可逆推出原始數據
哈希算法,原文不同,密文必不同
雪崩效應:初始條件的微小改變,引起結果的巨大改變
更改加密算法 authconfig –passalgo=sha256 — update
注意:
此命令是修改/etc/login.defs文件中的參數來實現的,所以對所有人有效,已經創建的用戶加密模式不變,但是修改會變化,新建用戶則使用修改后的加密算法,且重新登錄也依然有效
第二$后是salt(鹽):可以抽象理解為調料的作用,就是相同的密碼,加入salt產生的隨機數之后依據雪崩效應,產生的密文就不一樣,這樣就避免如果別人的密碼密文與自己的一樣,繼而推算我們的密碼。
第三$之后才是真正的密碼密文,很根據加密算法位數的不同,而呈現不同長度,但是在相同算法下,不同長度的密碼,密碼密文長度相同,是等長的,所以,密碼密文的長度由密碼的加密算法決定
密碼的復雜性策略
使用數字、大寫字母、小寫字母及特殊字符中至少3種
足夠長原則上至少8位
使用隨機密碼
定期更換;不要使用最近曾經使用過的密碼
3、組group(主組gid、附加組)
Linux 組:Groupname/GID
管理員組:root(與管理員賬戶名root同名) gid=0
普通組:gid=1-65535
系統組:默認對應系統用戶的組
CentOS6.8:1-499
CentsOS7.2:1-999
普通組:默認對應普通登錄用戶的組
CentOS6.8:500-60000
CentsOS7.2:1000-60000
Linux 組的類別:
用戶的主要組( 主組gid):用戶必須屬于一個且只有一個主組
組名同用戶名,且僅包含一個用戶:私有組
用戶的附加組( 輔助組):一個用戶可以屬于零個或多個輔助組
在linux系統中用戶的組我們可以抽象理解為所屬部門,主組就是主職部門(也就是我們的關系所在地),而附加組則是兼職部門(比如技術部的主職技術員,本身又兼職公關部的形象大使)
組也是有密碼的,默認情況下,是沒有密碼的,
用戶和組的配置文件
Linux 用戶和組的主要配置文件:
/etc/passwd :用戶及其屬性信息
( 登錄名:密碼位(已經轉存至shadow):用戶UID :主組GID :注釋信息:家目錄路徑:shell類型)
/etc/shadow :用戶密碼及其相關屬性
(登錄名:加密的密碼:最后一次修改密碼時間:密碼最小有效期:密碼最大有效期:密碼警告時間:密碼禁用期:賬戶有效期:保留字段)
/etc/group :組及其屬性信息
(組名:組密碼:組gid:組成員列表)
/etc/gshadow:組密碼及其相關屬性
(組名:加密的組密碼:組管理員:組成員列表)
補充:
/etc/shadow-
/etc/shadow 的備份文件。
注意,此文件由 shadow 工具集使用,而不是所有的用戶和密碼管理工具都會使用。
/etc/passwd
登錄名:用戶的登錄名,而且不應該包括大寫字母
加密密碼:是加密的用戶密碼、 星號 (*) 或 let‐ter 'x'。但是已經使用影子密碼存儲于shadow內
用戶UID:此用戶ID(UID)
組GID:此用戶主要組ID(GID)
注釋:"注釋字段" 此字段是可選的使用僅用于提供信息。通常情況下,它包含完整的用戶名。
家目錄:用戶的主目錄即家目錄,用戶的登錄的初始目錄位置,此處設置影響主目錄的環境變量
shell:用戶登錄時的shell程序類型,如果沒有就無法登陸,此處設置影響shell環境變量
/etc/shadow
登錄名:必須是有效的賬戶名,且已經存在于系統中。
加密密碼:不解釋,一般默認加密模式sha512
但是要注意如果密碼字段包含一些不是 crypt(3) 合法結果的字符,比如 ! 或 *,用戶將無法使用unix 密碼登錄(但是可以通過其它方法登錄系統)。此字段可以為空,此時認證為特定的登錄名時,不要求密碼。然而,一些讀取 /etc/shadow文件的應用程序,在密碼字段為空時,可能決定禁止任何訪問。以嘆號開始的密碼字段意味著密碼被鎖定。該行的剩余字符表示鎖定之前的密碼。
最后一次更改密碼的日期:最近一次更改密碼的時間,表示從1970年1月1日開始的天數。
0 有特殊意思,表示用戶應該在下次登錄系統時更改密碼。
空字段表示密碼年齡功能被禁用。
密碼的最小年齡:
最小密碼年齡是指,用戶一次更改密碼之后,要等多長時間才再次被允許更改密碼。
空字段或 0 表示沒有最小密碼年齡。隨時可以改密碼。
最大密碼年齡:
最大密碼年齡是指,這些天之后,用戶必須更改密碼。這些天之后,密碼仍然可用。用戶將會在下次登錄的時候被要求更改密碼。
99999 表示永不過期
空字段表示沒有最大密碼年齡,沒有密碼警告時間段,沒有密碼禁用時間段
如果最大密碼年齡小于最小密碼年齡,用戶將會不能更改密碼。
密碼警告時間段:
密碼過期之前,提前警告用戶的的天數。默認為一周
空字段或者 0 表示沒有密碼警告期。
密碼禁用期:
密碼過期后,仍然接受此密碼的天數(在此期間,用戶應該在下次登錄時修改密碼)。
密碼到期并且過了這個寬限期之后,使用用戶的當前的密碼將會不能登錄。用戶需要聯系系統管理員。
空字段表示沒有強制密碼過期。
賬戶過期日期:
賬戶過期的日期,表示從1970年1月1日開始的天數。
注意,賬戶過期不同于密碼過期。賬戶過期時,用戶將不被允許登錄;密碼過期時,用戶將不被允許使用其密碼登錄。
空字段表示賬戶永不過期。
應該避免使用 0,因為它既能理解成永不過期也能理解成在1970年1月1日過期。
保留字段:
此字段保留作將來使用。
/etc/group
主組名:group_name主要組名稱
密碼:加密密碼,如果此處為空則不需要密碼。
GID:主組ID
user_list:以此組為附加組的組成員列表,彼此之間用逗號隔開
/etc/gshadow
組名:必須是系統中已經存在的有效組。
加密密碼:注意如果密碼字段包含一些不是 crypt(3) 合法結果的字符,比如 ! 或 *,用戶將無法使用unix 密碼登錄此組。但是組內成員不需要密碼
此密碼用于不是此組成員的用戶獲取此組的權限。
此字段可以為空,此時,只有組成員可以獲取組權限。
以嘆號開始的密碼字段意味著密碼被鎖定。該行的剩余字符表示鎖定之前的密碼。
此密碼取代 /etc/group 中指定的任何密碼。
管理員
必須是一個逗號分隔的用戶名列表。
管理員可以更改組密碼和成員。
管理員也有成員一樣的權限
成員
必須是一個逗號分隔的附加組用戶名列表。
成員可以免密碼訪問組。
有關以上配置文件的命令
vipw和vigr:編輯密碼(passwd)、組(group)、影子密碼(shadow)或影子組文件(gshadow)。
vipw和vigr命令分別編輯 /etc/passwd 和 /etc/group 文件。使用 -s標識時,將編輯這些文件的影子版,即分別為 /etc/shadow 和/etc/gshadow。這些程序將設置相應的鎖,以防止文件損壞。尋找編輯器時,首先嘗試環境變量$VISUAL,然后是環境變量 $EDITOR,最后是默認編輯器 vi。
格式:
vipw [選項]
vigr [選項]
vipw 和 vigr 命令可以接受的選項有:
-g, –group
編輯 group 數據庫。vigr -g
-p, –passwd
編輯 passwd 數據庫。vipw -p
-q, –quiet
安靜模式。
-R, –rootCHROOT_DIR
應用 CHROOT_DIR 目錄中的更改,并使用 CHROOT_DIR 目錄中的配置文件。
-s, –shadow
編輯 shadow 或 gshadow 數據庫。
環境變量
VISUAL
要使用的編輯器。
EDITOR
VISUAL 沒有設置的情況下,使用的編輯器。
pwck
查用戶及其認證信息的完整性。它檢查 /etc/passwd 和 /etc/shadow格式正確、數據有效。將會提示用戶刪除格式不正確或者有其它錯誤的項。
格式:pwck [選項] [passwd [ shadow ]]
檢查的項目有:
· 正確的字段數
· 一個唯一且有效的用戶名
· 一個有效的用戶和組標識符
· 有效的主組
· 有效的主目錄
· 有效的登錄 shell
當指定第二個文件參數或 /etc/shadow 在系統中存在時,啟用 shadow 檢查。
這些檢查是:
· 每個密碼項都有對應的影子相,反之亦然。
· 密碼在影子化了的文件中指定
· 影子項有正確的字段數。
· 影子項在影子文件中是唯一的
· 最后一次的密碼更改時間不是被設成了一個將來的時間。
操作 /etc/passwd 文件的這些命令不能警告損壞或重復的條目,這些情況下,應該使用 pwck
來移除這寫有問題的條目。
選項
-r 和 -s 選項不能聯合使用。
pwck 選項可以接受的選項有:
-q, –quiet
只報告錯誤。不顯示那些不需要用戶操作的警告。
-r, –read-only
在只讀模式下執行 pwck。
-R, –rootCHROOT_DIR
用 CHROOT_DIR 目錄中的更改,并使用 CHROOT_DIR 目錄中的配置文件。
-s, –sort
根據 UID 在 /etc/passwd 和 /etc/shadow 對項目進行排序。
默認上,pwck 操作文件 /etc/passwd 和 /etc/shadow。用戶也可以使用 passwd 和 shadow參數來選擇替代文件。
配置文件
在 /etc/login.defs 中有如下配置變量,可以用來更改此工具的行為:
PASS_MAX_DAYS (number)
一個密碼可以使用的最大天數。如果密碼比這舊,將會強迫更改密碼。如果不指定,就假定為-1,這會禁用這個限制。
PASS_MIN_DAYS (number)
兩次更改密碼時間的最小間隔。將會拒絕任何早于此的更改密碼的嘗試。如果不指定,假定為-1,將會禁用這個限制。
PASS_WARN_AGE (number)
密碼過期之前給出警告的天數。0
表示只有只在過期的當天警告,負值表示不警告。如果沒有指定,不會給警告。
grpck:
驗證組信息的完整性。它檢查 /etc/group 和 /etc/gshadow 中的所有條目都具有正確的格式和包含有效數據。提示用戶要刪除的條目的格式不正確或有其他無法糾正的錯誤。
格式:grpck [選項] [group [ shadow ]]
檢查的項目有:
· 正確的字段數
· 一個唯一且有效的組名
· 有效的組標識符 (僅 /etc/group)
· 有效的成員和 管理員 列表。
選項
-r 和 -s 選項不能聯合使用。
grpck 可以接受的選項有:
-r, –read-only
在只讀模式下執行 grpck 命令。這會導致更改,無需用戶干預不回答有關的所有問題。
-R, –rootCHROOT_DIR
應用 CHROOT_DIR 目錄中的更改,并使用 CHROOT_DIR 目錄中的配置文件。
-s, –sort
根據 GID 在 /etc/group和 /etc/gshadow 中進行排序。
默認情況下,grpck 在 /etc/group 和 /etc/gshadow 上操作。用戶可以選擇使用組和陰影參數的備用文件。
配置文件
在 /etc/login.defs 中有如下配置變量,可以用來更改此工具的行為:
MAX_MEMBERS_PER_GROUP (number)
每個組條目的最大成員數。達到最大值時,在 /etc/group
開始一個新條目(行)(使用同樣的名稱,同樣的密碼,同樣的 GID)。
默認值是 0,意味著組中的成員數沒有限制。
此功能(分割組)允許限制組文件中的行長度。這對于確保 NIS 組的行比長于 1024 字符。
如果要強制這個限制,可以使用 25。
注意:分割組可能不受所有工具的支持(甚至在 Shadow工具集中)。您不應該使用這個變量,除非真的需要。
pwconv;pwunconv,grpconv;grpunconv
pwconv [選項]
pwunconv [選項]
grpconv [選項]
grpunconv [選項]
描述
pwconv 命令使用 passwd 以及可選并已經存在的 shadow 來創建 shadow。
pwunconv 命令使用 passwd 和 shadow 來創建 passwd,然后移除 shadow。
grpconv 從 group 和可能存在的 gshadow 創建 gshadow。
grpunconv 命令從 group 和 gshadow 創建 group,然后移除 gshadow。
這四個程序都可以操作普通或影子密碼和組文件:/etc/passwd,/etc/group,/etc/shadow/etc/gshadow。
轉換前,每個程序都會獲取需要的鎖。pwconv 和 grpconv
也類似。首先刪除,存在于在影子文件中,但在主文件中卻沒有的條目;然后,更新在主文件中不使用“x”作為密碼的影子條目,會添加所有缺失的條目;最后,將主文件中的密碼替換為“x”。這兩個工具可以用于初始轉換以及根據手動編輯的主文件更新影子文件。
pwconv 向 /etc/shadow 添加條目時,將使用/etc/login.defs 中的PASS_MIN_DAYS,PASS_MAX_DAYS 和 PASS_WARN_AGE 值。
pwunconv 和 grpunconv
與此類似。主文件中的密碼會根據影子文件更新。在主文件中存在,但不在影子文件中的條目單獨留下。最后,移除影子文件。一些密碼年齡信息會因為
pwunconv 而丟失。它只轉換它可以轉換的。
配置文件
/etc/login.defs 中的如下配置變量改變 grpconv 和 grpunconv 的行為:
MAX_MEMBERS_PER_GROUP (number)
每個組條目的最大成員數。達到最大值時,在 /etc/group
開始一個新條目(行)(使用同樣的名稱,同樣的密碼,同樣的 GID)。
默認值是 0,意味著組中的成員數沒有限制。
此功能(分割組)允許限制組文件中的行長度。這對于確保 NIS 組的行比長于 1024 字符。
如果要強制這個限制,可以使用 25。
注意:分割組可能不受所有工具的支持(甚至在 Shadow工具集中)。您不應該使用這個變量,除非真的需要。
/etc/login.defs 中的如下配置變量改變 pwconv 的行為:
PASS_MAX_DAYS (number)
一個密碼可以使用的最大天數。如果密碼比這舊,將會強迫更改密碼。如果不指定,就假定為 -1,這會禁用這個限制。
PASS_MIN_DAYS (number)
兩次更改密碼時間的最小間隔。將會拒絕任何早于此的更改密碼的嘗試。如果不指定,假定為 -1,將會禁用這個限制。
PASS_WARN_AGE (number)
密碼過期之前給出警告的天數。0
表示只有只在過期的當天警告,負值表示不警告。如果沒有指定,不會給警告。
文件
/etc/login.defs
Shadow 密碼套件配置。
三、用戶及組的管理命令:
useradd:創建一個新用戶或更新默認新用戶信息
格式 useradd [選項] 登錄
useradd -D
useradd -D [選項]
描述
如果使用時不帶 -D 選項,useradd
命令使用命令行上指定的值和系統的默認值創建一個新用戶。根據命令行選項,useradd
命令也會更新系統文件和創建新用戶的主目錄并復制初始文件。
默認上,也會為用戶創建組 (察看 -g, -N, -U,和 USERGROUPS_ENAB)。
選項
useradd 可以使用的選項有:
-b, –base-dirBASE_DIR
如果沒有使用 -dHOME_DIR,則使用默認的基目錄。BASE_DIR
加上賬戶名就是主目錄。如果沒有使用 -m 選項,BASE_DIR 必須已經存在。
如果選項沒有指定,useradd 將使用 /etc/default/useradd 中的 HOME 變量,或者默認的/home。
-c<備注>:加上備注文字。備注文字會保存在passwd的備注欄位中;
-d<登入目錄>:指定用戶登入時的啟始目錄;
-e<有效期限>:指定帳號的有效期限;
-f<緩沖天數>:指定在密碼過期后多少天即關閉該帳號;
-g<群組>:指定用戶所屬的群組;
-G<群組>:指定用戶所屬的附加群組;
-m:自動建立用戶的登入目錄;
-M:不要自動建立用戶的登入目錄;
-n:取消建立以用戶名稱為名的群組;
-r:建立系統帳號;
-s:指定用戶登入后所使用的shell;
-u:指定用戶id。
用戶登陸的 SELinux 用戶。默認為留空,這會造成系統選擇默認的 SELinux 用戶。
-D, –defaults
看下邊,“更改默認值”子節。
更改默認值
只帶 -D 選項使用時,useradd 將顯示當前的默認值。-D 和其它選項配合使用時,useradd
將為指定的選項更新默認值。有效的“更改默認值”選項有:
-b, –base-dirBASE_DIR
新用戶主目錄的路徑前綴。如果創建新賬戶時,沒有使用 -d 選項,用戶的名稱將會綴在BASE_DIR 的后邊形成新用戶的主目錄名。
這個選擇在 /etc/default/useradd 中設置 HOME 選項。
-e, –expiredateEXPIRE_DATE
禁用此用戶賬戶的日期。
此選項在 /etc/default/useradd 中設置 EXPIRE 變量。
-f, –inactiveINACTIVE
密碼過期到賬戶被禁用之前的天數。
這個選項在 /etc/default/useradd 中設置 INACTIVE 變量。
-g, –gidGROUP
新用戶初始組的組名或 ID (使用了 -N/–no-user-group 或者 /etc/login.defs 中的變量USERGROUPS_ENAB 設置為 no 時)。給出的組必須存在,并且數字組 ID
必須有一個已經存在的項。
這個選項在 /etc/default/useradd 中設置 GROUP 變量。
-s, –shellSHELL
新用戶的登錄 shell 名。
這個選項在 /etc/default/useradd 設置 SHELL 變量。
注意:
系統管理員負責將默認的用戶文件放在 /etc/skel/
目錄中(或者命令行上、/etc/default/useradd 中指定的任何其它目錄)。
CAVEATS
您可能不能想 NIS 組或 LDAP 組添加用戶。這只能在相應服務器上進行。
相似地,如果用戶名已經存在于外部用戶數據庫中,比如 NIS 或 LDAP,useradd
將拒絕創建用戶賬戶的請求。
用戶名必須以一個小寫字母或下劃線開始,跟隨小寫字符、數字、下劃線或連字符的組合??梢砸悦涝柦Y束。用正則表達式表示就是:[a-z_][a-z0-9_-]*[$]?
用戶名不能超過 32 個字符長。
配置文件
在 /etc/login.defs 中有如下配置變量,可以用來更改此工具的行為:
CREATE_HOME (boolean)
指示是否應該為新用戶默認創建主目錄。
此設置并不應用到系統用戶,并且可以使用命令行覆蓋。
GID_MAX (number), GID_MIN (number)
useradd,groupadd 或 newusers 創建的常規組的組 ID 的范圍。
GID_MIN 和 GID_MAX 的默認值分別是 1000 和 60000。
MAIL_DIR (string)
郵箱目錄。修改或刪除用戶賬戶時需要處理郵箱,如果沒有指定,將使用編譯時指定的默認值。
MAIL_FILE (string)
定義用戶郵箱文件的位置(相對于主目錄)。
MAIL_DIR and MAIL_FILE 變量由 useradd,usermod 和 userdel
用于創建、移動或刪除用戶郵箱。
如果 MAIL_CHECK_ENAB 設置為 yes,它們也被用于定義 MAIL 環境變量。
MAX_MEMBERS_PER_GROUP (number)
每個組條目的最大成員數。達到最大值時,在 /etc/group
開始一個新條目(行)(使用同樣的名稱,同樣的密碼,同樣的 GID)。
默認值是 0,意味著組中的成員數沒有限制。
此功能(分割組)允許限制組文件中的行長度。這對于確保 NIS 組的行比長于 1024 字符。
如果要強制這個限制,可以使用 25。
注意:分割組可能不受所有工具的支持(甚至在 Shadow
工具集中)。您不應該使用這個變量,除非真的需要。
PASS_MAX_DAYS (number)
一個密碼可以使用的最大天數。如果密碼比這舊,將會強迫更改密碼。如果不指定,就假定為-1,這會禁用這個限制。
PASS_MIN_DAYS (number)
兩次更改密碼時間的最小間隔。將會拒絕任何早于此的更改密碼的嘗試。如果不指定,假定為-1,將會禁用這個限制。
PASS_WARN_AGE (number)
密碼過期之前給出警告的天數。0
表示只有只在過期的當天警告,負值表示不警告。如果沒有指定,不會給警告。
SYS_GID_MAX (number), SYS_GID_MIN (number)
useradd、groupadd 或 newusers 創建的系統組的組 ID 的范圍。
SYS_GID_MIN 和 SYS_GID_MAX 的默認值分別是 101 和 GID_MIN-1。
SYS_UID_MAX (number), SYS_UID_MIN (number)
useradd 或 newusers 創建的系統用戶的用戶 ID 的范圍。
SYS_UID_MIN 和 SYS_UID_MAX 的默認值分別是 101 和 UID_MIN-1。
UID_MAX (number), UID_MIN (number)
useradd 或 newusers 創建的普通用戶的用戶 ID 的范圍。
UID_MIN 和 UID_MAX 的默認值分別是 1000 和 60000。
UMASK (number)
文件模式創建掩碼初始化為此值。如果沒有指定,掩碼初始化為 022。
useradd 和 newusers 使用此掩碼設置它們創建的用戶主目錄的模式。
也被 login 用于指定用戶的初始 umask。注意,此掩碼可以被用戶的 GECOS
行覆蓋(當設置了 QUOTAS_ENAB 時),也可以被帶 K 指示符的 limits(5)
定義的限制值覆蓋。
USERGROUPS_ENAB (boolean)
如果 uid 和 gid 相同,用戶名和主用戶名也相同,使非 root 組的組掩碼位和屬主位相同(如:022 -> 002, 077 -> 007)。
如果設置為 yes,如果組中沒有成員了,userdel 將移除此用戶組,useradd
創建用戶時,也會創建一個同名的默認組。
文件
/etc/default/useradd
賬戶創建的默認值。
/etc/skel/
包含默認文件的目錄。
/etc/login.defs
Shadow 密碼套件配置。
usermod:修改一個用戶賬戶;修改系統賬戶文件和在命令行上指定的相關更改。
格式:usermod [選項] 登錄名
選項
-a, –append
將用戶添加到附加組。只能和 -G 選項一起使用。
-c, –commentCOMMENT
用戶密碼文件中注釋字段的新值。通常使用 chfn工具對其進行修改。
-d, –homeHOME_DIR
用戶的新登錄目錄。
如果給了 -m 選項,當前主目錄的內容將會移動到新主目錄中,如果不存在,則創建。
-e, –expiredateEXPIRE_DATE
用戶賬戶將被禁用的日期。日期以 YYYY-MM-DD 格式指定。
空 EXPIRE_DATE 參數將禁用賬戶過期。
此選項需要一個 /etc/passwd 文件。如果沒有,將會創建一條 /etc/shadow 項目。
-f, –inactiveINACTIVE
密碼過期之后,賬戶被徹底禁用之前的天數。
0 表示密碼過期時,立即禁用賬戶;-1 表示不使用這個功能。
此選項需要一個 /etc/passwd 文件。如果沒有,將會創建一條 /etc/shadow 項目。
-g, –gidGROUP
用戶的新初始登錄組的組名或數字代號。此組必須存在。
用戶主目錄中,屬于原來的主組的文件將轉交新組所有。
主目錄之外的文件所屬的組必須手動修改。
-G, –groupsGROUP1[,GROUP2,…[,GROUPN]]]
用戶還屬于的附加組列表。組之間使用逗號分隔,沒有空格。這些組需要遵守和 -g
選項中給的組同樣的限制。
如果用戶當前是一個組的成員,而這個組沒有列在這里,用戶將被從那個組里便刪除。這個行為可以通過-a 選項修改,這使用戶追加到給出的附加組列表中。
-l, –loginNEW_LOGIN
用戶的名稱將會從 LOGIN 修改為
NEW_LOGIN。不會更改別的任何東西。特別是,用戶的主目錄名和郵件池也需要手動修改以和新登錄名對應。
-L, –lock
鎖定用戶的密碼。這會在用戶加密的密碼之前放置一個“!”,可以快速禁用密碼。您可以和-p 或 -U 配合使用此選項。
注意:如果希望鎖定賬戶(不僅僅是通過密碼訪問),您也需要設置EXPIRE_DATE為1。
-m, –move-home
將用戶的主目錄移動到新位置。
這個選項只有和 -d (或 –home) 選項組合使用時才有效。
usermod 會改寫文件的屬主并復制模式、ACL 和擴展屬性,但是稍后也可能需要手動修改。
-o, –non-unique
使用 -u 選項時,可以將用戶 ID 改為非唯一的值。
-p, –passwordPASSWORD
已經加密過的密碼,就像 crypt(3) 返回的那樣。
注意:不推薦使用這個選項,因為密碼(或加密過的密碼)會被用戶通過列出這個過程而看到。您應該確保密碼符合系統的密碼政策。
-R, –rootCHROOT_DIR
Apply changes in the CHROOT_DIR directory and use the configuration files fromthe CHROOT_DIR directory.
-s, –shellSHELL
用戶的新登錄 shell 的名稱。將此字段設置為空會讓系統選擇默認的登錄 shell。
-u, –uidUID
用戶 ID 的新數值。
這個值必須是唯一的,除非使用了 -o 選項,必須是非負值。
用戶的郵箱,用戶主目錄中屬于此用戶的文件的屬主 ID 也將自動更改。
用戶主目錄之外文件所有權必須手動修復。
不會對 /etc/login.defs 中的 UID_MIN, UID_MAX, SYS_UID_MIN 和 SYS_UID_MAX進行檢查。
-U, –unlock
解鎖用戶的密碼。這將移除加密的密碼之前的“!”。您可以將此選項和 -p 或 -L 配合使用。
注意:如果您希望解鎖賬戶(不只是使用密碼訪問),您也應該設置 EXPIRE_DATE(例如設置為 99999,或者 /etc/default/useradd 中的 EXPIRE 值)。
-Z, –selinux-userSEUSER
用戶登陸的 SELinux 用戶。
空的 SEUSER 將移除用戶 LOGIN 的 SELinux 用戶映射(如果有)。
CAVEATS
如果要更改用戶的數字
ID、用戶名或主目錄,需要確保允許命令時,用戶沒有執行任何進程。usermod 會在 Linux
上進行檢查;但是在其它平臺上,僅僅根據 utmp 檢查用戶是否已經登錄。
您必須手動更改 crontab 文件或 at 作業的屬主。
您必須更改 NIS 服務器上的 NIS 相關內容。
配置文件
在 /etc/login.defs 中有如下配置變量,可以用來更改此工具的行為:
MAIL_DIR (string)
郵箱目錄。修改或刪除用戶賬戶時需要處理郵箱,如果沒有指定,將使用編譯時指定的默認值。
MAIL_FILE (string)
定義用戶郵箱文件的位置(相對于主目錄)。
MAIL_DIR and MAIL_FILE 變量由 useradd,usermod 和 userdel
用于創建、移動或刪除用戶郵箱。
如果 MAIL_CHECK_ENAB 設置為 yes,它們也被用于定義 MAIL 環境變量。
MAX_MEMBERS_PER_GROUP (number)
每個組條目的最大成員數。達到最大值時,在 /etc/group
開始一個新條目(行)(使用同樣的名稱,同樣的密碼,同樣的 GID)。
默認值是 0,意味著組中的成員數沒有限制。
此功能(分割組)允許限制組文件中的行長度。這對于確保NIS組的行比長于1024字符。
如果要強制這個限制,可以使用 25。
注意:分割組可能不受所有工具的支持(甚至在 Shadow工具集中)。您不應該使用這個變量,除非真的需要。
userdel:刪除用戶賬戶和相關文件
userdel [OPTIONS] login_name
-f, –force 此選項強制刪除用戶賬戶,甚至用戶仍然在登錄狀態。它也強制userdel刪除用戶的主目錄和郵箱,即使其它用戶也使用同一個主目錄或郵箱不屬于指定的用戶。如果/etc/login.defs 中的 USERGROUPS_ENAB 定義為yes,并且如果有一個和用戶同名的組,也會刪除此組,即使它仍然是別的用戶的主組。
注意:此選項危險,可能會破壞系統的穩定性。
-r, –remove 用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除。在其它文件系統中的文件必須手動搜索并刪除。郵箱在 login.defs 文件中的 MAIL_DIR 變量中定義。 -Z, –selinux-user 移除用戶登錄的所有 SELinux 用戶映射。
newusers:批量更新和創建新用戶
newusers [選項] [文件]
添加格式:
pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
-r, –system 創建一個系統賬戶。
chpasswd:批量更新密碼
chpasswd [選項]
添加格式 user_name:password
newusers chpasswd可用文本文件按照格式編輯好添加的內容,然后用管道輸出重定向至以上兩者命令
groupadd:創建添加一個新組
groupadd [OPTIONS] group_name
-g, –gidGID:指定GID,如果不指定默認是上一個組的GID+1
-r, –system 創建一個系統組。
groupmod:修改系統上的組屬性
groupmod [OPTIONS] GROUP_NAME
-g, –gidGID:修改GID
-n, –new-nameNEW_GROUP:修改組名:組的名稱將轉為 NEW_GROUP 名稱的組
-o, –non-unique 當使用-g 選項,允許 GID 組更改為非唯一值。
-p, –passwordPASSWORD
已經加密過的密碼,就像 crypt(3) 返回的那樣。
注意:不推薦使用這個選項,因為密碼(或加密過的密碼)會被用戶通過列出這個過程而看到。
您應該確保密碼符合系統的密碼政策。
groupdel:刪除一個組
groupdel [OPTIONS] GROUP_NAME
groupmems:用戶主組的管理員成員
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
-a, –adduser_name 將一個用戶添加到組成員列表。
-d, –deleteuser_name
從組成員列表中刪除用戶。如果 /etc/gshadow 文件存在,用戶將會被從組成員和管理員中移除。
-g, –groupgroup_name
超級用戶可以指定修改哪個組的組成員列表。
-l, –list
列出組成員。
-p, –purge
從組成員列表中刪除所有用戶。
groups:顯示用戶的組
groups [OPTION]… [USERNAME]…
passwd:修改用戶密碼
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
(1)passwd:修改用戶自己的密碼
(2)passwd USERNAME:修改指定用戶的密碼,但僅root有此權限
-l,-u:鎖定和解鎖用戶
-d:清除用戶密碼串
-e DATE:過期期限,日期
-i DAYS:非活動期限
-n DAYS:密碼的最短使用期限
-x DAYS:密碼的最長使用期限
-w DAYS:警告期限
–stdin:
echo "PASSWORD" | passwd –stdin USERNAME
對用戶的鎖定其實就是在密碼位的首部加 ! 默認剛剛添加的用戶有兩個 ! ;linux系統中原則上是不允許空密碼登錄的,而如果在/etc/shadow中將嘆號 ! 刪掉,并把密碼也都刪掉的話,就可以空密碼登錄了,Centos5以前的版本用解鎖命令兩次就是相當于將!!全部刪掉而可以空密碼登錄,后期6、7版本就禁止了這種操作,但是修改passwd數據庫文件/etc/shadow還是能夠達到效果,但是建議不要怎么用
gpasswd:新建修改組密碼
組密碼文件:/etc/gshadow
gpasswd [OPTIONS] group
-a:添加用戶到組;
-d:從組刪除用戶;
-A:指定管理員;
-M:指定組成員和-A的用途差不多;
-r:刪除密碼;
-R:限制用戶登入組,只有組中的成員才可以用newgrp加入該組。
newgrp:臨時切換指定的組為基本組
newgrp [-] [group]
-:會模擬用戶重新登錄以實現重新初始化其工作環境
chage:更改用戶密碼過期信息
chage [OPTIONS] login_name
-m:密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M:密碼保持有效的最大天數。
-w:用戶密碼到期前,提前收到警告信息的天數。
-E:帳號到期的日期。過了這天,此帳號將不可用。
-d:上一次更改的日期。
-i:停滯時期。如果一個密碼已過期這些天,那么此帳號將不可用。
-l:例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。
chsh:改變用戶登錄的shell類型
chsh [-s shell] [-l] [-u] [-v] [username]
-s或–shell:更改系統預設的shell環境。
-l或–list-shells:列出目前系統可用的shell清單;
finger:用戶信息查找程序
包括本地與遠端主機的用戶皆可,帳號名稱沒有大小寫的差別。單獨執行finger指令,它會顯示本地主機現在所有的用戶的登陸信息,包括帳號名稱,真實姓名,登入終端機,閑置時間,登入時間以及地址和電話。
finger [-lmsp] [user …] [user@host …]
-l:列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的Shell,登入時間,轉信地址,電子郵件狀態,還有計劃文件和方案文件內容;
-m:排除查找用戶的真實姓名;
-s:列出該用戶的帳號名稱,真實姓名,登入終端機,閑置時間,登入時間以及地址和電話;
-p:列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的Shell,登入時間,轉信地址,電子郵件狀態,但不顯示該用戶的計劃文件和方案文件內容。
不指定finger的選項如果提供操作者的話,缺省設為-l輸出風格,否則為-s風格,注意在兩種格式中,如果信息不足,都有一些域可能丟失,如果沒有指定參數finger會為當前登錄的每個用戶打印一個條目。
如果要查詢遠程機上的用戶信息,需要在用戶名后面接@主機名,采用用戶名@主機名的格式,不過要查詢的網絡主機需要運行finger守護進程的支持。
chfn:改變finger信息,這些信息都存放在/etc目錄里的passwd文件里。若不指定任何選項,則chfn命令會進入問答式界面。
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
-f<真實姓名>或–full-name<真實姓名>:設置真實姓名;
-h<家中電話>或–home-phone<家中電話>:設置家中的電話號碼;
-o<辦公地址>或–office<辦公地址>:設置辦公室的地址;
-p<辦公電話>或–office-phone<辦公電話>:設置辦公室的電話號碼;
id:顯示用戶UID、GID、組列表
id [OPTION]…[USER]
-u:僅顯示有效的UID
-g:僅顯示用戶的基本組ID
-G:僅顯示用戶所屬的所有組的ID
-n:顯示名字而非ID
su:switch user
登錄式切換:會通過讀取目標用戶的配置文件來重新初始化
su – USERNAME
su -l USERNAME
非登錄式切換:不會讀取目標用戶的配置文件進行初始化
su USERNAME
注意:管理員可無密碼切換至其它任何用戶
-c 'COMMAND':僅以指定用戶的身份運行此處指定的命令,并不切換用戶
uname:顯示系統信息(內核版本號、硬件架構、主機名稱和操作系統類型等)
uname [OPTION]…
-a或–all:顯示全部的信息;
-m或–machine:顯示電腦類型;
-n或-nodename:顯示在網絡上的主機名稱;
-r或–release:顯示操作系統的發行編號;
-s或–sysname:顯示操作系統名稱;
-v:顯示操作系統的版本;
-p或–processor:輸出處理器類型或"unknown";
-i或–hardware-platform:輸出硬件平臺或"unknown";
-o或–operating-system:輸出操作系統名稱;
四、文件權限
進程由發起者身份運行,進程訪問文件的權限,由發起此進程的用戶身份權限決定
用ls -l 查看文件我們會發現信息的首部會出現以下類似信息
-rw-r–r– 1 root root 26195 Dec 17 10:42 install.log
權限位 引用計數 所用者 主組 大小 最后修改數據時間 文件名
(硬連接)(owner) (group) (默認單位字節)
rwxrwxrwx:
左三位:定義user(owner)的權限
中三位:定義group的權限
右三位:定義ohter的權限
進程安全上下文:
進程對文件的訪問權限應用模型:
進程的屬主與文件的屬主是否相同,如果相同,則應用屬主權限
否則,則檢查進程的屬主是否屬于文件的屬組,如果是,則應用屬組權限;
否則,就只能應用other的權限
owner: 屬主, u
group: 屬組, g
other: 其他, o
權限類型:
r:readable,讀
w:writable,寫
x:excutable,執行
文件:
r:可獲取文件的數據
w:可修改文件的數據
x:可將此文件運行為進程,一般情況下文件是不應該有此權限的
目錄:
r:可使用ls命令獲取其下的所有文件列表,但是不能使用ls -l獲取詳細屬性信息
w:可修改此目錄下的文件列表,即創建或刪除文件
x:可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息
mode:rwxrwxrwx
ownership:user,group
權限組合機制:
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
權限管理命令:
chmod命令:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… –reference=RFILE FILE…
三類用戶:
u:屬主
g:屬組
o:其它
a:所有
(1)chmod [OPTION]… MODE[,MODE]… FILE…
MODE表示法:
賦權表示法:一次性直接操作一類用戶的所有權限位rwx
u=
g=
o=
a=
授權表示法:一次性直接操作一類用戶的一個或多個權限位r,w,x
u+,u-
g+,g-
o+,o-
a+,a-(可以省略a)
都+w只對root管理員有效??!
(2)chmod [OPTION]… OCTAL-MODE FILE…
chmod 660 FILE
rw-rw—-
chmod 66 FILE
—rw-rw-
chmod 6 FILE
——rw-
因此最好是3位
(3)chmod [OPTION]… –reference=RFILE FILE…
例如
chmod –reference=/var/log/messages fstab
選項:
-R,–recursive:遞歸修改
對目錄修改時非常有用
從屬關系管理命令:chown,chgrp
chown 命令:
chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [OPTION]… [OWNER][.[GROUP]] FILE…
chown [OPTION]… –reference=RFILE FILE…
選項:
-R,–recursive:遞歸修改
注意:用戶僅能修改屬主為自己的那些文件的權限
chgrp命令:
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
注意:僅管理員可修改文件的屬主和屬組
uamsk:文件的權限反向掩碼,遮罩碼;umask值可以用來保留在創建文件權限
新建FILE 權限: 666-umask
如果所得結果某位存在執行(奇數)權限,則將其權限+1,偶數位保留
新建DIR 權限: 777-umask
非特權用戶umask是 002
root 的umask 是 022
umask的值越大,代表著創建文件時默認的權限越小,由于root管理員的特殊性,為了避免其創建的敏感文件權限過大,所以linux系統默認情況下root用戶的umask值比普通用戶的大
注意:之所以文件用666去減,表示文件默認不能擁有執行權限,如果減得的結果中有執行權限,則需要將其加1
umask:023
666-023=644(643+1)
777-023=754
umask命令:
umask:查看當前umask
umask MASK:設置umask
注意:此類設定僅對當前shell進程有效
如果要永久有效則配置到以下文件中
全局設置: /etc/bashrc 用戶設置:~/.bashrc
Linux 文件系統上的特殊權限
SUID, SGID, Sticky
三種常用權限:r, w, x user, group, other
安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
可執行文件上SUID 權限
任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
啟動為進程之后,其進程的屬主為原程序文件的屬主
SUID 只對二進制可執行程序有效
SUID 設置在目錄上無意義
權限設定:
chmod u+s FILE…
chmod u-s FILE…
可執行文件上SGID 權限
任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限
啟動為進程之后,其進程的屬主為原程序文件的屬組
權限設定:
chmod g+s FILE…
chmod g-s FILE…
目錄上的SGID 權限
默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組
一旦某目錄被設定了SGID ,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組
通常用于創建一個協作目錄
權限設定:
chmod g+s DIR…
chmod g-s DIR.
Sticky 位
具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權
在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件
sticky 設置在文件上無意義
權限設定:
chmod o+t DIR…
chmod o-t DIR…
權限位映射
SUID: user, 占據屬主的執行權限位
s: 屬主擁有x 權限
S :屬主沒有x 權限
SGID: group, 占據屬組的執行權限位
s: group 擁有x 權限
S :group 沒有x 權限
Sticky: other, 占據other 的執行權限位
t: other 擁有x 權限
T :other 沒有x
chattr
lsattr
訪問控制列表
ACL :Access Control List ,實現靈活的權限管理
除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
CentOS7.0 默認創建的xfs 和ext4 文件系統有ACL 功能。
CentOS7.X 之前版本,默認手工創建的ext4 文件系統無ACL
功能。需手動增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt
ACL 生效 順序:所有者,自定義用戶,自定義組,其他人
ACL 文件上的group 權限是mask 值(自定義用戶,自定義組,擁有組的最大權限), 而非 傳統的組權限
getfacl 可看到特殊權限:flags
默認ACL 權限給了x ,文件也不會繼承x 權限。
base ACL 不能刪除
setfacl -k dir 刪除默認ACL 權限
setfacl -b file1 清除所有ACL 權限
getfacl file1 | setfacl –set-file=- file2 復制file1的acl 權限給file2
mask 只影響除所有者和other 的之外的人和組的最大權限
Mask 需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)
用戶或組的設置必須存在于mask 權限設定 范圍內才會 生效。
setfacl -m mask::rx file
–set 選項會把原有的ACL 項都刪除,用新的替代,需要注意的是一定要包含UGO 的設置,不能象-m 一樣只是添加ACL 就可以.
如:
setfacl –set u::rw,u:wang:rw,g::r,o::- file1
備份和恢復ACL
主要的文件操作命令cp 和mv 都支持ACL ,只是cp 命令需要加上-p 參數。但是tar 等常見的備份工具是不會保留目錄和文件的ACL 信息
#getfacl -R /tmp/dir1 > acl.txt
#setfacl -R -b /tmp/dir1
#setfacl -R –set-file=acl.txt /tmp/dir1
#getfacl -R /tmp/dir1
getfacl:獲取顯示文件的訪問控制列表
getfacl [-aceEsRLPtpndvh] file …
getfacl [-aceEsRLPtpndvh] –
setfacl:設置文件訪問控制列表
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file …
setfacl –restore=file
-b,–remove-all:刪除所有擴展的acl規則,基本的acl規則(所有者,群組,其他)將被保留。
-k,–remove-default:刪除缺省的acl規則。如果沒有缺省規則,將不提示。
-n,–no-mask:不要重新計算有效權限。setfacl默認會重新計算ACL mask,除非mask被明確的制定。 –mask:重新計算有效權限,即使ACL mask被明確指定。
-d,–default:設定默認的acl規則。 –restore=file:從文件恢復備份的acl規則(這些文件可由getfacl -R產生)。通過這種機制可以恢復整個目錄樹的acl規則。此參數不能和除–test以外的任何參數一同執行。
–test:測試模式,不會改變任何文件的acl規則,操作后的acl規格將被列出。
-R,–recursive:遞歸的對所有文件及目錄進行操作。
-L,–logical:跟蹤符號鏈接,默認情況下只跟蹤符號鏈接文件,跳過符號鏈接目錄。
-P,–physical:跳過所有符號鏈接,包括符號鏈接文件。
原創文章,作者:NameLess,如若轉載,請注明出處:http://www.www58058.com/30524
文章整體架構清晰,對用戶,組及權限管理有了很好的歸納總結。