当前位置: 首页 > 科技观察

在Linux中使用访问控制列表(ACL)保护文件-目录_0

时间:2023-03-15 18:33:43 科技观察

作为系统管理员,我们的首要任务是有效地保护数据的安全,不被未经授权的人访问。我们都很清楚使用一些有用的Linux命令设置的权限,例如chmod、chown和chgrp,但是这些默认的权限设置有一定的局限性,有时它们可??能无法满足我们的要求。例如,我们不能为同一个目录或文件为不同的用户设置不同的权限集。因此,访问控制列表(ACL)应运而生。Linux访问控制列表例如,您有三个名为“tecmint1”、“tecmint2”和“tecmint3”的用户。每个用户都有一个共同的用户组,比如“acl”。用户“tecmint1”希望只有“tecmint2”用户可以读取和访问“tecmint1”用户拥有的文件,其他任何人都不能访问该文件。访问控制列表(ACL)允许我们做同样的事情。这些ACL允许我们向用户、用户组或不在用户组列表中的任何用户的任何组授予权限。注意:根据RedHat产品文档,它为ext3文件系统和NFS导出文件系统提供ACL支持。如何在Linux系统中检查ACL支持?在继续下一步之前,您应该确保现有内核和挂载的文件系统支持ACL。1.检查内核是否支持ACL。运行以下命令查看文件系统是否提供ACL支持,是否有POSIX_ACL=Y选项(如果出现N而不是Y,则说明内核不支持ACL,需要重新编译)。[root@linux~]#grep-iacl/boot/config*CONFIG_EXT4_FS_POSIX_ACL=yCONFIG_REISERFS_FS_POSIX_ACL=yCONFIG_JFS_POSIX_ACL=yCONFIG_XFS_POSIX_ACL=yCONFIG_BTRFS_FS_POSIX_ACL=yCONFIG_FS_POSIX_ACL=yCONFIG_GENERIC_ACL=yCONFIG_TMPFS_POSIX_ACL=yCONFIG_NFS_V3_ACL=yCONFIG_NFSD_V2_ACL=yCONFIG_NFSD_V3_ACL=yCONFIG_NFS_ACL_SUPPORT=mCONFIG_CIFS_ACL=yCONFIG_9P_FS_POSIX_ACL=y2.检查所需的包。在开始使用ACL之前,请确保您已安装所需的包。以下是所需的软件包,需要使用yum或apt-get命令安装。[root@linux~]#yuminstallnfs4-acl-toolsacllibacl[在基于RedHat的系统上][tecmint@linux~]$sudoapt-getinstallnfs4-acl-toolsacl[在基于Debian的系统上]3.挂载的文件系统是否支持ACL。现在,检查挂载的文件系统是否使用ACL选项挂载。我们可以使用“mount”命令来检查,如下所示。[root@linux~]#挂载|grep-iroot/dev/mapper/fedora-rooton/typeext4(rw,relatime,data=ordered)但在这种情况下它默认不显示acl。因此,接下来我们可以再次使用acl选项重新挂载已挂载的分区。但在继续之前,我们还有另一个选择:确保使用acl选项进行挂载,因为它可能会集成较新系统的默认挂载选项。[root@linux~]#tune2fs-l/dev/mapper/fedora-root|grepaclDefaultmountoptions:user_xattracl在上面的输出中,你可以看到默认的挂载选项已经支持acl。另一种选择是重新挂载分区,如下所示。[root@linux~]#mount-oremount,acl/接下来,将以下条目添加到/etc/fstab文件以使其安全。/dev/mapper/fedora-root/ext4defaults,acl11重新挂载分区。[root@linux~]#mount-oremount/4.对于NFS服务器。在NFS服务器上,如果NFS服务器导出的文件系统支持ACL,并且ACL可以被NFS客户端读取,那么客户端系统就可以使用ACL。要在NFS共享上禁用ACL,您必须将选项“no_acl”添加到NFS服务器的“/etc/exportfs”文件中。要在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~]#getfaclMusic/#file:Music/#owner:root#usergroup:rootuser::rwxgroup::r-xother::r-xdefault:user::rwxdefault:group::r-xdefault:other::rw-设置默认ACL后要为特定文件或目录设置默认ACL,请使用“setfacl”命令。在下面的示例中,setfacl命令将为文件夹“Music”设置一个新的ACL(读取和执行)。[root@linux~]#setfacl-md:o:rxMusic/[root@linux~]#getfaclMusic/#file:Music/#owner:root#usergroup:rootuser::rwxgroup::r-xother::r-xdefault:user::rwxdefault:group::r-xdefault:other::r-x如何设置新的ACL使用“setfacl”命令设置或修改任何文件或目录。例如,您要授予用户“tecmint1”的读写权限。#setfacl-mu:tecmint1:rw/tecmint1/example如何查看ACL使用“getfacl”命令查看任何文件或目录的ACL。例如,要查看“/tecmint1/example”上的ACL,请使用以下命令。#getfacl/tecmint1/example#File:tecmint1/example/#Owner:tecmint1#Usergroup:tecmint1user::rwxuser:tecmint1:rwxuser:tecmint2:r--group::rwxmask::rwxother::---如何删除ACL想要删除任何文件/目录的ACL,我们可以使用x和b两个选项,如下所示。#setfacl-xACLfile/directory#只删除文件/目录的指定ACL#setfacl-bfile/directory#删除文件/目录的所有ACL。以下场景建议实施ACL。两个用户(tecmint1和tecmint2)都有一个名为“acl”的公共辅助组。我们将创建一个由“tecmint1”用户拥有的目录,并将对该目录的读取和执行权限授予用户“tecmint2”。第一步:创建两个用户,并清除两个用户的密码。[root@linux~]#foruserintecmint1tecmint2>do>useradd$user>passwd-d$user>doneRemovingpasswordforusertecmint1.passwd:SuccessRemovingpasswordforusertecmint2.passwd:Success用户组和用户。[root@linux~]#groupaddacl[root@linux~]#usermod-Gacltecmint1[root@linux~]#usermod-Gacltecmint2第3步:创建目录/tecmint并将所有权更改为tecmint1。[root@linux~]#mkdir/tecmint1[root@linux~]#chowntecmint1/tecmint1/[root@linux~]#ls-ld/tecmint1/drwxr-xr-x2tecmint1root40964月17日14:46/tecmint1/[root@linux~]#getfacl/tecmint1getfacl:从绝对路径名中删除前导“/”#文件:tecmint1#所有者:tecmint1#用户组:rootuser::rwxgroup::r-xother::r-x第4步:登录作为tecmint1并在/tecmint文件夹下创建一个目录。[tecmint@linux~]$su-tecmint1上次登录:2014年4月17日星期四14:49:16IST在pts/4[tecmint1@linux~]$cd/tecmint1/[tecmint1@linuxtecmint1]$mkdir示例[tecmint1@linuxtecmint1]$lltotal4drwxrwxr-x2tecmint1tecmint14096Apr1714:50example[tecmint1@linuxtecmint1]$whoamitecmint1第5步:现在使用“setfacl”设置ACL,这样“tecmint1”用户将拥有所有rwx(读读,write,andexecute)权限,“tecmint2”用户对“example”文件夹只有读权限,其他用户没有权限。$setfacl-mu:tecmint1:rwx示例/$setfacl-mu:tecmint2:r--示例/$setfacl-m其他:---示例/$getfacl示例/#文件:示例#所有者:tecmint1#用户组:tecmint1user::rwxuser:tecmint1:rwxuser:tecmint2:r--group::r-xmask::rwxother::---第6步:现在在另一个终端上以另一个用户身份(即“tecmint2”)登录并将目录更改为“/tecmint1”。现在尝试使用“ls”命令,查看内容,然后尝试更改目录并查看差异,如下所示。[tecmint@linux~]$su-tecmint2上次登录:2014年4月17日星期四15:03:31ISTonpts/5[tecmint2@linux~]$cd/tecmint1/[tecmint2@linuxtecmint1]$ls-lR示例/示例/:total0[tecmint2@linuxtecmint1]$cdexample/-bash:cd:example/:权限被拒绝[tecmint2@linuxtecmint1]$getfaclexample/#file:example#owner:tecmint1#usergroup:tecmint1user::rwxuser:tecmint1:rwxuser:tecmint2:r--group::rwxmask::rwxother::---第7步:现在为“tecmint2”用户授予“example”文件夹的“执行”权限,然后使用“cd”命令查看会发生什么。“tecmint2”用户现在有权查看和更改目录,但无权写入任何内容。[tecmint1@linuxtecmint1]$setfacl-mu:tecmint2:r-x示例/[tecmint1@linuxtecmint1]$getfacl示例/#文件:示例#所有者:tecmint1#用户组:tecmint1user::rwxuser:tecmint1:rwxuser:tecmint2:r-xgroup::rwxmask::rwxother::---[tecmint@linux~]$su-tecmint2上次登录:4月17日星期四15:09:49IST2014onpts/5[tecmint2@linux~]$cd/tecmint1/[tecmint2@linuxtecmint1]$cd示例/[tecmint2@linux示例]$getfacl.[tecmint2@linux示例]$mkdirtestmkdir:无法创建目录“test”:权限被拒绝[tecmint2@linux示例]$touchtesttouch:无法触摸'test':Permissiondenied注意:实施ACL后,您会在“ls–l”输出中看到一个额外的“+”符号,如下所示。[root@linuxtecmint1]#lltotal4drwxrwx---+2tecmint1tecmint14096Apr1717:01示例参考链接:ACL文档:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-acls.html原文地址:http://www.tecmint.com/secure-files-using-acls-in-linux/