一、什么是ACL?为什么要启用它?

ACL是Linux文件系统的扩展权限机制,默认的文件权限只能控制“所有者、所属组、其他人”三类用户,而ACL可以给特定用户或组单独设置权限(比如让用户小明访问文件,即使他不在所属组中)。

大部分现代Linux文件系统(如ext3、ext4、xfs)都支持ACL,但需要手动启用才能使用。

二、检查当前系统是否已启用ACL

首先,我们需要确认当前文件系统是否已经开启了ACL支持,步骤如下:

  1. 打开终端,输入以下命令查看文件系统挂载信息:

    mount
    
  2. 在输出结果中,找到你要启用ACL的文件系统(比如根目录//home),查看挂载参数中是否包含acl
    示例输出(含acl表示已启用):

    /dev/sda1 on / type ext4 (rw,relatime,acl)  # 这里的“acl”说明已启用
    

三、如果未启用ACL,手动开启的步骤

1. 临时启用ACL(重启后失效,适合测试)

如果挂载参数中没有acl,可以通过“重新挂载”文件系统临时启用ACL,命令格式:

sudo mount -o remount,acl 目标目录
  • 示例:启用根目录/的ACL
    sudo mount -o remount,acl /
    
  • 示例:启用/home目录的ACL
    sudo mount -o remount,acl /home
    

执行后,再次用mount命令检查,会发现参数中已添加acl

2. 永久启用ACL(重启后仍生效)

临时启用会在重启后失效,若要永久生效,需要修改系统的挂载配置文件/etc/fstab

  1. 先获取文件系统的UUID(唯一标识),输入以下命令:

    blkid
    

    找到目标目录对应的UUID(比如根目录/对应的UUID="xxxx-xxxx-xxxx")。

  2. 编辑/etc/fstab文件(需要管理员权限):

    sudo nano /etc/fstab  # 用nano编辑器打开,也可以用vim
    
  3. 在文件中找到目标目录的配置行,在挂载参数(通常是defaults)后添加,acl
    示例(原配置):

    UUID=xxxx-xxxx-xxxx  /  ext4  defaults  0  0
    

    修改后(添加,acl):

    UUID=xxxx-xxxx-xxxx  /  ext4  defaults,acl  0  0
    
  4. 保存并退出编辑器(nano按Ctrl+O保存,Ctrl+X退出)。

  5. 使配置生效(无需重启):

    sudo mount -a
    

四、验证ACL是否启用成功

配置完成后,用mount命令再次检查目标文件系统的挂载参数,若包含acl,则表示启用成功。

此时,你就可以使用setfacl(设置ACL权限)和getfacl(查看ACL权限)命令管理文件权限了。例如:

# 给用户“bob”设置对文件“test.txt”的读写执行权限
sudo setfacl -m u:bob:rwx test.txt

# 查看文件“test.txt”的ACL权限
getfacl test.txt

总结

启用ACL的核心步骤:

  1. mount检查是否已启用ACL;
  2. 临时启用:sudo mount -o remount,acl 目录
  3. 永久启用:修改/etc/fstab,添加acl参数后执行mount -a

启用后,就能实现更灵活的权限控制,给特定用户或组单独授权啦!