加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

除了传统rwx权限,你知道Linux还有acl访问控制权限吗?详细教程

发布时间:2023-02-08 12:35:53 所属栏目:Unix 来源:
导读:  如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

  1. 前言

  本文主要讲解Linux acl访问控制权限的原理以及日常使用方法。是Linux系统管理中的一个重要安全工具及策略
  如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习
 
  1. 前言
 
  本文主要讲解Linux acl访问控制权限的原理以及日常使用方法。是Linux系统管理中的一个重要安全工具及策略设置,运维人员必须掌握好。
 
  2. Linux acl权限控制的原理
 
  我们知道 Linux 的权限控制是非常重要的,传统的权限仅有三种身份 (owner, group, others) ,即文件或者目录拥有者权限、拥有者同组成员的权限、其它用户的权限,搭配三种权限 (r,w,x),即可读、可写、可执行而已UNIX 文件权限,这些权限可以通过 chmod、 chown 等命令来修改。然而并没有办法单纯的针对某一个使用者或某一个群组来设置特定的权限需求。此时就得要使用 ACL 这个工具了。
 
  比如有个名为zcwyou的用户,他想要修改 nginx.conf 这个配置文件,然而这个文件是归root 用户所有,这样怎样为单个用户做特定授权呢? 为了解决这种情况,访问控制列表Access Control List(ACL)诞生了。
 
  ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限设置。ACL 可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。它为文件系统提供了附加的、更具有弹性的权限机制。 它被设计来为补充 UNIX 文件权限机制。 ACL 允许你赋予任何某用户/组访问某项资源的权限。 setfacl 与 getfacl 命令会帮助你管理 ACL 而不会有任何麻烦。
 
  那ACL工具主要支持以下对象设置安全权限:
 
  使用者 (user):可以针对使用者来设置权限;
 
  群组 (group):针对群组为对象来设置其权限;
 
  默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;
 
  也就是说,如果你有一个目录,需要给一堆人使用,每个人或每个群组所需要的权限并不相同时,在过去,传统的 Linux 三种身份的三种权限是无法达到的, 因为基本上,传统的 Linux 权限只能针对一个用户、一个群组及非此群组的其他人设置权限而已,无法针对单一用户或个人来设计权限。 而 ACL 就是为了要改变这个问题啊!好了,稍微了解之后,再来看看如何让你的文件系统可以支持 ACL 吧!
 
  3. Linux acl权限控制的工具集
 
  查看Linux acl权限工具是否有安装,一般情况下,系统都是默认安装的。
 
  [root@zcwyou ~]# rpm -qa |grep acl

  查看linux acl工具包
 
  如果没有安装,使用以下命令安装它:
 
  [root@zcwyou ~]# yum -y install acl
  4. Linux acl权限控制工具的使用
 
  运行 tune2fs 命令来检查是否启用了 ACL。
 
  [root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options
  显示如下
 
  Default mount options: (none)
 
  上面的输出很明显第说明 /dev/sdb1 分区没有启用 ACL。
 
  如果结果中没有列出 acl,则你需要在挂载选项中加上 acl。 为了让它永久生效, 修改 /etc/fstab 中 /app 这一行成这样:
 
  [root@zcwyou ~]# vi /etc/fstab
 
  开机默认为分区开启linux acl
 
  修改为以下这行,
 
  /dev/sdb1 /app ext4 defaults,acl 1 1
 
  当然,你也可以使用下面命令将其添加道文件系统的超级块中:
 
  [root@zcwyou ~]# tune2fs -o +acl /dev/sdb1
  然后,通过运行以下命令来动态修改选项:
 
  [root@zcwyou ~]# mount -o remount,acl /app
  再次运行tune2fs看看是否开启了acl
 
  [root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options

  输出。
 
  Default mount options: acl
 
  CentOS 7默认已经启用acl,可以直接使用。
 
  5. 如何查看默认acl的设置
 
  [root@zcwyou ~]# getfacl /etc/passwd
  getfacl: Removing leading '/' from absolute path names
 
  file: etc/passwdowner: rootgroup: root
 
  user::rw-
 
  group::r--
 
  other::r--

  6. 如何为文件设置acl属性
 
  以下面格式运行 setfacl 命令可以为指定文件设置 ACL。在下面的例子中,我们会给 zcwyou用户对 /etc/samba/smb.conf文件 rwx 的权限。
 
  [root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf

  为文件设置acl属性
 
  setfacl命令部分参数
 
  -m: 修改文件的当前 ACL
 
  u: 指明用户
 
  magi: 用户名
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章