1. 程式人生 > >用戶和組管理權限及文件訪問控制

用戶和組管理權限及文件訪問控制

用戶和組管理權限及文件訪問控制

用戶和組管理權限及文件訪問控制


與用戶賬戶和組帳戶相關的文件:

1./etc/passwd

2./etc/group

3./etc/shadow

4./etc/gshadow

5./etc/default/useradd

6./etc/login.defs

7./etc/skel(Directory)


1./etc/passwd:

root:x:0:0:root:/root:/bin/bash

1 2 3 4 5 6 7


1:用戶賬戶登錄名稱;

2:使用"x"表示密碼占位符;

3:用戶賬戶的UID;

4:用戶賬戶的GID,即該用戶賬戶的基本組的ID;

5:註釋信息,如用戶職位、用戶完整名稱等;

6:用戶賬戶的家目錄的絕對路徑;

7:用戶賬戶的默認登錄shell;

例:qhdlink:x:1001:1006::/home/qhdlink:/bin/bash


2./etc/group

root:x:0:

1 2 3 4


1:組賬戶名稱;

2:組賬戶密碼占位符;

3:組賬戶的GID;

4:以該組為附加組的用戶列表,多個用戶名之間使用","分隔;

例:centos:x:1004:qhdlink,fedora



3./etc/shadow

root:$6$1bJAWLkjSA8dkPR5$q5CjatV0j62iTzbfyHZUD0dmRTKa54Yb.E1GVz1uOk5mKjR/KaRV963jkGQ0T1MS.w

1 2

xj7LLu3VpSSDW4bX8wd0: :0:99999:7: : :

3 4 5 6 7 8 9


1:用戶賬戶登錄名;

2:密碼的加密算法+salt+密碼的加密結果;

3:最後一次修改密碼的時間;其表示法為從1970年1月1日到當前系統時間所表示的日期的 天數;

4:用戶密碼的最短使用期限;可以理解為多長時間內不能更改密碼,0表示隨時可以更改密 碼;

5:用戶密碼的最長使用期限;可以理解為多長時間內無需更改密碼,也可以正常登錄;

6:用戶密碼的使用時間達到最長使用期限之前多少天開始,在用戶登錄到系統時發送警告消 息;

7:用戶密碼過期之後的寬限期;可以理解為在密碼過期之後的多少天內,登錄系統時仍然可 以提示修改密碼;

8:用戶密碼的絕對失效時間;其表示法為從1970年1月1日到指定日期時間的天數;

9:保留,未被使用;

例:

qhdlink:$6$fyNBEETs$jPz2H0Qd2uxGu5h0jJt7//0iHh1L.Bij0rqxFmGg6Bu.5po5WaE8W4iFN0RsZwuPZ.ZuATwZOaGlF7cDAYFm7.:17472:0:99999:7:::


4./etc/gshadow

root: : :user1,myuser

1 2 3 4

1.組賬戶名稱;

2.組賬戶的加密密碼;

3.組管理員,現在廢棄了;

4.以該組為附加組的用戶賬戶列表;

例:centos:!::qhdlink,fedora


gpasswd:設置組的密碼及管理組成員;

格式:gpasswd [option...] GROUPNAME

-a USERNAME:將-a選項指定的用戶添加至指定組;

-d USERNAME:將-d選項指定的用戶從指定的組中移除;


newgrp:用一個新的組重新登錄到系統;需要被指定的組有正確的密碼設置;

newgrp [-] [group]



5./etc/default/useradd

作用:定義創建用戶時的用戶屬性的默認值的文件;

GROUP=100

//在創建用戶時,如果沒有為用戶指定基本組,系統會為用戶指定一個與用戶名相同的組作為其 基本組;

HOME=/home

//在創建用戶時,如果沒有為用戶指定家目錄,則會在/home目錄中創建一個與用戶同名的目錄作 為其家目錄;

INACTIVE=-1

//在創建用戶時,設定用戶密碼過期之後的寬限期,默認為-1,意為關閉用戶密碼過期寬限期的功 能,即寬限期為永遠;

EXPIRE=

//在創建用戶時,設定用戶密碼的絕對失效日期,默認沒有啟用;

SHELL=/bin/bash

//在創建用戶時,設定用戶的默認登錄shell,默認值為/bin/bash;

SKEL=/etc/skel

//在創建用戶時,為用戶的家目錄提供的默認文件的模版;

CREATE_MAIL_SPOOL=yes

//在創建用戶時,是否直接為用戶創建郵箱文件;默認創建;

例:GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes


6./etc/login.defs (Definations)

作用:定義shadow_utils相關的屬性,包括用戶郵箱路徑、密碼的時間參數、UID和GID的範圍,刪 除用戶賬戶的命令、是否設置私有組(僅包含一個用戶並作為該用戶主要組)、權限位掩碼、家目錄 創建開關、密碼的加密算法;


MAIL_DIR /var/spool/mail

//指定創建用戶時為用戶指定郵箱文件的路徑;


PASS_MAX_DAYS 99999

PASS_MIN_DAYS 0

PASS_MIN_LEN 5

PASS_WARN_AGE 7

//與密碼的時間參數有關的設置;


UID_MIN 1000

UID_MAX 60000

# System accounts

SYS_UID_MIN 201

SYS_UID_MAX 999


GID_MIN 1000

GID_MAX 60000

# System accounts

SYS_GID_MIN 201

SYS_GID_MAX 999

//指定默認的ID選擇範圍;


USERDEL_CMD /usr/sbin/userdel_local

//指定刪除用戶時使用的命令;


CREATE_HOME yes

//是否在創建用戶時為用戶創建家目錄的開關;


UMASK 077

//指定用戶家目錄的默認權限的掩碼;


USERGROUPS_ENAB yes

//是否開啟私有組開關;


ENCRYPT_METHOD SHA512

//使用何種算法加密密碼;

例:

# the permission mask will be initialized to 022.

UMASK 077


# This enables userdel to remove user groups if no members exist.

#

USERGROUPS_ENAB yes


# Use SHA512 to encrypt password.

ENCRYPT_METHOD SHA512



7./etc/skel

作用:為新創建的用戶的家目錄提供默認的[shell配置]文件;


文件系統的權限管理:

普通權限

特殊權限

文件的擴展屬性

FACL(文件系統訪問控制列表)


DAC:自主訪問控制;


安全上下文:

任何在計算機中執行的任務都是由進程實現的;

進程有必要訪問和使用文件或某些數據資源;


進程和其要操作的文件之間的關系,就定義為安全上下文;

在DAC模型中,定義安全上下文的方式很簡單:


所有權:

任何啟動進程的用戶就是該進程的所有者;進程的所有者可以變更;

任何創建文件的用戶就是該文件的所有者;文件的所有者可以變更;


使用權

在文件上面定義的對該文件的特定使用過濾規則;

三個權限:所有者權限,所屬組權限,其他人權限;


安全上下文的匹配規則:

當某個進程試圖操作某個文件時,DAC將做如下規則匹配:

1.判斷進程的所有者和文件的所有者是否為同一用戶,如果是,則直接應用文件的所有者權限;

2.如果不是,進一步判斷進程的所有者是否為文件的所屬組的成員,如果是,則直接應用文件的所 屬組權限;

3.如果不是,直接應用其他人權限;



文件權限的構成:

使用權:MODE,Permission

三個基本權限:

r:Readable,可讀;

w:Writable,可寫;

x:eXecutable,可執行;


目錄文件:

r:可以使用ls命令獲取其中所包含的所有文件的文件名列表;

w:可以在此目錄中進行文件名修改(創建,刪除,修改);即:可以創建文件名,刪除文件名及修 改文件名;

x:可以使用ls -l命令來查看各個文件的屬性信息;在路徑中引用該目錄;


非目錄文件:

r:可以利用cat類的命令獲取文件中存放的數據信息;

w:可以修改(添加,修改,刪除、覆蓋)文件中存放的數據信息;

x:可以將文件發起為進程;


獲取使用權和所有權的相關信息:

ls -l[d] /PATH/TO/SOMEFILE

[root@localhost ~]# ls -ld 456

drwxr-xr-x. 2 root root 6 11月 8 16:56 456


rwxr-xr-x:三個權限位(屬主/所有者,屬組/所屬組,其他用戶)

屬主權限:rwx,此權限位標識為user,簡寫為u;

屬組權限:r-x,此權限位標識為group,簡寫為g;

其他用戶權限:r-x,此權限位標識為other,簡寫為o;


所有的權限位可以統一用all標識,簡寫為a;


註意:"-"表示在該權限位上不具備指定權限;


rwx組合稱為"權限標識三元組";


數字權限標識:二進制數字標識,在對應的權限位上有權限則為1,無權限則為0;


--- 000 0

--x 001 1

-w- 010 2

-wx 011 3

r-- 100 4

r-x 101 5

rw- 110 6

rwx 111 7


使用符號標識權限和數字表示權限的區別:

1.使用符號標識法可以只標識某個特定的權限位,也可以同時標識所有的權限位;

示例:

u=rx; ug=rwx; u=rwx,g=rx,o=r; a=rwx

2.使用數字標識法只能同時標識所有權限位;

示例:

755; 644; 7 == 007 ; 75 == 075


修改文件的使用權:

chmod - change file mode bits

格式:

chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

chmod [OPTION]... --reference=RFILE FILE...


MODE:符號權限標識法:

u, g, o, a:表示權限位;

+, -, =:表示授權方式;

+:表示在指定的權限位上增加指定權限;如果新增的權限是已經存在的權限,則結果相比較授權 之前無變化;

-:表示在指定的權限位上撤銷指定權限;如果被撤銷權限在原權限位並不存在,則結果相比較授 權之前無變化;

=:表示在指定的權限位上精確授權;此種授權方式不考慮該權限位原有的權限設定的;

r, w, x:表示具體的權限;


示例:

# chmod u+r,g+w,o+r 1.txt

# chmod u-x,g-x,o-wx 2.txt

# chmod u+rw,g+rw,o+r 3.txt

# chmod u=r,g=r,o=rwx 4.txt


註意:

chmod +|- r|x FILE:在所有的權限位上增加或撤銷讀或執行權限;

chmod +|- w FILE:僅在所有者權限位上增加或撤銷寫權限;


註意:對於文件來說,執行權限是非常重要的安全上下文標識;因此默認情況下,所有的非目錄文件 都不應該有執行權限;因為一旦非目錄具有了執行權限,則意味著該文件可以被執行,發起為 進程,則可以按需使用系統資源;


OCTAL-MODE:八進制數字權限標識法

示例:

# chmod 640 root.txt


--reference=RFILE:

示例:

# chmod --reference=/etc/shadow root.txt

//參考/etc/shadow文件的權限位root.txt設置相同權限;


常用選項:

-R, --recursive:遞歸地設置目標文件或目錄的權限;


修改文件的所有權:

chown

chown - change file owner and group //修改文件的屬主和屬組

格式:

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...


示例:

~]# chown user3 test1:將所有者設置為user3

~]# chown user3: test2:將所有者設置為user3,將所有者的主組設為所屬組

~]# chown :user3 test3將文件test的所屬組設為user3

~]# chown user3:myuser test4將所有者設置為user3


註意:在使用chown命令時,特別的,可以使用"."代替":";

例;chown user.myuser user3


常用選項:

-R, --recursive:遞歸地設置目標文件或目錄的所有權;


註意:對於文件來說,普通用戶可以修改所有者為自己的文件的使用權,但無法修改文件的所有權; 修改文件所有權的操作只有root可以完成;


chgrp(不常用)

chgrp - change group ownership

格式:

chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...


註意:chown和chgrp命令所指定的用戶和組,既可以是用戶名和組名,也可以是UID和GID;


mkdir:

-m MODE:在創建目錄時為其指定權限;


install命令:

install - copy files and set attributes

格式:

install [OPTION]... [-T] SOURCE DEST

單源復制,為復制後的文件增加執行權限;

install [OPTION]... SOURCE... DIRECTORY

多源復制,為復制後的文件增加執行權限;

install [OPTION]... -d DIRECTORY...

創建目錄;


常用選項:

-g, --group=GROUP

set group ownership, instead of process‘ current group

//設定目標文件的所屬組為指定組,而不是進程所有者的主要組;


-m, --mode=MODE

set permission mode (as in chmod), instead of rwxr-xr-x

//設定目標文件的權限,而不是rwxr-xr-x;


-o, --owner=OWNER

set ownership (super-user only)

//設定目標文件的所有者,僅root可用;


註意:install命令,不能復制目錄,即不能以目錄為源文件;如果其源文件是一個目錄,則install 命令會進入該目錄,依次復制其中的所有非目錄文件到目標位置;


特殊權限:

SUID,SGID,STICKY


1.SUID:SUID僅設置在可執行的文件上。

默認情況下,當用戶執行此類可執行文件時,被發起的進程的所有者不是進程發起者,而是可執行文 件的所有者;換句話說,進程以文件所有者的身份運行;


SUID權限所顯示的位置:文件的屬主的權限位中的執行權限位上;如果屬主本來就具有執行權限,則 顯示為"s";如果屬主本來沒有執行權限,則顯示為"S";


管理SUID權限:

1.符號標識法:chmod u+s FILE

2.數字標識法:chmod 4755 FILE


2.SGID:SGID可以設置在可執行文件或目錄的屬組權限位的執行權限上。

如果某個目錄設置了SGID權限,並且對於某些用戶有寫權限,則所有在此目錄中創建的新文件和目錄 的所屬組均為其父目錄的所屬組,而並非進程發起者的主要組;


SGID權限的顯示位置:文件的屬組權限位上的執行權限上;如果屬組本來就有執行權限,則顯示 為"s",否則,就顯示為"S";


管理SGID權限:

1.符號標識法:chmod g+s DIR

2.數字標識法:chmod 2770 DIR


3.STICKY:STICKY僅設置在目錄的其他用戶權限位的執行權限上。

如果在某個目錄上的權限設置為多個用戶都擁有寫權限,那就意味著凡是擁有寫權限的用戶都能直接 管理該目錄中的所有文件名,包括改名文件及刪除文件名等操作;因此需要在這樣的目錄上設置 STICKY特殊權限;如果此類目錄設置了STICKY,則所有用戶即便擁有寫權限,也僅能刪除或改名所有 者為其自身的文件;


STICKY權限的顯示位置:在目錄的其他用戶的權限位的執行權限上;如果該權限位本來有執行權限, 則顯示為"t",否則,顯示為"T";


管理STICKY權限:

1.符號標識法:chmod o+t DIR

2.數字標識法:chmod 1777 DIR


權限遮罩碼:umask

作用:在創建目錄或文件時,被創建出來的目錄或文件的默認權限上刪除遮罩碼上所對應的權限;


註意:在創建目錄或文件時,默認不設置特殊權限;


對於目錄文件:默認的權限為:0777-umask 0777-0033 = 0744

對於非目錄文件:默認的權限為:0666-umask 0666-0033 = 0644


umask [OCTAL-MODE]


默認設置遮罩碼的文件:/etc/bashrc

規則:如果用戶的UID大於199並且用戶的用戶名和主要組的組名相同,則遮罩碼為002;否則遮罩碼為 022;


文件的擴展屬性:

lsattr:

lsattr - list file attributes on a Linux second extended file system

格式:

lsattr [ -RVadv ] [ files... ]


chattr:

chattr - change file attributes on a Linux file system

格式:

chattr [ -RVf ] [ -v version ] [ mode ] files...


mode可以是:+-=[aAcCdDeijsStTu]

+

-

=


a:在向文件寫數據時,只能以附加的方式進行寫操作;文件的內容不能被更改和刪除;一般會為 日誌文件設置此屬性;

A:atime,文件的訪問時間戳控制屬性;對於並發訪問量較大或者並發訪問頻率較高的文件,應該 設置此屬性以降低IO成本;防止IO瓶頸;

c:設置是否自動壓縮之後再存儲;

C:是否開啟"寫時復制";

d:使用dump備份文件系統是,跳過屬性設置為d的文件;

D:設置文件在文件系統中的異步寫操作;

i:設置文件不能被刪除,改名及設定鏈接關系;

s:設置文件的保密性刪除;

u:與s屬性相反,如果此類文件被刪除,則在存儲器中會繼續保存其內容;


FACL:

Filesystem Access Control List,文件系統訪問控制列表;

想要應用此功能,必須讓文件系統能夠支持;


FACL為文件系統的額外賦權機制;


在原有的u,g,o權限位之外,讓普通用戶能夠控制權限賦予另外的某個指定的用戶或組的一種賦權機 制;


這種機制在CentOS或者RHEL7之後的發行版本中,才逐漸成熟;


與FACL相關的命令:

getfacl:

getfacl - get file access control lists

格式:

getfacl [-aceEsRLPtpndvh] file ...


setfacl

setfacl - set file access control lists

格式:

setfacl [-bkndRLPvh] [{-m|-x} acl_spec] file ...

setfacl --restore=file


常用選項:

-m acl_spec:為指定文件設置acl_spec;

-x acl_spec:將acl_spec從指定文件上移除;

為文件賦予指定用戶的額外訪問權限:

例:

[qhdlink@localhost ~]$ setfacl -m u:gentoo:rwx /tmp/project.plan

[qhdlink@localhost ~]$ ll /tmp

總用量 64

-rw-rwxr--+ 1 qhdlink qhdlink 11 11月 9 21:58 project.plan

[qhdlink@localhost ~]$ getfacl /tmp/project.plan

getfacl: Removing leading ‘/‘ from absolute path names

# file: tmp/project.plan

# owner: qhdlink

# group: qhdlink

user::rw-

user:gentoo:rwx

group::rw-

mask::rwx

other::r--


acl_spec:acl_specification,acl規格,訪問控制列表;

u:USERNAME:MODE

g:GROUPNAME:MODE


MODE一般是使用符號權限標識法標識的權限;



註意:如果設置了FACL之後,再修改目標文件的使用權限,那麽FACL中設置的權限條目可能受到影 響而導致授權失敗;因此,為了保證沒有此項幹擾,應該先調整目標文件或目錄的權限,再設置 FACL;








本文出自 “計算機基礎” 博客,轉載請與作者聯系!

用戶和組管理權限及文件訪問控制