用户和组及权限(ACL)

一、USERS

UID为0的用户为管理员用户,任何一个UID为0的用户,都可为管理员用户
若系统没有了UID=0的管理员用户,则系统无法启动
用户ID:

管理员:root,UID为0
系统用户:UID为1-499,1-999,对守护进程获取资源进行权限分配
普通用户:UID为500-65535,1000-65535,交互式登录
创建用户时指定UID时,可指定UID>65535的UID,即UID可指定为70000

组(group)GID

管理员组:root GID为0
系统组:1-499,1-999(CENTOS7)
普通组:500-65535,1000-65535

liunx中,允许用户名和组名相同,windows中不允许用户和组同名

  • linux安全上下文:
    运行中的程序即进程,进程所能够访问资源的权限取决于进程的运行者的身份
  • linux组的类别:

用户的主要组:
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户
用户的附加组:
一个用户可以属于零个或多个辅助组

  • passwd文件格式:

login name:登录用名(danran)
passwd:密码位(X)
UID:用户身份编码(1000)
GID:登录默认所在组编号(1000)
GECOS:用户全名或注释即描述
home directory:用户主目录(/home/danran)
shell:用户默认使用shell(/bin/bash)

  • passwd配置文件格式描述:

name:passwd:UID:GID:GECOS:directory:shell

修改用户的属性信息也可直接修改/etc/passwd配置文件
如果删除用户的家目录,则在登录时会自动登录到/目录上,但不会禁止登录

  • shadow文件格式

1、登录用名
2、用户密码: 一般用sha512 加密,$6位sha512算法,$5位sha256算法,$1为md5加密
3、从1970 年1 月1 日起到密码最近一次被更改的时间,单位day
4、密码再过几天可以被变更(0 表示随时可被变更)
5、密码再过几天必须被变更(99999 表示永不过期)
6、密码过期前几天系统提醒用户(默认为一周)
7、密码过期几天后帐号会被锁定
8、从1970 年1 月1日算起,多少天账号失效

  • !禁止用户登录

锁定用户时,禁止用户登录和切换,但root用户不受限制可以正常切换,空口令可以登录

  • 密码加密:

加密机制:

加密:明文--> 密文
解密:密文--> 明文

单向加密:哈希算法(散列算法),原文不同,密文必不同,密码数据一致,加密过后的结果也是一样的
哈希算法的特点:如果两个密码的数据一样,则加密处理后的结果也是一样的,因此用户密码在加密时又因为前面又加了一些随机的随机数,即加密过后第2个和第三个$$之间的数,因此口令跟随机数综合起来的结果也就不一致。加的随机数称之为salt(盐)

如果知道确定的salt随机数,则使用openssl命令推算密码口令,相同的算法及相同的密码,算出来的加密口令不一致,但是指定salt数据,则推算出来的md5数据则是完全一致的

相同算法定长输出,获得密文不可逆推出原始数据
雪崩效应:初始条件的微小改变,引起结果的巨大改变
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits $5
sha512: 512bits $6

centos6加密算法为sha512,shadow文件中表示为$6,$1对应的加密算法是md5

  • man authconfig | grep passwd 可查找支持更新的加密算法
    更改定义加密算法 authconfig --passalgo=sha256 -- update

  • 加密算法保存文件为 ==/etc/login.defs==

  • 口令有效期策略:


  • 密码复杂性策略

使用数字、大写字母、小写字母及特殊字符中至少3种
足够长
使用随机密码
定期更换, 不要使用最近曾经使用过的密码

  • group文件格式

群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在/etc/gshadow
GID的 :就是群组的 ID
以当前组为附加组的用户列表( 分隔符为逗号)

  • gshadow文件格式

群组名称:就是群组名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:(分隔符为逗号)

  • 新建用户的相关配置文件模板和命令

vim /etc/default/useradd
/etc/skel/* 存放用户系统环境
/etc/login.defs 加密算法保存文件
newusers passwd 格式文件 批量创建用户
chpasswd 批量修改用户口令

  • 用户和组的配置文件

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/grup:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
/var/spool/mail:用户的邮件目录

  • 加密算法保存文件为 ==/etc/login.defs==

  • 命令:

    pwunconv:将用户密码从shadow文件中显示在passwd文件中,即取消密码映射,则/etc/shadow文件将自动消失
    pwconv:打开用户投影密码,将密码映射到/etc/shadow文件
    chfn 修改用户的描述信息
    finger:查看用户的描述信息(需安装finger*软件包)
    chfn danrna 修改danran用户描述信息
    finger danran 查看danran用户的描述信息
    chsh -s /bin/csh danran 修改danran用户的shell类型

  • 用户和组管理命令

用户管理命令
useradd
usermod
userdel
组帐号维护命令
groupadd
groupmod
groupdel

  • 用户创建useadd

      useradd [options] LOGIN     
          -u  UID :  [UID_MIN, UID_MAX] 定义在/etc/login.defs   
          -o  配合-u  选项,不检查UID 的唯一性,可使用重复的uid号   
          -g GID :指明用户所属基本组,可为组名,也可以GID   
          -c  "COMMENT" :用户的注释信息   
          -d  HOME_DIR: 以指定的路径( 不存在) 为家目录   
          -s  SHELL :  指明用户的默认shell 程序,可用列表在/etc/shells文件中   
          -G  GROUP1[,GROUP2,...] :为用户指明附加组,组须事先存在   
          -N  不创建私用组做主组,使用users 组做主组   
          -m:创建家目录   
          -M:不创建家目录   
          -r: 创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000   
              系统用户不自动创建家目录,也不会创建邮件目录,shell环境不一定
    

新建用户的默认值设定:/etc/default/useradd 文件中

显示或更改默认设置:
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR,更改默认家目录位置eg /app
useradd –D –g GROUP

  • 用户属性修改:

      usermod [OPTION] login
          -u UID:  新UID
          -g GID: 新主 组
          -G GROUP1[,GROUP2,...[,GROUPN]]] :新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用 -a 选项
          -a:附加不覆盖原来的组
          -s SHELL :新的默认SHELL
          -c 'COMMENT' :新的注释信息
          -d HOME:  新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m 选项
          -l login_name:  新的名字   eg usermod -l newtom tom
          -L: lock 指定用户, 在/etc/shadow 加密码栏的增加 !
          -U: unlock 指定用户,将 将 /etc/shadow 的 密码栏的 !  拿掉
          -e YYYY-MM-DD:  指明用户账号过期日期
          -f INACTIVE:  设定非活动期限
    
  • 查看用户的相关id信息

      id [OPTION]... [USER]
          -u:  显示UID
          -g:  显示GID
          -G:  显示用户所属的组的ID
          -n:  显示名称,需配合ugG 使用
    
  • 创建组

      groupadd [OPTION]... group_name
          -g GID:  指明GID 号;[GID_MIN, GID_MAX]
          -r:  创建系统组
              CentOS 6: ID<500
              CentOS 7: ID<1000
    
  • 修改和删除组

组属性修改:groupmod

groupmod [OPTION]... group

-n group_name: 新名字
-g GID: 新的GID
组删除:groupdel
groupdel GROUP

删除附加组

usermod -G "" tom 删除tom的附加组
gpasswd -d tom bin 将tom从bin附加组删除

  • 更改组密码:
    组密码:gpasswd

      gpasswd [OPTION] GROUP    
          -a user:  将user 添加至指定组中   
          -d user:  从指定组中移除用户user   
          -A user1,user2,...:  设置有管理权限的用户列表   
    
  • newgrp 命令:临时切换主组

如果用户本不属于此组,则需要组密码
newgrp danran 将自己的主组临时变为danran

  • 更改和查看组成员

      groupmems [options] [action]    
      options:
          -g, --group groupname 更改为指定组 ( 只有root)
      Actions:   
          -a, --add username 指定用户加入组   
          -d, --delete username 从组中删除用户   
          -p, --purge 从组中清除所有成员
          -l, --list 显示组成员列表
    

groups [OPTION].[USERNAME]... 查看用户所属组列表


  • su切换用户

切换用户的方式:

su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

root su 至其他用户无须密码;非root 用户切换时需要密码

换个身份执行命令:

su [-] UserName -c 'COMMAND'

su - root 'cat /etc/shadow' 以root的身份执行cat命令

选项:-l --login

su -l UserName 于 相当于 su - UserName

  • 删除用户

userdel [OPTION]... login

-r: 删除用户 家目录

  • 设置密码

passwd [OPTIONS] UserName: 修改指定用户的密码,仅root 用户权限
passwd: 修改自己的密码

常用选项:     
    -l: 锁定指定用户   
    -u: 解锁指定用户
    -e: 强制用户下次登录修改密码   
    -n mindays:  指定最短使用期限   
    -x maxdays :最大使用期限   
    -w warndays :提前多少天开始警告   
    -i inactivedays :非活动期限   
    --stdin :从标准输入接收用户密码   

echo " PASSWORD " | passwd --stdin USERNAME

  • 修改用户密码策略
chage [OPTION]... LOGIN
    -d:最近一次修改时间
    -E:过期时间
    -I:非活动时间
    -m:最短使用期限
    -M:最长使用期限
    -W:警告时间
    –l 显示密码策略
        chage -l danran 列出用户口令策略的相关信息

示例:

chage -d 0 tom 下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom

  • change:更改账号口令策略
  • getent:查看文件的记录信息,只查看文件中某个用户的全部信息

getent passwd danran 查看passwd文件中danran用户的信息


用户和组及权限(ACL)_第1张图片
  • 将用户添加进组

Gpasswd +组名 修改组密码
Newgrp +用户 把该用户添加进组

gpasswd -a dan danran 将danran用户添加进dan组里

  • 修改用户和组命令使用
useradd 创建用户  eg  useradd danran(创建淡然用户)
groupadd 创建组
Userdel 删除用户
Groupdel 删除组
Passwd 修改用户密码
ghpasswd 批量修改用户口令
Gpasswd 修改组密码
Finger 用来简单的查看系统上的用户信息   eg finger rich
Useradd -c 描述信息 -d 指定家目录 -g 指定私有组 -G指定附加组 -s 指定shell环境    
    eg useradd -c       boss -d /user -u 1000 -G root -s /bin/bash
    -m:创建用户时,强制给用户创建目录
    -M:创建用户时,但不创建家目录
    -D:default,为useradd命令创建的用户指定新的默认值
Useradd -r 增加系统用户
Useradd -D 查看系统默认用户属性
Useradd -D -s /bin/tsch 修改系统默认用户的登录属性
Usermod 修改用户属性,参数同useradd一样,-
    -G GID:默认会覆盖原有的附加组,如果是添加,则同时使用-a选项
    -d /path/to/new_home:默认不会迁移用户的家目录,如果要迁移,则同时使用-m
    -l New_login_name:修改登录名称
Usermod -l 修改用户账号的登录名
Usermod -p 修改用户密码
usermod -s /bin/csh danran  修改用户的默认shell    
chsh -s /bin/bash danran   修改用户的默认shell   
Groupmod -g 修改GID   eg groupmod -g 2000 test
Groupmod -n 修改组名   eg groupmod -g test1 test
Passwd -e 强制用户下次登录时修改密码
Passwd -l 锁定用户
Passwd -u 解锁用户
    锁定用户时,禁止用户登录和切换,但root用户不受限制可以正常切换 
Passwd -d 删除用户密码
Userdel 删除用户及passwd、shadow、group、gshadow四个文件,保留用户名文件和电子邮件
Userdel -r 删除用户和用户的所有文件,包括用户名文件和电子邮件
groupmems -g danran -l   查看danran组里的其他成员,即显示以danran为附加组的用户
groupmems -g danran -d harry   将harry组从danran附加组里删除
gpasswd -d harry danran    从danran附加组中删除harry组
groups danran   列出danran用户的主组  
gpasswd danran  修改danran组的密码    
newgrp danran  将自己的主组临时变为danran    
    如果用户本身就属于danran附加组的成员,并shadow文件中记录了属于danran附加组,则不需要输入密码就可直接更换临时主组,但如果不属于附加组,则切换为danran主组需要输入danran组的密码    
gpasswd -a dan danran    将dan用户添加进danran组里      
    成员更改组成员关系后,用户必须重新登录才能获得最近更改的组成员关系

Chsh:修改用户默认shell
Chfn:修改注释信息
vipw:vim 编辑passwd文件
vigr:vim 编辑group文件
pwck:语法检查,检查用户文件格式
grpck:语法检查,检查组文件格式
newusers passwd     根据passwd格式文件批量创建用户

二、文件权限

  • 文件权限
r(readable) w(writable) x(eXcuable) u(owner) g(group) o(other) a(all)
执行 所有者 所属组 其他人 所有人
4 2 1

用户访问文件,按照匹配顺序依次匹配,如果普通用户文件的所有者和所属组其中一个有执行权限,-o没有-x权限,尽管root用户不属于该文件所有者和所有组,root用户依然可以借用-X执行权限

  • 删除文件,跟文件本身的权限没有关系,而跟目录本身有关系,因为文件名存储在父目录结构块中,
  • 目录权限:

目录若只有读写权限,只能查看目录文件列表,不能访问文件和cd进目录(查看,删除),如果只有执行权限,可以cd进目录,但是不能ls列出文件列表,可以执行目录中的文件,执行是基础权限,若知道文件名,可以直接访问目录中的文件;写权限,需配合x权限才能生效,如果要删除目录下的文件,目录必须要有执行权限和写权限

文件:
    r:  可使用文件查看类工具获取其内容
    w:  可修改其内容
    x:  可以把此文件提请内核启动为一个进程
目录:
    r:  可以使用ls 查看此目录中文件列表
    w:  可在此目录中创建文件,也可删除此目录中的文件
    x:  可以使用ls -l 查看此目录中文件列表,可以cd 进入此目录
    X:递归修改目录执行权限时,只给所有的目录x 权限,而不给文件x执行权限,但是如果文件中有任何一个人有执行权限,则文件将会全部加上执行权限  
  • chmod 修改文件权限
chmod [OPTION]... OCTAL-MODE FILE...
    -R:  递归修改权限
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...  参考RFILE 文件的权限,将FILE 的修改为同RFILE

权限设置eg:

chgrp sales testfile
chown root:admins testfile
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir
chmod 600 file
chown mage testfile

若用户没有任何权限,则设置权限为空,赋值权限也可直接赋八进制数字

  • 八进制权限:
000 001 010 011 100 101 110 111
--- --x -w- -wx r-- r-x rw- rwx
0 1 2 3 4 5 6 7
640:rw- r-- --- 755:rwx r-x r-x 7:--- --- rwx 0:--- --- ---
  • 文件属性操作
    chown  设置文件的所有者   
chgrp  设置文件的属组信息   

修改文件的属组和属主

修改文件的属主:chown

chown [OPTION]... [OWNER][:[GROUP]] FILE...
    用法:
        命令中的冒号可用. 替换
        -R:  递归
        chown [OPTION]... --reference=RFILE FILE...
            eg:chown -R danran:danran qq
                chown -R danran.danran qq

修改文件的属组:chgrp

chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
    -R  递归

用户属于某个附加组时,才能修改文件的属组为这个附加组
  • 新建文件或目录的默认权限

umask掩码:从777或666中,将文件对应的权限位去掉,从而得出默认权限
umask值:可以用来保留在创建文件权限
新建FILE 权限: 666-umask

如果所得结果某位存在执行(奇数)权限,则将其权限+1

  • umask值计算权限
    用户和组及权限(ACL)_第2张图片

新建DIR 权限: 777-umask
非特权用户umask是002

root 的umask是022
umask: 查看umask值
umask #: 设定umask值

umask 002

umask –S 模式方式显示


umask –p 输出可被调用

  • umask全局设置: /etc/bashrc umask用户设置:~/.bashrc

三、文件系统的特殊权限

  • Suid 和 guid 的特殊权限及sticky位

Suid 当在一个二进制文件上应用了suid后,那么任何人在执行该命令时临时拥有命令拥有人的权限,只能应 用在可执行文件上
u+s

sgid 当在一个二进制文件上应用了sgid后,那么任何人在执行该命令时临时拥有命令拥有组的权限,只能应用在可执行文件上,如果在一个目录上应用了sgid后,那么任何人在该目录创建文件/目录的拥有组会继承目录本身的组
g+s

Sticky 如果在一个目录上应用了sticky权限后,那么该目录中的文件仅文件拥有人和root用户能删除
o+t

  • 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 SGID:2 STICKY:1
  • 权限位映射:

SUID: user, 占据属主的执行权限位

s:属主拥有x权限
S:属主没有x权限

SGID: group, 占据属组的执行权限位

s: group拥有x权限
S: group没有x权限

Sticky: other, 占据other 的执行权限位

t: other 拥有x 权限
T:other 没有x 权限
  • 设定文件的特殊属性

chattr +i 不能删除,改名,更改
chattr +a 只能追加内容
lsattr 显示特定属性

四、ACL权限

ACL访问控制列表:Access Control List ,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs 和ext4 文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4 文件系统无ACL功能, 需手动增加

tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test

  • ACL 生效顺序:所有者,自定义用户,自定义组,其他

getfacl 查看文件的acl属性
setfacl设置文件的acl属性

-m:创建cal
    u:用户
    g:组
    o:其他人
-x:删除acl权限  
-b:清除所有的acl设置
-m:设置mask的值
-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:跳过所有符号链接,包括符号链接文件。 
--version:输出setfacl的版本号并退出。

setfacl -x u:wang file |directory 删除wang用户的acl权限,删除不干净
setfacl -k dir 删除默认ACL权限
setfacl –b file1 清除所有ACL权限
getfacl file1 | setfacl --set-file=- file2 复制file1的acl 权限给file2

用户和组及权限(ACL)_第3张图片

setfacl -m u:danran:rwx passwd 对passwd文件添加danran用户rwx权限,

  • 用户或组的设置必须存在于mask权限设定范围内才会生效

setfacl -m mask::rx file

--set 选项会把原有的ACL 项都删除,用新的替代,需要注意的是一定要包含UGO 的设置,不能象-m 一样只是添加ACL就可以
示例:

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

为多用户或者组的文件和目录赋予访问权限rwx

• mount -o acl /directory
• getfacl file |directory
• setfacl -m u:wang:rwx file|directory
• setfacl -Rm g:sales:rwX directory
• setfacl -M file.acl file|directory 利用编辑好的acl设置文件批量设置acl

用户和组及权限(ACL)_第4张图片

• setfacl -m g:salesgroup:rw file| directory 创建某组的acl权限
• setfacl -m d:u:wang:rx directory 对目录创建默认的acl权限,会作为目录下新建文件的默认权限
用户和组及权限(ACL)_第5张图片

• setfacl -x u:wang file |directory 删除wang用户的acl权限,删除不干净
• setfacl -X file.acl directory 根据acl权限文件批量删除acl权限

  • 备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp 命令需要加上-p参数。但是tar 等常见的备份工具是不会保留目录和文件的ACL信息

getfacl -R /tmp/dir1 > acl.txt 将tmp/dir1目录下所有文件的权限导入到act.txt文件中保存
setfacl -R -b /tmp/dir1 删除/tmp/dir1目录下所有文件的权限
setfacl -R --set-file=acl.txt /tmp/dir1 根据act.txt文件中记录的acl权限还原/tmp/dir1目录下所有文件的acl权限

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

>为多用户或者组的文件和目录赋予访问权限rwx
>>• mount -o acl /directory
• getfacl file |directory
• setfacl -m u:wang:rwx file|directory
• setfacl -Rm g:sales:rwX directory
• setfacl -M file.acl file|directory 利用编辑好的acl设置文件批量设置acl

用户和组及权限(ACL)_第6张图片

• setfacl -m g:salesgroup:rw file| directory 创建某组的acl权限
• setfacl -m d:u:wang:rx directory 对目录创建默认的acl权限,会作为目录下新建文件的默认权限
用户和组及权限(ACL)_第7张图片

• setfacl -x u:wang file |directory 删除wang用户的acl权限,删除不干净
• setfacl -X file.acl directory 根据acl权限文件批量删除acl权限


- 备份和恢复ACL
>主要的文件操作命令cp和mv都支持ACL,只是cp 命令需要加上-p参数。但是tar 等常见的备份工具是不会保留目录和文件的ACL信息
>>getfacl -R /tmp/dir1 > acl.txt 将tmp/dir1目录下所有文件的权限导入到act.txt文件中保存
setfacl -R -b /tmp/dir1 删除/tmp/dir1目录下所有文件的权限
setfacl -R --set-file=acl.txt /tmp/dir1 根据act.txt文件中记录的acl权限还原/tmp/dir1目录下所有文件的acl权限
setfacl --restore acl.txt 根据act.txt文件中记录的acl权限还原当前目录下所有文件的acl权限
getfacl -R /tmp/dir1 查看当前目录下所有文件的ACL权限

  • ACL小结

ACL 文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限), 而非传统的组权限
getfacl 可看到特殊权限:flags
通过ACL 赋予目录默认x 权限 , 目录内文件也不会继承x权限
base ACL 不能删除,即默认的权限
mask 只影响除所有者和other 的之外的人和组的最大权限
Mask 需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)

你可能感兴趣的:(用户和组及权限(ACL))