UMASK与ACL

UMASK与ACL

1. 设置默认权限 umask

umask 可以定义新建文件和新建文件夹的权限

umask+default=dir777/file666
022       默认值

非特权用户umask是002  
root的umask是022  

umask :查看  
umask n :设定   
    示例:umask 002  
          umask u=rw,g=r,o=   

umask -S 模式方式显示  
umask -p 输出可被调用  
    例:umask -p >> ~adong/.bashrc  
2. 文件默认权限
    666-umask,如果结果,有奇数,就加1,偶数不变
022
644
666
3. 目录默认权限
    777-umask
022
755
777
file 600
666-600=066
dir
777-066=711
4. 将umask写入家目录配置文件
用户设置:~/.bashrc (不影响其他用户)
全局设置:/etc/bashrc (不推荐)
5. umask 本质的含义
     umask 125 
     666
     umask中 0表示不关心 不检查  1表示 将对应的权限位去除

     110110110
     001010101

     110100010
     642

     看到奇数就加一
  • (umask 066;touch file) 临时性

6. linux文件系统上的特殊权限

SIUD SGID Sticky
三种常用:r,w,x user,group,other

安全上下文
前提:进程有属主和属组
(1)任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
(2)启动为进程之后,其进程的属主为发起者,进程的属组为发起者的组
(3)进程访问文件是的权限,取决于进程的发起者
    (a)进程的发起者,同文件的属主;则应用文件属主权限
    (b)进程的发起者,属于文件的属组;则应用文件属组权限
    (c)应用文件"其他"权限 
SUID 4 作用在所有者上
添加suid权限:
        chmod u+s  file
        chmod 4755 file
    只能作用在二进制的可执行程序文件上,当用户执行此程序时, 将会临时继承此程序所有者的权限
SGID 2 作用在所属组上
添加sgid权限:
        chmod g+s file
        chmod 2755 file
    1.作用在二进制的可执行程序文件上,当用户执行此程序时,将会临时继承此程序所属组的权限
    2.可以作用在目录上,当用户在此目录中创建新文件时,文件的所属组会自动继承目录的所属组
Sticky 1 粘滞位
添加Sticky权限:
        chmod o+t dir
        chmod 1755 dir
    只能作用在目录上,用户只能删除自己的文件
设定文件特定属性
chattr +i 不能删除,改名,更改 
      -R 递归
chattr +a 只能追加内容
lsattr    显示特定属性

7. 访问控制列表

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其他人,可以对更多的用户设置权限
Centos7默认创建的xfs和ext4文件系统具有ACL功能
Centos7之前的版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
    tune2ft -o acl /del/sdb1
    mount -o acl /del/sdb1 /mnt/test
ACL生效顺序:所有者,自定义用户,自定义组,其他人 

文件权限依赖于文件系统 vfat文件系统不支持文件权限

8. FACL --> 文件系统

getfacl file
  • 查看acl权限列表
    常用选项:
    -a,  --access   仅显示文件访问控制列表
    -d, --default   仅显示默认的访问控制列表
    -R, --recursive 递归显示子目录
    -t, --tabular   使用制表符分隔的输出格式
    setfacl
    • 设置facl权限
    -m 修改权限
        -m u:adong:0 file / g:[组名]:rwx 设置文件ACL权限   modify(修改)
    -x 删除权限
    -b 清空权限
    -M 调取文件
    -d --default:设定默认的acl规则
        递归设置acl文件只能对现有的文件实现
        后面新建的文件是没有acl权限的.如果你想后面新建文件也能实现acl权限,就用默认acl权限
    -R 递归
    -X file.acl dirctory 删除目录下每个文件的权限

示例:setfacl  -m  d:u:wang:rx directory   默认每个文件都有rx权限

    echo u:adong:rw > acl.txt
    setfacl -M acl.txt f1 
    getfacl f1
加了acl权限以后所属组的权限已经不是原来所属组的权限,是mask权限
如果一个用户属于多个组,那它将继承多个组的累加权限
mask只影响除所有者和other的之外的人和组的最大权限

Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effctive Permission)
用户或组的设置必须存在于mask权限设定范围内才会生效

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

    例:   
        setfacl --set u::rw,u:adong:rw,g::r,o::- file1  
为多用户或者组的文件和目录赋予访问权限rwx
mount -o acl/directory
getfacl file |directory 
setfacl -m u:wang:rx file |dirctory
setfacl -m g:admins:rw file |dirctory
setfacl -x u:wang file |directory 
setfacl -b file1  清空所有ACL权限
getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2
9. 备份和恢复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
setfacl -R /tmp/dir1

10. 练习

  • 在/testdir/dir⾥创建的新⽂件⾃动属于g1组,组g2的成员如:alice能对这些新⽂件有读写权限,组g3的成员 如:tom只能对新⽂件有读权限,其它⽤户(不属于g1,g2,g3)不能访问这个⽂件夹。
mkdir /testdir/dir -p 
groupadd g1 
groupadd g2 
groupadd g3 

useradd -G g2 alice 
useradd -G g3 tom  

chgrp  g1 /testdir/dir 
chmod 2770 /testdir/dir 

setfacl -Rm d:g:g2:rw /testdir/dir/  设置g2组的默认权限为rw
setfacl -Rm g:g2:rwx /testdir/dir/   设置g2组的权限为rwx
setfacl -Rm g:g3:rx /testdir/dir/    设置g3组的权限为rx
getfacl dir/
# file: dir/
# owner: root
# group: g1
组权限
user::rwx
group::r-x
group:g2:rwx
group:g3:r-x
mask::rwx
other::r-x
(默认权限)
default:user::rwx
default:group::r-x
default:group:g2:rw-
default:mask::rwx
default:other::r-x
  • 备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限
    # getfacl -R /testdir/dir/ > /root/acl.txt
    # setfacl -R -b /testdir/dir
    # getfacl /testdir/dir
    # setfacl -R --set-file=/root/acl.txt /testdir/dir
    chmod -R 444 /  危险
    chown -R adong / 危险  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值