iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >如何在Linux中使用访问控制列表保护文件或目录
  • 447
分享到

如何在Linux中使用访问控制列表保护文件或目录

2023-06-17 09:06:33 447人浏览 泡泡鱼
摘要

本篇内容主要讲解“如何在linux中使用访问控制列表保护文件或目录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在Linux中使用访问控制列表保护文件或目录”吧!作为系统管理员,我们的首要任

本篇内容主要讲解“如何在linux中使用访问控制列表保护文件或目录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在Linux中使用访问控制列表保护文件或目录”吧!

作为系统管理员,我们的首要任务就是切实保护数据的安全,以免被未授权的人访问。我们都很清楚使用一些大有帮助的Linux命令设置的权限,比如chmod、chown和chgrp等命令,可是这些默认的权限集有一定的局限性,有时可能还满足不了我们的要求。比如说,我们就无法针对同一目录或文件为不同用户设置不同的权限集。因而,访问控制列表(ACL)应运而生。

Linux访问控制列表

比如说,你有三个用户,分别是“tecmint1”、“tecmint2”和“tecmint3”。每个用户都有一个共同的用户组,比如说“acl”。用户“tecmint1”希望,只有“tecmint2”用户才能读取和访问归“tecmint1”用户所有的文件,其他人都无权访问该文件。

访问控制列表(ACL)让我们可以做到同样这点。这些ACL让我们可以为某个用户、用户组或不在用户组列表中的任何用户的任何组授予权限。

注意:按照红帽产品说明文档,它为ext3文件系统和NFS导出文件系统提供了ACL支持。

如何检查Linux系统中的ACL支持?

在继续下一步之前,你应确保ACL在现有的内核和已挂载的文件系统上得到支持。

1. 检查内核是否支持ACL。

运行下面这个命令,检查是否为文件系统提供ACL支持,是否有POSIX_ACL=Y选项(如果出现的是N,而不是Y,那么这意味着内核并不支持ACL,需要重新加以编译)。

[root@linux ~]# grep -i acl /boot/config*

CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

2. 检查所需的程序包。

在开始处理ACL之前,要确保你已安装了所需的程序包。下面是所需的程序包,需要使用yum或apt-get命令加以安装。

[root@linux ~]# yum install nfs4-acl-tools acl libacl  [on RedHat based systems][tecmint@linux ~]$ sudo apt-get install nfs4-acl-tools acl [on Debian based systems]

3. 检查已挂载的文件系统是否支持ACL。

现在,检查已挂载的文件系统是否使用ACL选项挂载的。我们可以使用“mount”命令来进行同样的检查,如下所示。

[root@linux ~]# mount  | grep -i root/dev/mapper/fedora-root on / type ext4 (rw,relatime,data=ordered)

但在本例中,它在默认情况下没有显示acl。所以,接下来我们可以再次使用acl选项,重新挂载已挂载的分区。但在继续下一步之前,我们还有另一个选项:确保有没有使用acl选项来挂载,因为对较新系统而言,它可能整合了默认的挂载选项。

[root@linux ~]# tune2fs -l /dev/mapper/fedora-root | grep aclDefault mount options:    user_xattr acl

在上面的输出结果中,你能看到默认的挂载选项已经支持acl。另一个选项是,重新挂载分区,如下所示。

[root@linux ~]# mount -o remount,acl /

下一步,将下面这一项条目添加到/etc/fstab文件,让其具有***性。

/dev/mapper/fedora-root / ext4 defaults,acl 1 1

再次重新挂载分区。

[root@linux ~]# mount -o remount /

4. 针对NFS服务器

在NFS服务器上,如果NFS服务器导出的文件系统支持ACL,ACL又可以被NFS客户机读取,那么客户机系统就能使用ACL。

想禁用NFS共享区上的ACL,你就得在NFS服务器的“/etc/exportfs”文件中添加选项“no_acl”。想在NSF客户端禁用它,那么在挂载期间再次使用“no_acl“选项。

如何在Linux系统中实现ACL支持?

ACL有两种类型:

◦访问ACL:访问ACL用于授予针对任何文件或目录的权限。

◦默认ACL:默认ACL用于授予/设置只针对特定目录的访问控制列表。

访问ACL与默认ACL之间的区别如下:

◦默认ACL只能用在目录级别。

◦在该目录里面创建的任何子目录或文件将从父目录那里继承ACL。另一方面,文件继承默认ACL作为其访问ACL。

◦我们使用“–d”来设置默认ACL,默认ACL是可选的。

在设置默认ACL之前

想为特定的文件或目录设置默认ACL,可以使用“getfacl”命令。在下面这个例子中,getfacl用于为文件夹“Music”获得默认ACL。

[root@linux ~]# getfacl Music/# 文件:Music/# 所有者:root# 用户组:rootuser::rwxgroup::r-xother::r-xdefault:user::rwxdefault:group::r-xdefault:other::rw-

设置默认ACL之后

想为特定的文件或目录设置默认ACL,使用“setfacl”命令。在下面这个例子中,setfacl命令将为文件夹“Music”设置新的ACL(读取和执行)。

[root@linux ~]# setfacl -m d:o:rx Music/[root@linux ~]# getfacl Music/# 文件:Music/# 所有者:root# 用户组:rootuser::rwxgroup::r-xother::r-xdefault:user::rwxdefault:group::r-xdefault:other::r-x

如何设置新的ACL

使用“setfacl”命令用于设置或修改任何文件或目录。比如说,想为用户“tecmint1”授予读取和写入权限。

# setfacl -m u:tecmint1:rw /tecmint1/example

如何查看ACL

使用“getfacl”命令用于查看任何文件或目录的ACL。比如说,想查看“/tecmint1/example”上的ACL,使用下面这个命令。

# getfacl /tecmint1/example

# 文件:tecmint1/example/
# 所有者:tecmint1
# 用户组:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---

如何删除ACL

想删除任何文件/目录的ACL,我们可以使用x和b这两个选项,如下所示。

# setfacl -x ACL file/directory # 只删除文件/目录的指定ACL
# setfacl -b file/directory # 删除文件/目录的所有ACL

不妨将ACL实现到下列场景。

两个用户(tecmint1和tecmint2)都有共同的辅助组,名为“acl”。我们将创建归“tecmint1”用户所有的一个目录,并为用户“tecmint2”提供针对该目录的读取和执行权限。

创建两个用户,并清除两个用户的密码。

[root@linux ~]# for user in tecmint1 tecmint2

> do
> useradd $user
> passwd -d $user
> done
Removing passWord for user tecmint1.
passwd: Success
Removing password for user tecmint2.
passwd: Success

为辅助组创建用户组和用户。

[root@linux ~]# groupadd acl[root@linux ~]# usermod -G acl tecmint1 [root@linux ~]# usermod -G acl tecmint2

创建目录/tecmint,并将所有权改为tecmint1。

[root@linux ~]# mkdir /tecmint1
[root@linux ~]# chown tecmint1 /tecmint1/

[root@linux ~]# ls -ld /tecmint1/
drwxr-xr-x 2 tecmint1 root 4096 Apr 17 14:46 /tecmint1/

[root@linux ~]# getfacl /tecmint1
getfacl: Removing leading '/' from absolute path names
# 文件:tecmint1
# 所有者:tecmint1
# 用户组:root
user::rwx
group::r-x
other::r-x

以tecmint1身份登录,在/tecmint文件夹下创建一个目录。

[tecmint@linux ~]$ su - tecmint1
Last login: Thu Apr 17 14:49:16 IST 2014 on pts/4

[tecmint1@linux ~]$ cd /tecmint1/
[tecmint1@linux tecmint1]$ mkdir example

[tecmint1@linux tecmint1]$ ll
total 4
drwxrwxr-x 2 tecmint1 tecmint1 4096 Apr 17 14:50 example

[tecmint1@linux tecmint1]$ whoami
tecmint1

现在使用“setfacl”设置ACL,那样“tecmint1”用户会拥有所有的rwx(读取、写入和执行)权限,“tecmint2”用户只有“example”文件夹上的读取权限,其他用户没有任何权限。

$ setfacl -m u:tecmint1:rwx example/
$ setfacl -m u:tecmint2:r-- example/
$ setfacl -m  other:--- example/
$ getfacl example/

# 文件:example
# 所有者:tecmint1
# 用户组:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::r-x
mask::rwx
other::---

现在以另一用户(即“tecmint2”)的身份在另一个终端上登录,将目录改为“/tecmint1”。现在试着使用“ls”命令,查看内容,然后试着更改目录,看看有什么区别,如下所示。

[tecmint@linux ~]$ su - tecmint2
Last login: Thu Apr 17 15:03:31 IST 2014 on pts/5

[tecmint2@linux ~]$ cd /tecmint1/
[tecmint2@linux tecmint1]$ ls -lR example/
example/:
total 0

[tecmint2@linux tecmint1]$ cd example/
-bash: cd: example/: Permission denied

[tecmint2@linux tecmint1]$ getfacl example/
# 文件:example
# 所有者:tecmint1
# 用户组:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---

现在为“tecmint2”用户授予针对“example”文件夹的“执行”权限,然后使用“cd”命令看看有什么效果。现在,“tecmint2”用户拥有查看和更改目录的权限,但没有写入任何内容的权限。

[tecmint1@linux tecmint1]$ setfacl -m u:tecmint2:r-x example/
[tecmint1@linux tecmint1]$ getfacl example/

# 文件:example
# 所有者:tecmint1
# 用户组:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r-x
group::rwx
mask::rwx
other::---

[tecmint@linux ~]$ su - tecmint2
Last login: Thu Apr 17 15:09:49 IST 2014 on pts/5

[tecmint2@linux ~]$ cd /tecmint1/
[tecmint2@linux tecmint1]$ cd example/
[tecmint2@linux example]$ getfacl .[tecmint2@linux example]$ mkdir test
mkdir: cannot create directory 'test': Permission denied

[tecmint2@linux example]$ touch test
touch: cannot touch 'test': Permission denied

注意:实现ACL后,你会看到“ls –l”输出有一个额外的“+”符号,如下所示。

[root@linux tecmint1]# ll

total 4
drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example

到此,相信大家对“如何在Linux中使用访问控制列表保护文件或目录”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何在Linux中使用访问控制列表保护文件或目录

本文链接: https://www.lsjlt.com/news/288222.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Linux中使用访问控制列表保护文件或目录
    本篇内容主要讲解“如何在Linux中使用访问控制列表保护文件或目录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在Linux中使用访问控制列表保护文件或目录”吧!作为系统管理员,我们的首要任...
    99+
    2023-06-17
  • 如何使用CentOS系统中的访问控制列表(ACL)来限制文件和目录的访问权限
    使用CentOS系统中的访问控制列表(ACL)来限制文件和目录的访问权限,可以按照以下步骤进行操作:1. 检查文件系统是否支持ACL...
    99+
    2023-10-10
    CentOS
  • Cacls如何显示或修改任意访问控制列表文件
    本篇内容主要讲解“Cacls如何显示或修改任意访问控制列表文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Cacls如何显示或修改任意访问控制列表文件”吧!Cacls 显示或修改任意访问控制列...
    99+
    2023-06-09
  • linux如何在vim中用密码保护文件
    小编给大家分享一下linux如何在vim中用密码保护文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在vim中用密码保护文件害怕root用户或者其他人偷窥你的个...
    99+
    2023-06-27
  • 如何在Go中使用Casbin进行访问控制
    目录Casbin是什么Casbin的工作原理Casbin的核心概念ModelPolicy实践创建项目代码开发验证Casbin是什么 Casbin是一个强大的、高效的开源访问控制框架,...
    99+
    2024-04-02
  • 如何使用安全的数据库访问控制保护CentOS服务器中的数据
    要保护CentOS服务器中的数据,可以采取以下安全数据库访问控制措施:1. 安装和配置防火墙:在CentOS服务器上安装防火墙,如i...
    99+
    2023-10-12
    CentOS
  • 如何在Linux中用Vim对文件进行密码保护
    小编给大家分享一下如何在Linux中用Vim对文件进行密码保护,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Vim 是一种流行的、功能丰富的和高度可扩展的 Lin...
    99+
    2023-06-16
  • ListView列表组件如何在Android项目中使用
    ListView列表组件如何在Android项目中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ListView是一种非常常见的一个组件,以垂直列表的形式显示列表项。而...
    99+
    2023-05-31
    android listview roi
  • 如何在RedHat Linux 6.8新增ftp用户限制目录和访问ip
    如何在RedHat Linux 6.8新增ftp用户限制目录和访问ip,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。导读在RedHat Linux 6.8新...
    99+
    2023-06-05
  • 如何使用 Google Drive API(v3) 获取目录中所有文件的列表
    本篇文章向大家介绍《如何使用 Google Drive API(v3) 获取目录中所有文件的列表》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。问题内容我一直坚持使用必须返回目录中所有文件...
    99+
    2024-04-05
  • 如何使用Linux命令移动/复制文件/目录到指定目录下
    这篇文章主要介绍“如何使用Linux命令移动/复制文件/目录到指定目录下”,在日常操作中,相信很多人在如何使用Linux命令移动/复制文件/目录到指定目录下问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使...
    99+
    2023-07-06
  • ASP 教程:如何在 Linux 系统中使用重定向实现访问控制?
    在 Web 应用程序的开发过程中,访问控制是非常重要的一个方面,它可以保护你的应用程序免受未授权的访问。在 Linux 系统中,使用重定向可以实现简单而有效的访问控制。本教程将介绍如何在 Linux 系统中使用重定向实现访问控制。 什么...
    99+
    2023-10-28
    教程 linux 重定向
  • Linux中如何列举大于指定大小文件的所在目录
    这篇文章主要为大家展示了“Linux中如何列举大于指定大小文件的所在目录”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何列举大于指定大小文件的所在目录”这篇文章吧。在Linux系统...
    99+
    2023-06-12
  • linux如何罗列一个系统中所有使用了SUID控制的文件
    ...
    99+
    2024-04-02
  • Linux中如何使用chgrp和umask命令控制文件权限
    这篇文章将为大家详细讲解有关Linux中如何使用chgrp和umask命令控制文件权限,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。chgrp - 改变文件的组所有权总览chgrp [选项]...
    99+
    2023-06-12
  • Linux系统中如何使用mv命令移动文件和目录
    本篇文章给大家分享的是有关Linux系统中如何使用mv命令移动文件和目录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mv(move)命令,适用于移动文件或者目录,还可以对文件...
    99+
    2023-06-28
  • Linux Shell在目录下如何使用for循环结合if查找文件
    这篇文章主要介绍Linux Shell在目录下如何使用for循环结合if查找文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.for循环对目录做遍历,if判断文件是否为要查找的文件。示例1:#!/bin/bash...
    99+
    2023-06-09
  • 如何在Linux系统中使用Git来管理PHP项目的版本控制?
    在现代的软件开发中,版本控制是一个必不可少的工具。Git是一款非常流行的版本控制系统,它可以跟踪代码的变化,记录历史版本,协作开发,等等。在Linux系统中,使用Git来管理PHP项目的版本控制是非常常见的。在本文中,我们将介绍如何在Lin...
    99+
    2023-09-01
    path linux git
  • 如何在Linux系统中使用Git来管理PHP项目的分支控制?
    Git是一个非常流行的版本控制系统,它可以跟踪文件的变化并允许多个开发者在同一项目上协同工作。在Linux系统上,Git是一种非常常见的工具,可以用来管理PHP项目的分支控制。在本文中,我们将介绍如何在Linux系统中使用Git来管理PH...
    99+
    2023-09-01
    path linux git
  • 如何使用SQL语句在MongoDB中实现数据权限控制和访问管理?
    如何使用SQL语句在MongoDB中实现数据权限控制和访问管理?MongoDB是一种面向文档的NoSQL数据库,而SQL(Structured Query Language)是关系型数据库管理系统的标准语言。尽管MongoDB不支持SQL的...
    99+
    2023-12-17
    MongoDB SQL语句 数据权限控制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作