服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 如何在Linux下设置访问控制列表(ACL)来控制用户的权限

如何在Linux下设置访问控制列表(ACL)来控制用户的权限

2019-10-24 19:25Linux教程网 Linux

Linux下的访问控制列表(ACL)可以做到不同用户对同一文件有不同的权限,那么具体要如何操作呢?下面以图文的形式为大家介绍下如何在Linux下设置访问控制列表来控制用户的权限

Linux下的访问控制列表(ACL)主要用来控制用户的权限,可以做到不同用户对同一文件有不同的权限,那么具体要如何操作呢?下面小编就教你如何在Linux下设置访问控制列表(ACL)来控制用户的权限。

  使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑或者不会有很多用户的虚拟Linux实例,或者当用户不愿意分享他们之间的文件时,这样的工作是很棒的。然而,如果你是在一个大型组织,你运行了NFS或者Samba服务给不同的用户,然后你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。

  Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的“other”或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。

  ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs, 等。如果你不确定你的文件系统是否支持ACL,请参考文档。

  在文件系统使ACL生效

  首先,我们需要安装工具来管理ACL。

  Ubuntu/Debian 中:

  $ sudo apt-get install acl

  CentOS/Fedora/RHEL 中:

  # yum -y install acl

  Archlinux 中:

  # pacman -S acl

  出于演示目的,我将使用ubuntu server版本,其他版本类似。

  安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。

  首先,我们检查ACL功能是否已经开启。

  $ mount

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  你可以注意到,我的root分区中ACL属性已经开启。万一你没有开启,你需要编辑/etc/fstab文件,在你需要开启ACL的分区的选项前增加acl标记。

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  现在我们需要重新挂载分区(我喜欢完全重启,因为我不想丢失数据),如果你对其它分区开启ACL,你必须也重新挂载它。

  $ sudo mount / -o remount

  干的不错!现在我们已经在我们的系统中开启ACL,让我们开始和它一起工作。 

  ACL 范例

  基础ACL通过两条命令管理:setfacl用于增加或者修改ACL,getfacl用于显示分配完的ACL。让我们来做一些测试。

  我创建一个目录/shared给一个假设的用户,名叫freeuser

  $ ls -lh /

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  我想要分享这个目录给其他两个用户test和test2,一个拥有完整权限,另一个只有读权限。

  首先,为用户test设置ACL:

  $ sudo setfacl -m u:test:rwx /shared

  现在用户test可以随意创建文件夹,文件和访问在/shared目录下的任何地方。

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  现在我们增加只读权限给用户test2:

  $ sudo setfacl -m u:test2:rx /shared

  注意test2读取目录需要执行(x)权限

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  让我来解释下setfacl命令格式:

  -m 表示修改ACL。你可以增加新的,或修改存在的ACLu: 表示用户。你可以使用 g 来设置组权限test 用户名:rwx 需要设置的权限。

  现在让我向你展示如何读取ACL:

  $ ls -lh /shared

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  你可以注意到,正常权限后多一个+标记。这表示ACL已经设置成功。要具体看一下ACL,我们需要运行:

  $ sudo getfacl /shared

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  最后,如果你需要移除ACL:

  $ sudo setfacl -x u:test /shared

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  如果你想要立即擦除所有ACL条目:

  $ sudo setfacl -b /shared

  如何在Linux下设置访问控制列表(ACL)来控制用户的权限

  最后,在设置了ACL文件或目录工作时,cp和mv命令会改变这些设置。在cp的情况下,需要添加“p”参数来复制ACL设置。如果这不可行,它将会展示一个警告。mv默认移动ACL设置,如果这也不可行,它也会向您展示一个警告。

  总结

  使用ACL让在你想要分享的文件上拥有更多的能力和控制,特别是在NFS/Samba服务。此外,如果你的主管共享主机,这个工具是必备的。

  上面就是Linux下设置访问控制列表来控制用户权限的方法介绍了,因为ACL的配置和使用较为复杂,初学者在使用的时候容易出现错误,希望本文介绍的方法能够帮助到你。

延伸 · 阅读

精彩推荐
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16