第五章用户组和管理权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章用户组和管理权限相关的知识,希望对你有一定的参考价值。

笔记整理开始2018年4月3日17:27:07

 

本章内容:

        解释Linux的安全模型

        解释用户账号和组群账号的目的

        用户的组管理命令

        理解并设置文件权限

        默认权限

        特殊权限

        ACL

 

介绍安全3A

        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

        userdel

 

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           显示基本设置

                     [[email protected] ~]#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                                   批量修改用户口令

                 如:    [[email protected] ~]#cat f2

                            newmike:maduge

                            [[email protected] ~]#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类似

                     [[email protected] ~]#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:

                      用户所具有的组权限,为所有的组权限叠加取最大权限

               [[email protected] /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的权限

                            [[email protected] /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      

        

        

        

 

 


以上是关于第五章用户组和管理权限的主要内容,如果未能解决你的问题,请参考以下文章

第五章 用户身份及文件权限 第5天 7月20日

封神台靶场:第五章:进击!拿到Web最高权限!配套课时:绕过防护上传木马实战演练

深入浅出Zabbix 3.0 -- 第五章 开始监控

Linux系统配置及服务管理_第05章高级权限

Linux 第五章 系统管理

第五章-系统用户与用户组管理