使用setfacl / getfacl恢复ACL?

时间:2010-10-09 23:17:14

标签: unix permissions acl

我最近删除了我的ACL,因为我的教授需要复制某些文件。现在我知道我应该只是授予他的用户权限,而不是使用'setfacl -b'全部删除它。在我的主目录上。

所以问题是如何使用setfacl / getfacl恢复或设置新的ACL到我的主目录?

1 个答案:

答案 0 :(得分:4)

您无法“恢复”以ACL方式丢弃的内容。如果您知道之前设置的内容,可以仔细重新恢复那些记住的ACL。

基本权限

在Unix系统上,最重要的标准是组和其他标准 - 它们不直接受ACL影响,但它们控制不受ACL控制的访问,您也必须正确使用它们。您需要确定适合您环境的内容。对于许多公司设置,允许组和其他人读取文件访问权限,在程序上执行,以及在目录上读取和搜索(执行)是合适的:

chmod 644 file
chmod 755 program
chmod 755 directory

如果你不应该让其他人借用你的课程,你就会把事情搞得一团糟,这样就不允许小组和其他人进入:

chmod 600 file
chmod 700 program
chmod 700 directory

或者你可以混搭;允许灵活性和开放访问您的主目录,但限制在其下面的人。在某些情况下,您可能允许组或其他只对目录执行权限(并且只读取文件)。然后其他人无法访问该文件,除非他们知道其名称,他们只能读取文件,而不能修改它或保存文件的目录。

不要忘记使用适当的umask设置,以便默认使用正确的权限创建文件。对于许多人来说,022的umask是合适的;组成员和其他人都不能写入文件或目录,但他们可以读取文件或执行程序。

使用ACL

这些都不需要ACL。如果要提供对某些组或用户的受控访问权限而不是其他人,则需要确保设置了相应的基本级别权限,然后可以有效地为文件或目录上的选定用户或组添加权限选择。

setfacl的Solaris 10手册页说命令语法是:

 setfacl [-r] -s acl_entries file
 setfacl [-r] -md acl_entries file
 setfacl [-r] -f acl_file file

这没有提到问题中提到的'-b'选项,因此您可能正在使用其他平台。请注意,ACL控件将是POSIX 1e,但从未实际标准化,因此不同的平台在命令上实现略有不同的变体。

然后,Solaris 10手册页继续解释如何设置描述的“acl_entries”部分,并注意默认部分只能应用于目录,但默认值将用于目录。

 ACL Entry                     Description
 u[ser]::perms                 File owner permissions.
 g[roup]::perms                File group owner permissions.
 o[ther]:perms                 Permissions for  users  other  than
                               the  file  owner or members of file
                               group owner.
 m[ask]:perms                  The ACL mask. The mask entry  indi-
                               cates   the   maximum   permissions
                               allowed for users (other  than  the
                               owner)  and for groups. The mask is
                               a quick way to  change  permissions
                               on all the users and groups.
 u[ser]:uid:perms              Permissions for  a  specific  user.
                               For  uid,  you can specify either a
                               user name or a numeric UID.
 g[roup]:gid:perms             Permissions for a  specific  group.
                               For  gid,  you can specify either a
                               group name or a numeric GID.
 d[efault]:u[ser]::perms       Default file owner permissions.
 d[efault]:g[roup]::perms      Default file  group  owner  permis-
                               sions.
 d[efault]:o[ther]:perms       Default permissions for users other
                               than  the  file owner or members of
                               the file group owner.
 d[efault]:m[ask]:perms        Default ACL mask.
 d[efault]:u[ser]:uid:perms    Default permissions for a  specific
                               user.  For  uid,  you  can  specify
                               either a user  name  or  a  numeric
                               UID.
 d[efault]:g[roup]:gid:perms   Default permissions for a  specific
                               group.  For  gid,  you  can specify
                               either a group name  or  a  numeric
                               GID.

除了教授之外,您需要决定谁需要访问文件。也许你的实验室伙伴呢;也许教学助理会这样做;也许是你整整一年(但不是你以下的岁月 - 那些你可能已经知道你知道的东西)。但是,如果没有关于您的保护要求的任何更多信息,没有人可以帮助您更多。通常,很容易使ACL出错 - 如果有的话,请谨慎使用,并使用标准Unix权限作为主要访问控制。

下一次,我建议只是通过添加(而不是删除)ACL来允许你的教授进入 - 或者询问他希望你将文件复制到哪里(将责任放在他身上以解决权限问题)或复制将文件放入目录中,例如$ HOME / tmp / prof.jones,对目录具有711权限,对文件具有644权限,并告诉他哪些文件可供他复制。