第五章用戶組和管理權限

筆記整理開始2018年4月3日17:27:07mysql

 

本章內容:linux

        解釋Linux的安全模型nginx

        解釋用戶帳號和組羣帳號的目的git

        用戶的組管理命令web

        理解並設置文件權限redis

        默認權限算法

        特殊權限sql

        ACLmongodb

 

介紹安全3Adocker

        Authentication:認證

        Authorization:     受權

        Accouting|Audition:審計

        本章主要介紹的內容爲認證和受權方面的內容

 

用戶user

        令牌token,identiry

               用戶經過帳號和口令登陸(認證)以後,系統會根據認證的帳號類型

               發放不一樣的類型令牌(受權)。

               用戶持令牌經過程序訪問文件,文件會審覈令牌類型判斷是否具備訪問

               權限。

               若在登陸過程當中作了權限變動,需從新登陸以後才能領取新的令牌。

        Linux用戶:Username/UID

        管理員:root,0

        普通用戶:xx,1-65535

               系統用戶:1-499,1-999(CentOS7)

                     對守護進程獲取資源進行權限分配

               登陸用戶:500+,1000+(CentOS7)

                     交互式登陸

        

組group

        Linux組:Groupname/GID

        管理員組:root,0

        普通組:

               系統組:1-499,1-999(CentOS7)

               普通組:500+,1000+(CentOS7)

 

安全上下文

        Linux安全上下文

               運行中的程序:進程(process)

               以進程發起者的身份運行:

                     root:/bin/cat

                      hello:/bin/cat

               進程可以訪問資源的權限取決於進程的運行者的身份

組的類別:

        用戶的主要組(primary group)

               用戶必須屬於一個且只有一個主組

               組名同用戶名,且僅包含一個用戶,私有組(建立用戶時自動建立)

        用戶的附加組(supplementary group)

               一個用戶能夠屬於零個或多個附加組

 

用戶和組的配置文件

        linux用戶和組的主要配置文件:

        /etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)

        /etc/group:組及其屬性信息

        /etc/shadow:用戶密碼及其相關屬性

        /etc/gshadow:組密碼及其相關屬性

        

passwd文件格式:

        例:

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

               hello:x:1000:1000:hello:/home/hello:/bin/bash

               systemd-network:x:192:192:systemd Network  Management:/:/sbin/nologin

        

        login name: 登陸名(hello)

        passwd:             密碼(已移動到shadow文件,此地爲x)

        UID:                   用戶身份編號(1000,192...)

        GID:                   登陸默認所在組編號,主組

        GECOS:                     用戶全名或者註釋

        home directory:用戶主目錄(/home/hello)

        shell:                  用戶默認使用shell

 

gshadow文件格式:

        root:$6$vOrgaA175RBG06bP$A/WYhuPC6pFNEUBKm0xp5/0W8jwQZIGJJUQI5o

        1aAQJtLRRW9J9h07ga5mcub4Tl7fL1MLdEH7ayTJsWCwMwN/::0:99999:7:::

        

        systemd-network:!!:17617::::::

 

        hello:$6$9t4/ZZJe$CKCzXlZJct4ryh9eAmr.ztf9SlnuuoQfFCtmEdKdbycAge

        Wrv2xhAh0HF6KmRbKLSkcF70icUfysiycoOsbsB/:17623:0:99999:7:::

 

        1.login name:                              登陸名

        2.encrypted password:                   加密的密碼,類型、salt、密文

                                                                如今通常使用sha512加密

        3.date of last password change:上一次修改密碼的時間,已1970-1-1以後

                                                                的天數表示

                                                  計算方法:echo `date +%s`/3600/24  |bc

        4.minimum password age:              密碼的最小使用週期,即密碼修改以後

                                                                最少多少天以後能夠再次修改

                                                                0 表示隨時能夠更改

        5.maximum password age:             密碼的最長使用週期,修改密碼以後多少

                                                                天以後必須再次修改密碼(過時)

                                                                99999,永不過時

        6.password warning period:            密過過時以前幾天發出提示信息

        7.password inactivity period:    過時以後多少天以內還能夠登陸

        8.account expiration date:        從1970-1-1算起,多少天后帳號失效

        9.空                                            預留位置

        

密碼加密

        加密機制:

               加密:明文-->密文

               解密:密文-->明文

        單向加密:哈希算法,原文不一樣,密文必不一樣

               相同算法定長輸出,得到密文不可逆推出原始數據

               雪崩效應:初始條件的微小改變,引發結果的巨大改變

        md5:message digest,128bits,據說已被破解

        sha1:secure hash algorithm,160bits

        sha224:224bits

        sha256:

        sha384:

        sha512:

 

密碼的複雜性策略

        使用數字、大寫字母、小寫字母及特殊字符中至少3種

        足夠長

        使用隨機密碼

        按期更換,不要使用最近曾經使用過的密碼

        

group文件格式:

               root:x:0:

               hello:x:1000:hello

               kvm:x:36:qemu

        group_name:      羣組名稱

        password:           密碼,不顯示

        GID:                   羣組ID

        user_list:        以當前組爲附加組的用戶列表(分隔符爲逗號)

 

gshadow文件格式:

               root:::

               hello:!!::hello

               systemd-network:!::

        group name:             羣組名稱

        encrypted password:加密的密碼

        administrators:    組管理員列表,更改組密碼和成員

        members:                 成員,以當前組爲附加組的用戶列表(分隔符爲逗號)

 

文件操做命令:

        vipw:     vi+passwd

        vigr: vi+passgr

        pwck:

        grpck:

 

用戶管理命令:

        useradd

        usermod

        usedel

組帳號維護命令:

        groupadd

        groupmod

        groupdel

 

useradd:用戶建立

        useradd [options] login.name

               -u                         指定UID,如不指定,正常狀況id按最大的id上遞增

                                           超過範圍則按最小的數遞增

               -o                         配合-u選項,不檢查UID的惟一性

               -g GID:                  指明用戶所屬的基本組,可爲組名,也能夠爲GID

               -c 」COMMMENT":     用戶的註釋信息

               -d home_dir          以指定的路徑(不存在)爲家目錄

               -s shell:              指明用戶的默認shell程序

                                                  可用列表在/etc/shells中

               -G group1..           爲用戶指明附加組,須存在

               -N                        不建立私有組作主組,使用users組作主組100

               -r                         建立系統用戶

               -m                        建立家目錄,用於系統用戶

               -M                        不建立家目錄,用戶非系統用戶

                                                  家目錄不存在則登陸會進入"/"

                    

        默認值設定:/etc/default/useradd文件中

               顯示或更改默認設置:

               useradd -D           顯示基本設置

                     [root@sentos7 ~]#useradd -D

                     GROUP=100                -N選項,若是不建立同名主組,則屬於這個組

                     HOME=/home                    家目錄位置

                     INACTIVE=-1               過時以後還能夠登陸的天數,-1表示不會鎖死

                     EXPIRE=                       帳號有效期,默認99999

                     SHELL=/bin/bash         默認使用的shell類型

                     SKEL=/etc/skel             建立家目錄的源文件地址

                     CREATE_MAIL_SPOOL=yes 是否建立mail

               useradd -D -s /bin/csh 修改默認shell類型

               useradd -D -b /dir              修改默認家目錄

               usreadd -D -g group           -N選項以後默認的主組

        

        練習:

               1.建立用戶gentoo,附加組爲bin和root,默認shell爲/bin/csh,注視信息

               「Gentoo Distribution"

               useradd -G bin,root -s /bin/csh -c "Gentoo  Distrition" gentoo

               2.建立下面的用戶、組和組成員關係

                     名字爲webs的組

                     用戶名nginx使用webs做爲附屬組

                     用戶varnish,也是用webs做爲附加組

                     用戶mysql,不可交互式登陸系統,也不是webs的成員,nginx,

                            varnish,mysql密碼都是magedu

               grpadd webs

               useradd -G webs nginx

               useradd -G webs varnish

               useradd -r      mysql

               echo magedu |passwd --stdin nginx

               echo magedu |passwd --stdin varnish

               echo magedu |passwd --stdin mysql

               

        新建用戶的相關文件和命令

               /etc/default/useradd      新建用戶默認信息

               /etc/skel/                             家目錄複製地址

               /etc/login.defs                      添加用戶配置信息

               /var/spool/mail                    郵箱路徑

        newusers passwd格式文件:     批量建立用戶

               chpasswd                                   批量修改用戶口令

                 如:    [root@sentos7 ~]#cat f2

                            newmike:maduge

                            [root@sentos7 ~]#cat f2 |chpasswd

               

                             

usermod:用戶屬性修改

        usermod [options] login

               -u UID                          新UID

               -g GID或者group              新主組

               -G Group1[,Group]..     新附加組,原來的附加組將會被覆蓋

               -aG                              若保留原有,則要同時使用-a 選項

               -s shell                  新的默認使用shell

               -c ’comment‘:             新的註釋信息

               -d home                      修改家目錄,新的家目錄不會自動建立

               -dm home                   建立新家目錄並移動原家數據

               -l login.name         新的名字,更名以後家目錄,郵箱不變

               -L:                     lock指定用戶,在/etc/shadow密碼欄增長!

               -U:                             unlock指定用戶,將/etc/shadow密碼欄的!拿掉

               -e                                 yyyy-MM-DD:指明用戶帳號過時時間

               -f INACTIVE:              設定非活動期限,寬限期

               -p, --password PASSWORD        

                                                  use encrypted password for the new password

                                                  用加密以後的明文設置密碼

        例:

               usermod -u 7888 hello

                            修改hello的uid爲7888

               usermod -g root hello

                            修改hello的主組爲root

               usermod -aG lily hello

                            將hello添加到附加組lily

                             

userdel:刪除用戶:

        userdel [option]... login.name

               -r:          刪除用戶家目錄

 

id:查看用戶的ID信息:

        id [option]...[USER]

               -u:          顯示UID

               -g:          顯示GID

               -G:       顯示用戶所屬附加組的ID

               -n:          顯示名稱,需配合ugG使用

 

su:switch  user切換用戶或以其餘用戶身份執行命令

        su [option]..[-]  [user[args..]]

        切換用戶的方式:

        su username          非登陸式切換,不會讀取目標用戶的配置文件,不改變當前

                                    工做目錄

        su - username       登陸式切換,會不去目標用戶的配置文件,切換至家目錄,

                                    徹底切換

        root su至其餘用戶無需密碼,非root用戶切換時須要密碼

        退出用exit,ctrl+d,不要嵌套su

        

        su [-] username -c 'cmd'      換個身份執行命令,執行完以後退回

               su - hello -c "cat /etc/shadow"

        su -l --login  至關於su - username

        

passwd:設置密碼:

        passwd [options] username: 修改指定用戶的密碼

        

        經常使用選項:

               -d          刪除指定用戶的密碼

               -l             lock鎖定指定用戶,加!

               -u           unlock,解鎖指定用戶,去掉!

               -e           強制用戶下次登陸修改密碼

                     -f    強制操做

               -n mindays:           指定最短使用期限

               -x maxdays: 最大使用期限

               -w warndays:      提早多少天開始警告

               -i inactivedays:過時還可使用的天數

               --stdin:從標準輸入接收用戶密碼

        例:               

               echo helloyou |passwd --stdin -n 3 -i 5  hello

                     修改hello的密碼 最小使用天數3天,過時以後鎖定時間5天

               echo redhat |passwd --stdin hello &>  /dev/null

                     修改hello的密碼爲redhat 影藏標準輸出和標準錯誤

                    

chage:修改用戶密碼策略

        chage [option]...login.name

               -d lastdays                   還能夠繼續使用的天數

               -E --expire.date days    指定失效時間

               -I --inactive  days             過時以後鎖定的時間

               -m --mindays days             最小使用期限

               -M --maxdays days             最長使用時間

               -W --warndays days           提醒時間

        例:

               chage -d 0 tom          passwd -e tom

                     設置tom帳號下一次登陸修改密碼

               chage -m 0 -M 9999 -W 5 -I 7 tom

                     設置tom帳號的密碼最小使用時間0,最大9999,提醒5 凍結7

               chage -E 2200-09-16    hello

                            usermod -e  

                      設置tom帳號失效時間2200-9-16

 

其餘相關命令:

        chfn:修改用戶註釋信息,

               usermod -c相似

                     [root@sentos7 ~]#chfn hello      

                     Changing finger information  for hello.

               -f    Name [hello]:      

               -o   Office [hahah]: 原office爲hahah,冒號後輸入新的

               -p   Office Phone [12345]:  不修改能夠直接回車

               -h   Home Phone [54321]:  

               

                     Finger information not  changed.

               例:

               chfn -f hello -h 76521 hello

                     修改hello的名爲hello,homephone爲76521

        

        chsh:(-s)修改指定shell

               chsh -l 列出當前全部shell, cat  /etc/shells

               chsh -s /bin/bash hello

                     修改hello默認shell爲csh

        

        finger:查看當前系統登陸的用戶信息,相似who

               finger hello

                     查看用戶hello信息(name,bin,lastlogin ip)

        

groupadd:建立組

        groupadd [option]...group.name

               -g GID           指明GID號,[DID_MIN,GID-max]

               -r:                  建立系統組

                      CentOS6:<500

                     CentOS7:<1000

                     具體規則查看/etc/login.defs

 

groupmod:組屬性修改

        groupadd [option]...group

               -n group.name             修改組名

               -g GID:              新的GID

        

groupdel:組刪除

        groupdel GROUP

        

gpasswd:更改組密碼

        gpasswd [option] group

               gpasswd notbook         修改密碼

                     不支持標準輸入

        -a user          將user添加至指定組中

        -d user           從指定組中移除用戶user

        -A user1,user2,..    設置有管理權限的用戶列表

        

newgrp:臨時切換主組

        newgrp hello

               臨時切換主組爲hello

               exit或者ctrl+d退出

               若是用戶本不屬於此組,則須要組密碼

        

groupmems :更改組成員

        groupmems [options] [action]

               -g,--group groupname      root only

        -a,--add username                     指定用戶加入組

        -d,--delete username          指定用戶從組中刪除

        -p,--purge                                 刪除組全部成員

        -l,--list                             顯示組成員列表

        例:

               groupmems -g hello -a lily

               usermod -aG hello lily

               gpasswd -a hello lily

                     將lily添加到組hello的三種寫法

               groupmems -g hello -d mady

                     將lily從hello中刪除

               groupmems -g hello -p

                     清除hello附加組全部成員

groups:

        groups hello

               查看hello的全部組,主組+附加組

 

其餘命令:

        pwunconv      passwd裏面顯示密碼,shadow就不存在了

        pwconv         將passwd中密碼放入shadow

        getent passwd                     查看passwd

        getent passwd hello             只看hello的passwd

               getent passwd |shadow | group |gshadow

        

        

文件權限:

        文件的權限主要針對三類對象進行定義:

               owner:屬主,u

               group:屬組,g

               othe:其餘,o

        每一個文件針對每類訪問者都定義了三種權限

               r:     Readable 讀,查看權限,可以使用文件查看類工具獲取其內容

               w:    Writealbe       寫,修改權限,可修改其內容

               x:     eXcutable       執行權限,能夠把此文件提請內核啓動爲一個進程

        ps:

               普通用戶不能改文件全部者

               全部者修改文件所屬組,要求本身必須在相同組才能改

               對於root帳號,rw權限不受控制,x權限受影響

                     ugo只要有一個x,root就能夠執行此文件 ,x全爲-,則沒法執行

               對於普通用戶,沒有r只有w,不能打開,可是能有>,>>寫入

               可執行文件,無需r只需x便可執行,r全是有時會須要,好比file  

               刪除文件須要目錄的w權限

        

        目錄:

               r:可使用ls查看此目錄中文件列表

               w:可在此目錄中建立文件,也可刪除此目錄中的文件

               x:可使用ls -l 查看此目錄中的文件列表,能夠cd進入此目錄

               X:只給目錄x權限,不給文件x權限

        ps:

               沒有r權限,有x權限,能夠進入目錄,沒法查看文件列表,能夠查看

               文件內容

               有r權限,沒有x權限,不能進入目錄,不能目錄裏面的詳細屬性,也

               不能查看文件內容

               

               有w權限,沒有x權限,沒法刪除裏面文件

               有w權限,沒有r權限,能夠刪除裏面文件

               要執行目錄下的文件,必須對目錄具備x權限

        

        用戶獲取文件(目錄)權限:

               全部者---所屬組--other,一旦匹配,不看其餘

               若是是全部者,只看----,不看後面

               如是是所屬組,直接所屬組權限生效,不看other權限

 

chown:修改文件的屬主

        chown [option]..[owner][:[group]]  file

               chown hello f1                     修改文件f1的屬主爲hello

               chown hello:hello f1  修改文件f1的屬主和組爲root,hello

               (:group)只修改屬組,不建議使用

               -R   遞歸,針對目錄

               chown --reference=f1 f2 修改f2的owner:group和f1相同

 

chgrp:修改文件所屬組

        chgrp [option] group file

               chgrp lily f1    修改文件f1所屬主爲lily

               chgrp -R               遞歸,針對目錄

               chgrp --reference=f1 f2 修改f2的group和f1相同

 

文件權限操做:

        drwxr-xr-x. 2 root   root      6 Mar 28 03:47  Desktop

        drwxr-xr-x. 2 root   root      6 Mar 28 03:47  Documents

                     r:4

                     w:2

                     x:1

               2-4位,owner權限

               5-7位,group權限

               8-10位,other權限

        八進制數表示:     Octal-mode

               --- 000 0

               --x  001  1

               -w- 010 2

               -wx 011 3

               r-- 100 4

               r-x 101 5

               rw- 110 6

               rwx 111 7

        如:

               rwxr-xr-x        755

               rw-------      600

 

修改文件權限:

        chmod [option]..octal-mode  file

               -R   遞歸

               chmod 644 f1       修改文件f1權限爲644

               chmod -R 777 dr1 遞歸修改dr1下全部文件權限爲777

        chmod [option]..mode,[mode]...file

               chmod u=rw,g=rw,o=r f3

                     修改文件f3的權限爲:rw-rw-r--

               修改一類用戶的全部權限:

                     u= g= o= ug= a=  

                     u=,g=,o= 清空

               修改一類用戶某位或某些權限

                     u+r,g-rw,o+r,o-w...a+r,a-x....

        chmod [option] --reference=f1 f2 f3

               參考f1設置f2,f3的全部權限

 

        例:

               chmod u+wx,g-r,o=rx file

                     修改文件file權限,u+wx g-r o=rx

               chmod -R g+rwX /testdir

                     遞歸修改目錄testdir權限,g+rwX

 

新建文件和目錄的默認權限:

        umask指:能夠用來保留新建立文件權限

        新建file權限:666-umask指

               若是所得結果某位存在執行(奇數)權限,則其權限+1

        新建dir權限:777-umask

        非特權用戶umask是002

        root帳號的umask是022

               umask           查看umask值

               umask -S       模式方式顯示

               umask 2222   設置umask值爲222

               umask u=rwx,g=r,o=     模式方式修改umask

               umask -p        輸出可別調用,多了個名字。。

               如:

                     umask -p >>.bashrc

        umask文件地址:

               /etc/bashrc            全局

               ~/.bashrc               用戶設置

 

練習:

        1.當用戶docker對/testdir目錄無執行權限是,意味着沒法作哪些操做

               沒法進入目錄

               能夠用ls查看列表,可是沒法查看文件屬性類型

               就算對目錄中的文件有rw權限,也沒法查看和寫入>>也不行

               

        2.當用戶mongodb對/testdir目錄無讀權限時,意味着沒法作哪些操做

               能夠進入目錄,沒法查看文件列表,能夠查看ll file詳細信息

               能夠執行目錄內程序,cat file能夠查看文件內容

               若是對文件有w權限,還能夠經過>>寫入文件

        3.當用戶redis對/testdir目錄無寫權限時,該目錄下的只讀文件file1是否

        能夠修改和刪除

               不能

        4.當用戶zabbix對/testdir具備寫執行權限時,該目錄下的制度文件file1是否

        可修改和刪除?

               能夠刪除,不能修改

        5.複製/etc/fstab文件到/var/tmp下,設置文件全部者爲tomcat讀寫權限,所屬

        組爲apps組有讀寫權限,其餘人無權限

               cp /etc/fstab /var/emp/

               chmod 650 /var/tem/fstab

        6.誤刪除了用戶git的家目錄,請重建並回復該用戶家目錄及相應的權限屬性

               cp -r /etc/skel/ /home/git

               chown -R git:git /home/git

 

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:       4---

        GUID:      2---

        sticky       1---

 

權限位映射:

        SUID:       user,佔據屬主的執行權限位:

               s:屬主擁有x權限

               S:屬主沒有x權限

        SGID:       group,佔據屬組的執行權限位

               s:     group擁有執行權限位

               S: group沒有x權限

        Sticky:other,佔據other的執行權限位

               t:     other擁有x權限

               T:   other沒有x權限

        

設定文件特定屬性:

        chattr +i 不能刪除,更名,更改

               -i           取消

        chatr +a  只能追加內容

               -a           取消

        chattr +A      鎖定atime

        lsattr               顯示特定屬性

               -R          能夠遞歸

        例

               chattr +i /data/11          給/data/11增長鎖定,不能刪除更改更名

               chattr +a /data/11         給/data/11增長鎖定,只能追加內容

                     i存在的狀況,a存在,也沒法追加數據

               chattr -i -a /data/11      取消data/11的特定權限

               

訪問控制列表

        ACL:Access Control List,實現靈活的權限管理

        除了文件的全部者,所屬組和其餘人,能夠對更多的用戶設置權限

        CentOS7 默認建立的xfs和ext4文件系統具備ACL功能

        CentOS7 以前的版本,默認手工建立的ext4文件系統無ACL功能,需手動增長

               (安裝系統的時候建立的分區默認安裝了acl,後續分區默認不帶)

               tune2fs -o acl /dev/sdb1

               mount -o acl /dev/sdb1 /mnt/test

        如添加了ACL權限,權限後面的.就會變成+

               -rw-r--r--. 1 root root 8127 Apr  6 21:59 f16

                     未添加ACL

               drwxrwxrwx+ 2 root root   49 Apr  7 01:55  23

                     已添加ACL

        ACL生效順序:

               全部者,自定義用戶,自定義組,其餘人

               PS:

                      用戶所具備的組權限,爲全部的組權限疊加取最大權限

               [root@sentos7 /data]#getfacl  234

               # file: 234

               # owner: root

               # group: root

               # flags: -s-            顯示特殊權限

               user::r-x                 全部者owner,

               user:hello:rwx         自定義用戶user

               group::r-x                   

               group:hello:rwx

               group:lily:rwx         自定義組

               mask::rwx                     組最高權限

               other::-wx                    others

                             

爲多用戶或者組的文件和目錄賦予訪問權限rwx

        getfacl    f1  dr1

                     查看f1,目錄dr1的acl權限

        

setfacl [-bkndRLP] {  -m|-M|-x|-X ... } file ...

        

        setfacl -m, --modify=acl u:hello:rwx 35  23

                     修改文件35,目錄23的acl權限,使user用戶hello具備rwx權限

        setfacl     -Rm g:lily:rwX 23

                     遞歸修改目錄23的acl權限,使lily組用戶具備rwX權限

        setfacl -M file.acl f5 234

                     按照文件file.acl中的權限設置文件f5 目錄234的權限

                            [root@sentos7 /data]#cat file.acl

                            u:hello:rwx

                            g:lily:rwx

                            g:hello:rwx

        

        setfacl -m d:u:wang:rx dir  

                     -d, --default   operations apply to the default  ACL

               setfacl -d -m u:hello:rwx dir1           

                            不能寫成-m -d

                     設置目錄dir的默認acl權限,給用戶wang  附件rx權限,

                      默認對於目錄下新建的文件或者目錄默認附加相同權限,

                     對於現有文件,權限無變化

        setfacl -x u:hello  file|dir

                     清空hello用戶對於file|dir的acl權限

        setfacl -X file1.acl file dir

                     按照文件文件file1.acl刪除文件file 目錄dir的權限

               setfacl -RX file3 dir1 如需遞歸,-R應在X的前面

        setfacl -k dir

                     刪除默認(default)ACL權限

        setfacl -b file1     

                     清除全部acl權限   

        getfacl file1 |setfacl --set-file=- file2

                     複製file1的acl權限給file2

               --set選項會把原有的ACL項都刪除,用新的替代,須要注意的是必定要

               包含UGO的設置,不能像-m同樣只是添加ACL就能夠

        示例:

               setfacl --set u::rw,u:wang:rw,g::r,o::-  file1

               

        cp -p/-a f1 f2

                     複製文件用-p選項能夠保留源acl權限

 

mask值:

        ACL文件上的group權限是mask值(自定義用戶,自定義組,用戶組的最大權限)

        而非傳統的組權限,至關於限高

        getfacl能夠看到特殊權限:flags

        經過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限

        base ACL不能刪除

        mask隻影響除全部者和other以外的人和組的最大權限

        mask須要與用戶的權限進行與運算後,才能變成有限的權限

               用戶或組的設置必須存在於mask的權限設定範圍內纔會生效

        setfacl -m mask::rx file1

                     設置文件file1的mask值爲rx

 

備份和恢復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

               setfacl --restore acl.txt

               getfacl -R /tmp/dir1

        

練習:

        1.在/testdir/dir裏建立的新文件自動屬於webs組,組apps的成員如:

        tomcat能對這些新文件有讀寫權限,組dbs的成員如:mysql只能對新文件有讀

        權限,其餘用戶(不屬於webs,apps,dbs)不能訪問這個文件夾

               chgrp webs /testdir/dir

               chmod g+s /testdir/dir

               chmod o= /testdir/dir

               setfacl -m d:g:apps:rw,d:g:dbs:r  /tsetdir/dir

               

        2.備份/testdir/dir裏面全部文件的acl權限到/root/acl.txt中,清除

        /testdir/dir中全部acl權限,最後還原acl權限:

               getfacl -R /testdir/dir >/root/acl.txt

               setfacl -R -b /testdir/dir

               setfacl -R --set-file=/root/acl.txt

               getfacl -R /testdir/dir

        

        

        

筆記整理完成時間:2018年4月7日11:42:24      

相關文章
相關標籤/搜索