在Linux系統中每一個檔案都具有“所有者與所屬使用者組”屬性,那麼下面我們就來簡單介紹一下所有者與所屬使用者組。
在Linux系統中每一個檔案都具有“所有者與所屬使用者組”屬性,那麼下面我們就來簡單介紹一下所有者與所屬使用者組。
☆所有者即使用者(Username/UID),),使用者分為管理者使用者和普通使用者。
管理者使用者:
名稱:一般為root uid:0
普通使用者(uid範圍:1-65535):
1、 系統使用者:名稱可以随便定,使用者的uid為1-499(centos6及之前版本), 1-999 (centos7)
主要使用者對守護程序擷取資源進行權限配置設定
2、登入使用者:名稱可以随便定,使用者id為500+(centos6及之前版本),1000+(centos7)
互動式登入
☆所屬使用者組即使用者組(Groupname/GID),,一般分為使用者的主要組和使用者的附加組:
1、使用者的主要組:即主組,使用者有且隻有一個主組,組名同使用者名,且僅包含一個使用者:私有組
2、使用者的附加組:使用者可以屬于零個或多個附加組
☆Linux中使用者群組的配置檔案:
/etc/passwd :使用者及其屬性資訊( 名稱、UID 、主組ID 等)
[root@localhost 192 01:21:51 ~]#vim /etc/passwd
root:x:0:0:he,he room,110,119:/root:/bin/bash
通我們以root賬戶為例,通過上述我們可以看到在/etc/passwd中儲存使用者資訊的格式為:
login name :登入用名(root)
passwd :密碼 (x)
UID号 :使用者身份編号 (0)
GID :登入預設所在組編号 (0)
GECOS :使用者全名或注釋
home directory錄 :使用者主目錄 (/root)
shell :使用者預設使用shell (/bin/bash)
/etc/group :組及其屬性資訊
[root@localhost 193 01:33:38 ~]#vim /etc/group
root:x:0:laohe,h
通我們以root賬戶為例,通過上述我們可以看到在/etc/group中儲存組的資訊格式為:
組名:root
組密碼:x
GID:0
組成員:laohe,h
/etc/shadow :使用者密碼及其相關屬性
[root@localhost 194 01:38:43 ~]#vim /etc/shadow
root:$6$FJtMrUTBaszVAjxz$aZZV4WPVkd4mfXTkClcdUXlUF0HVliKOdx35vnyqtoigcleA3.C76aaLHO/7Ev5qLKQoM7e4OASjy6PnZ.tWJ.:17316:0:99999:7:::
通我們以root賬戶為例,通過上述我們可以看到在/etc/shadow存使用者密碼資訊的格式為:
login name:登入用名(root)
加密方式:一般用sha512 加密(6)
salt:俗稱為"鹽",$FJtMrUTBaszVAjxz$
加密密碼:aZZV4WPVkd4mfXTkClcdUXlUF0HVliKOdx35vnyqtoigcleA3.C76aaLHO/7Ev5qLKQoM7e4OASjy6PnZ.tWJ.
更改密碼時間:從1970 年1 月1 日起到密碼最近一次被更改的時間(17316)
可改密時間:密碼再過幾天可以被變更(0 表示随時可被變更)
密碼多久過期:密碼再過幾天必須被變更(99999 表示永不過期)
提醒時間:密碼過期前幾天系統提醒使用者(預設為一周)
後面的::資訊沒有,留做備用
/etc/gshadow :組密碼及其相關屬性
通我們以root賬戶為例,通過上述我們可以看到在/etc/gshadow中的使用者組資訊:
[root@localhost 195 01:55:34 ~]#vim /etc/gshadow
root:::laohe,h
組名: 是使用者組的名稱,由字母或數字構成(root)
密碼:使用者組密碼,這個段可以是空的或!,如果是空的或有!,表示沒有密碼
組管理者:這個字段也可為空,如果有多個使用者組管理者,用,号分割
組内使用者清單:如果有多個成員,用,号分割(laohe,h)
☆常用的使用者管理指令:useradd、usermod、userdel
1、useradd [options] LOGIN (建立使用者)
-u UID : 用于指定使用者的uid
-o 配合-u 選項,不檢查UID 的唯一性
-g GID :指明使用者所屬基本組,可為組名,也可以GID
-c "COMMENT" :使用者的注釋資訊
-d HOME_DIR: 以指定的路徑( 不存在) 為家目錄
-s SHELL : 指明使用者的預設shell 程式
-G GROUP1[,GROUP2,...] :為使用者指明附加組,組須事先存在
-N 不建立私用組做主組,使用users 組做主組
-r: 建立系統使用者 CentOS 6: ID<500 ,CentOS 7: ID<1000
19
2、usermod [OPTION] login (修改使用者資訊)
-u UID: 新UID
-g GID: 新 新 主 組
-G GROUP1[,GROUP2,...[,GROUPN]]] :新附加組(原來的
附加組将會被覆寫;若保留原有,則要同時使用-a 選項)
-s SHELL :新的預設SHELL
-c 'COMMENT' :新的注釋資訊
-d HOME: 新家目錄不會自動建立;若要建立新家目錄并移
動原家資料,同時使用-m 選項
-l login_name: 新的名字
3、userdel [OPTION]... login 删除使用者
-r: 删除使用者 家目錄
☆常用的組管理指令:groupadd、groupmod、groupdel
1、groupadd [OPTION]... group_name 建立組
-g GID: 指明GID 号;
-r: 建立系統組(CentOS 6: ID<500,CentOS 7: ID<1000)
2、groupmod [OPTION]... groupname 修改組
-n group_name: 新名字
-g GID: 新的GID
3、groupdel GROUPNAME 删除組(組裡有成員則不可删)
☆檢視和修改密碼:
1、檢視使用者:ID
id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示使用者所屬的組的ID
-n: 顯示名稱,需配合ugG
passwd [OPTIONS] UserName: 修改指定使用者的密碼(僅管理者可用)
passwd: 修改自己的密碼
常用選項:
-l: 鎖定指定使用者
-u: 解鎖指定使用者
-e: 強制使用者下次登入修改密碼
-n mindays: 指定最短使用期限
-x maxdays :最大使用期限
-w warndays :提前多少天開始警告
-i inactivedays :非活動期限
--stdin :從标準輸入接收使用者密碼
echo " PASSWORD " | passwd --stdin USERNAME
2、組:
groups [OPTION].[USERNAME]... 檢視使用者所屬組清單
groupmems [options] [action]
options: :
-g, --group groupname 組 更改為指定組 ( 隻有root)
Actions:
-a, --add username 指定使用者加入組
-d, --delete username 從組中删除使用者
-p, --purge 從組中清除所有成員
-l, --list 顯示組成員清單
☆權限
在我們使用檔案和目錄的時候會涉及到一個很重要的問題那就是權限,一般來說權限分為:讀(r)、寫(w)、執行(x)。這裡我們以檔案為例:
[root@localhost 217 03:17:31 ~]#ll initial-setup-ks.cfg
-rw-r--r--. 1 root root 1721 May 17 14:51 initial-setup-ks.cfg
-rw-r--r--即為檔案的權限
1為檔案的引用計數
第一個root為所有者(屬主)
第二個root為所屬組
1727為檔案的大小
May 17 14:51 檔案的建立時間
initial-setup-ks.cfg 為檔案名
檔案的權限主要針對三類對象進行定義:
owner: 屬主, u
group: 屬組, g
other: 其他, o
每個檔案針對每類通路者都定義了三種權限:
r: Readable
w: Writable
x: eXcutable
X為隻給目錄不給檔案
在Linux中的數字表示法中,r表示4,w表示2,x表示1.
1、修改檔案的屬主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
-R: 遞歸
chown [OPTION]... --reference=RFILE FILE...
2、修改檔案的屬組:chgrp
模式法:
chgrp [OPTION]... GROUP FILE...
chmod [OPTION]... MODE[,MODE]... FILE...
MODE: :
修改一類使用者的所有權限:
u= g= o= ug= a= u=,g=
修改一類使用者某位或某些位權限
u+ u- g+ g- o+ o- a+ a- + -
chmod [OPTION]... --reference=RFILE FILE...(FILE複制RFILE的權限)
數字法:
chmod 權限值 file
☆Linux中的特殊權限:SUID SGID Sticky
1、SUID: 隻對二進制可執行程式有效,對目錄無意義。檔案啟動後啟動程式者相當于繼承之前這個程式的所有者的權限來使用這個程式
文法:
chmod u+s FILE...
chmod u-s FILE...
2、SGID:
對檔案而言,啟動程序後,其程序的屬主為原程式檔案的屬組
chmod g+s FILE...
chmod g-s FILE...
對目錄而言,一旦某目錄被設定了SGID ,則對此目錄有寫權限的使用者在此
目錄中建立的檔案所屬的組為此目錄的屬組
chmod g+s DIR...
chmod g-s DIR...
3、Sticky:
目錄設定Sticky 位,隻有檔案的所有者或root可以删除該檔案
chmod o+t DIR...
chmod o-t DIR...
☆ACL
1、ACL :Access Control List ,實作靈活的權限管理
2、功能:除了傳統的指令能對使用者、屬組、其他人産生限制外,這個指令可以對更多的使用者設定權限。
3、生效順序:所有者、自定義使用者、自定義組、其他人
4、centos7預設的檔案系統才有ACL功能,centos7之前的版本設定預設建立ext4檔案可以手動添加。
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
5、ACL 檔案上的group 權限是mask 值(自定義使用者,自定義組,擁有組的最大權限), 而非傳統的組權限。mask 隻影響除所有者和other 的之外的人群組的最大權限。Mask 需要與使用者的權限進行邏輯與運算後,才能變成有限的權限(Effective Permission),使用者或組的設定必須存在于mask 權限設定 範圍内才會生效。
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ..
常用指令:
getfacl a file 檢視檔案的ACL權限
setfacl -k dir 删除預設ACL 權限
setfacl –b file1 清除所有ACL 權限
getfacl file1 | setfacl --set-file=- file2 複制file1的 的acl 權限給file2