grep options
Default mount options: acl
现在 /dev/sdb1 分区中有 ACL 选项了。
如何查看默认的 ACL 值
要查看文件和目录默认的 ACL 值,可以使用 getfacl 命令后面加上文件路径或者目录路径。 注意,当你对非 ACL 文件/目录运行 getfacl 命令时, 则不会显示附加的 user 和 mask 参数值。
# getfacl /etc/apache2/apache2.conf
# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
other::r--
如何为文件设置 ACL
以下面格式运行 setfacl 命令可以为指定文件设置 ACL。在下面的例子中,我们会给 magi 用户对 /etc/apache2/apache2.conf 文件 rwx 的权限。
# setfacl -m u:magi:rwx /etc/apache2/apache2.conf
仔细分析起来:
setfacl: 命令
-m: 修改文件的当前 ACL
u: 指明用户
magi: 用户名
rwx: 要设置的权限
/etc/apache2/apache2.conf: 文件名称
再查看一次新的 ACL 值:
# getfacl /etc/apache2/apache2.conf
# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
user:magi:rwx
group::r--
mask::rwx
other::r--
注意:若你发现文件或目录权限后面有一个加号(+),就表示设置了 ACL。
# ls -lh /etc/apache2/apache2.conf
-rw-rwxr--+ 1 root root 7.1K Sep 19 14:58 /etc/apache2/apache2.conf
如何为目录设置 ACL
以下面格式运行 setfacl 命令可以递归地为指定目录设置 ACL。在下面的例子中,我们会将 /etc/apache2/sites-available/ 目录中的 rwx 权限赋予 magi 用户。
# setfacl -Rm u:magi:rwx /etc/apache2/sites-available/
其中:
-R:递归到子目录中
再次查看一下新的 ACL 值。
# getfacl /etc/apache2/sites-available/
# file: etc/apache2/sites-available/
# owner: root
# group: root
user::rwx
user:magi:rwx
group::r-x
mask::rwx
other::r-x
现在 /etc/apache2/sites-available/ 中的文件和目录都设置了 ACL。
# ls -lh /etc/apache2/sites-available/
total 20K
-rw-rwxr--+ 1 root root 1.4K Sep 19 14:56 000-default.conf
-rw-rwxr--+ 1 root root 6.2K Sep 19 14:56 default-ssl.conf
-rw-rwxr--+ 1 root root 1.4K Dec 8 02:57 mywebpage.com.conf
-rw-rwxr--+ 1 root root 1.4K Dec 7 19:07 testpage.com.conf
如何为组设置 ACL
以下面格式为指定文件运行 setfacl 命令。在下面的例子中,我们会给 appdev 组赋予 /etc/apache2/apache2.conf 文件的 rwx 权限。
# setfacl -m g:appdev:rwx /etc/apache2/apache2.conf
其中:
g:指明一个组
对多个用户和组授权,只需要用 逗号 区分开,就像下面这样。
# setfacl -m u:magi:rwx,g:appdev:rwx /etc/apache2/apache2.conf
如何删除 ACL
以下面格式运行 setfacl 命令会删除文件对指定用户的 ACL。这只会删除用户权限而保留 mask 的值为只读。
# setfacl -x u:magi /etc/apache2/apache2.conf
其中:
-x:从文件的 ACL 中删除
再次查看 ACL 值。在下面的输出中我们可以看到 mask 的值是读。
# getfacl /etc/apache2/apache2.conf
# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
使用 -b 来删除文件中所有的 ACL。
# setfacl -b /etc/apache2/apache2.conf
其中:
-b:删除所有的 ACL 条目
再次查看删掉后的 ACl 值就会发现所有的东西都不见了,包括 mask 的值也不见了。
# getfacl /etc/apache2/apache2.conf
# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
other::r--
如何备份并还原 ACL
下面命令可以备份和还原 ACL 的值。要制作备份, 需要进入对应的目录然后这样做(假设我们要备份 sites-available 目录中的 ACL 值)。
# cd /etc/apache2/sites-available/
# getfacl -R * >acl_backup_for_folder
还原的话,则运行下面命令:
# setfacl --restore=/etc/apache2/sites-available/acl_backup_for_folder
Linux是一套免费使用和自由传播的类Unix操作系统
关键词:使用ACL设置用户访问指定文件/目录的权限