Linux ACL权限设置(setfacl和getfacl)(转)
发布日期:2021-05-17 17:55:19 浏览次数:16 分类:精选文章

本文共 2305 字,大约阅读时间需要 7 分钟。

ACL权限控制在Linux系统中是一个非常重要的功能,可以帮助管理员灵活地管理文件和目录的访问权限。本文将详细介绍如何通过setfaclgetfacl命令来设置和查看ACL权限。

getfacl命令简介

getfacl命令用于查看文件或目录当前设定的ACL权限信息。它的基本格式如下:

[root@localhost ~]# getfacl 文件名

例如:

[root@localhost /]# getfacl project
file: project
owner: root
group: tgroup
user:: rwx
user: st: r-x
group:: rwx
mask:: rwx
other:: ---

从上述输出可以看出,getfacl命令会显示文件或目录的所有者、所属组,以及从高到低依次列出用户、组和其他身份的权限。


setfacl命令简介

setfacl命令用于设定文件或目录的ACL权限。它的基本格式为:

[root@localhost ~]# setfacl 选项 文件名

setfacl命令支持多个选项,以下是常用的参数:

1. -m 参数(设定ACL权限)

  • 给用户或群组添加ACL权限。

  • 格式为“u:用户名:权限”(用户权限)或“g:组名:权限”(组权限)。

  • 示例:

    [root@localhost ~]# setfacl -m u:st:rx /project

    表示给st用户授予/project目录的rx权限。

    如果是为组设置权限,则使用相应的格式:

    [root@localhost ~]# setfacl -m g:tgroup:rx /project

2. -x 参数(删除ACL权限)

  • 删除指定用户或群组的ACL权限。
  • 格式为“u:用户名”(用户)或“g:组名”(组)。
  • 示例:
    [root@localhost ~]# setfacl -x u:st /project

3. -b 参数(删除所有ACL权限)

  • 删除指定文件或目录的所有ACL权限。
  • 示例:
    [root@localhost ~]# setfacl -b /project

4. -d 参数(设定默认ACL权限)

  • 只对目录生效,新建文件会继承此权限。
  • 格式为“d:类型:对象:权限”。
  • 示例:
    [root@localhost ~]# setfacl -m d:u:st:rx /project

5. -R 参数(递归设定ACL权限)

  • 设定ACL权限对子文件和子目录生效。
  • 示例:
    [root@localhost ~]# setfacl -m u:st:rx -R /project

6. -k 参数(删除默认ACL权限)

  • 取消目录的默认ACL权限。
  • 示例:
    [root@localhost ~]# setfacl -k /project

案例:为试听学生分配ACL权限

假设:

  • st是试听学生,将为其分配对/project目录的rx权限。
  • /project目录的所有者为root,所属组为tgroup,其他用户权限为0(未授权)。

1. 新建用户和组

[root@localhost ~]# useradd st
[root@localhost ~]# groupadd tgroup
[root@localhost ~]# chown root:tgroup /project
[root@localhost ~]# chmod 770 /project

2. 为st用户分配权限

[root@localhost ~]# setfacl -m u:st:rx /project

3. 验证权限

[root@localhost /]# cd /project
[root@localhost project]# getfacl project

输出显示:

file: project
owner: root
group: tgroup
user:: rwx
user: st: r-x
group:: rwx
mask:: rwx
other:: ---

通过getfacl可以看到,st用户被授予了rx权限。


递归ACL权限与默认权限

1. 设定递归ACL权限

  • 递归ACL权限确保父目录的权限对已存在的子文件和子目录生效。
  • 示例:
    [root@localhost project]# setfacl -m u:st:rx -R /project

    递归ACL权限设置后,/project目录的子文件和子目录会继受权限。

2. 设定默认ACL权限

  • 默认 ACL权限会自动应用到新建的文件和目录。
  • 示例:
    [root@localhost project]# setfacl -m d:u:st:rx project

    新建文件(如bcd)会继承st用户的rx权限。

3. 删除递归ACL权限

  • 使用-R标记可以清除递归设置:
    [root@localhost project]# setfacl -m u:st:rx -R /project

常见操作

  • 删除用户的ACL权限

    [root@localhost /]# setfacl -x u:st project
  • 删除所有ACL权限

    [root@localhost /]# setfacl -b project
  • 清除默认ACL权限

    [root@localhost /]# setfacl -k project

  • 通过setfaclgetfacl命令,可以灵活地管理文件和目录的ACL权限。理解这些命令的使用方法,可以帮助您更高效地管理文件和目录的访问权限。

    上一篇:Linux chattr命令详解:修改文件系统的权限属性(转)
    下一篇:linux SetUID(SUID)、SetGID(SGID)、Sticky BIT

    发表评论

    最新留言

    逛到本站,mark一下
    [***.202.152.39]2025年04月18日 01时23分30秒