详解Linux ACL权限设置(setfacl和getfacl)

yizhihongxing

Linux ACL(Access Control Lists),又称访问控制列表,是 Linux 内核所提供的权限控制手段。ACL 出现的最初目的是希望在 NFS 中提供更为灵活的文件权限控制方式,能够更好地支持文件共享。Linux 系统中具有使用 ACL 进行权限设置的能力,可以对文件和目录进行更为细致的权限控制。

setfacl 命令

setfacl 命令用于添加/修改文件或文件夹的 ACL 权限,形式:

setfacl [-bkndRLP] [-m permissions] [-M file] [-x permissions] [-X file] file ...

参数说明:
- -b: 移除有效附加权限。
- -k: 移除默认 ACL 条目。
- -n: 不会将用户和组名称转换为数字ID。
- -d: 设置默认 ACL 条目。
- -R: 递归地为文件和子目录设置 ACL 权限。
- -L: 如果源是一个符号链接,则跟随符号链接并修改其指向的文件/目录的 ACL 权限。
- -P: 不要跟随符号链接的文件/目录,而是忽略符号链接本身的权限。
- -m: 添加/修改 ACL 条目。
- -M: 将 ACL 条目从一个文件复制到目标文件或目录。
- -x: 移除 ACL 条目。
- -X: 从一个文件中移除 ACL 条目。

下面分别介绍 setfacl 命令的几种用法:

添加 ACL 条目

使用 -m 参数来添加 ACL 条目,例如:

setfacl -m u:serena:rw- file.txt

上面的例子中,将对 file.txt 文件添加 ACL 条目,给用户 serena 授予读写权限。

同时也可以同时添加 ACL 条目,例如:

setfacl -m u:tom:--x,g:dev:r--,o::r-- file.txt

上面的例子中,将对 file.txt 文件同时添加两个 ACL 条目,一个给用户 tom 授予执行权限,一个给组 dev 授予读权限,其他人只读权限。

修改 ACL 条目

使用 -m 参数修改某个用户/组的权限,例如:

setfacl -m u:serena:r-- file.txt

上面的例子中,将对 file.txt 文件中已有的 ACL 条目,重新设置用户 serena 的权限为只读。

移除 ACL 条目

使用 -x 参数移除 ACL 条目,例如:

setfacl -x u:serena file.txt

上面的例子中,将对 file.txt 文件中移除指定用户 serena 的 ACL 条目。

递归设置 ACL 权限

使用 -R 参数递归设置文件夹及其子文件夹内的 ACL 权限,例如:

setfacl -R -m u:tom:--x,g:dev:r--,o::r-- folder

上面的例子中,将递归设置 folder 文件夹及其子文件夹内的文件/文件夹的 ACL 权限。

getfacl 命令

getfacl 命令用于查看文件或文件夹的 ACL 权限,形式:

getfacl [-R|-r|-d] [-O outputfile] file ...

参数说明:
- -R: 递归地列出目录层次中的所有文件。
- -r: 不访问符号链接的文件,而是列出链接本身的权限信息。
- -d: 显示默认 ACL 条目。
- -O: 将文件保存到 outputfile 中。

下面介绍 getfacl 命令的几种用法:

查看文件/文件夹的 ACL 权限

读取文件的 ACL 权限,例如:

getfacl file.txt

上面的例子中,会输出 file.txt 文件的 ACL 权限。

递归查看目录及其子目录中的 ACL 权限

递归查看目录及其子目录中所有文件的 ACL 权限,例如:

getfacl -R folder

上面的例子中,会递归查看 folder 文件夹及其子文件夹中所有文件的 ACL 权限。

输出到文件

输出文件 ACL 权限到文件中,例如:

getfacl -R folder > acl.txt

上面的例子中,将会递归输出 folder 文件夹及其子文件夹中所有文件的 ACL 权限信息到 acl.txt 文件中。

以上是关于 Linux ACL 权限设置的详细讲解,我们可以通过 setfacl 和 getfacl 命令来设置和查看文件和目录的 ACL 权限。这种文件和文件夹权限控制的方式更为灵活,可以方便地向指定用户或组授予不同的读写执行权限,应用范围较广。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Linux ACL权限设置(setfacl和getfacl) - Python技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • 详解Linux file命令:显示文件类型

    以下是关于Linux file命令的详细作用与使用方法: file命令简介 file命令是Linux系统中常用的一个命令,用于查看文件的类型,以及一些文件的基本信息。使用file命令能够让我们快速了解一个文件的大体情况,对于日常文件操作和问题排查都有很大的帮助。 file命令语法 file命令的基本语法如下: file [option] name 其中opt…

    Linux函数大全 2023年3月24日
    00
  • 详解Linux useradd命令:创建新用户账户

    Linux系统中,useradd命令是用于创建新用户账户的命令。下面我们来详细讲解一下它的作用和使用方法。 useradd命令的作用 useradd命令主要用于创建新用户账户,同时也可以设置用户的属性和选项。创建一个新用户账户后,可以通过这个账户来登录系统,并获得一定的权限。 useradd命令的使用方法 useradd命令的基本用法如下所示: userad…

    Linux函数大全 2023年3月24日
    00
  • 详解Linux chown命令:修改文件所有者

    Linux的chown命令是用于修改文件或目录的所有者(Owner)和所属组(Group),它的作用是重新将文件或目录的所有者和所属组分配给不同的用户或者用户组。这个命令在服务器管理中非常常用,下面是它的使用方法的完整攻略。 命令格式 chown [选项] [所有者][:[所属组]] 文件名 命令选项 -R, 修改当前目录下的所有文件 -v, 详细输出修改信…

    Linux函数大全 2023年3月24日
    00
  • 详解Linux rm命令:删除文件或目录

    Linux的rm命令是一个非常常用的命令,主要作用是用于删除文件和目录。以下是该命令的完整攻略。 命令作用 rm命令用于删除指定的文件或目录。当rm命令只操作普通文件(不包括目录文件)时, 将直接删除该文件。当rm命令删除目录文件时,需要加上参数-r或-R,这样才能够将该目录及其子目录中的所有文件都删除。 语法格式 rm命令的典型语法格式如下: rm [选项…

    Linux函数大全 2023年3月24日
    00
  • 详解Linux RPM包验证和数字证书

    在Linux系统中,RPM包验证和数字证书(数字签名)是保证软件安全性与可信度的重要手段。下面,我们将分别讲解这两个方面的攻略,并提供代码示例。 一、Linux RPM包验证 1. RPM包介绍 在Linux系统中,RPM包是一种预编译的软件包格式,主要用于在Red Hat、Fedora、CentOS等基于RPM的Linux发行版中安装软件。RPM包包含了软…

    Linux软件安装 2023年3月25日
    00
  • 详解Linux ps命令:查看正在运行的进程

    Linux中的ps命令是Process Status的缩写,用于查看系统中的进程信息。它可以用来列出系统中正在运行的进程,以及它们的状态、占用的资源等信息。以下是关于ps命令的详细说明: 命令语法 ps命令的语法如下: ps [options] 命令选项 以下是常用的ps命令选项: -a:显示所有用户的进程,而不仅仅是当前用户的进程。 -u:显示用户和其他详…

    Linux系统管理 2023年3月25日
    00
  • 详解Linux id命令:查看用户的UID和GID

    下面是关于 Linux id 命令的详细讲解。 一、命令简介 Linux id 命令用于显示当前用户的真实(UID)、有效(EUID)、保存(SUID)的用户 ID 和所属组的真实(GID)、有效(EGID)、保存(SGID)的 ID。它通常用于查看用户以及用户组的相关信息。 二、命令格式 id 命令的基本格式为: id [选项]… [用户名] 其中,用…

    Linux用户和用户组管理 2023年3月25日
    00
  • 详解Linux lsof命令:列出当前系统打开的文件

    lsof (list open files) 命令在 Linux/unix 系统中常常用于检查某些文件相关问题,比如查看哪些进程在使用某些文件、哪些文件正在被打开、哪些用户正在使用哪些文件等。下面是更详细的介绍。 安装 lsof 大部分 Linux 操作系统默认安装了 lsof 命令,但是如果你的系统没有安装,可以使用以下命令进行安装: CentOS/RHE…

    Linux函数大全 2023年3月24日
    00
合作推广
合作推广
分享本页
返回顶部