我想为 FreeBSD 11 系统启用 ACL。根据FreeBSD 手册,这可以通过两种方式完成:
通过使用挂载选项—— mount -o acls
通过修改超级块—— tunefs -a enable
它说最好使用第二个选项,因为:
挂载时 ACL 标志无法通过重新挂载 (mount(8) -u) 更改,只能通过完整的 umount(8) 和全新挂载 (8) 来更改。这意味着无法在引导后在根文件系统上启用 ACL。这也意味着一旦使用文件系统,您就无法更改其配置。
即使没有 fstab 条目或设备重新排序,设置 superblock 标志也会导致文件系统始终在启用 ACL 的情况下挂载。这可以防止在未启用 ACL 的情况下意外挂载文件系统,这会导致 ACL 执行不当,从而导致安全问题。
从 tunefs手册页:
tunefs 实用程序旨在更改影响布局策略的 UFS 文件系统的动态参数。tunefs 实用程序不能在活动文件系统上运行。要更改活动文件系统,必须将其降级为只读或卸载。
问题是无法卸载 rootfs (/)。
如何在根文件系统上运行 tunefs?
我有一个带有 /Documents 目录的 RHEL 6 服务器,它有子目录 1 2 3 4 5.... 就在 /Documents 目录下。是否可以创建一个仅允许用户访问 1、2、7、9 而不能访问其他文件夹的 SFTP chroot jail?
我在 RHEL 6 中使用 NFSv3,因此在 ACL 选择方面受到了一定的限制。
我查看了类似问题的答案,并通过阅读有关 Linux ACL 的教程刷新了我对 ACL 的记忆。然而,我仍然被难住了。我做错了什么,或者我不明白什么?
我有一个安装了该acl选项的文件系统。
user@host:/srv$ grep srv /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /srv ext4 relatime,nodev,nosuid,user_xattr,acl 0 2
Run Code Online (Sandbox Code Playgroud)
用户user是devs组的成员。
user@host:/srv$ id
uid=1000(user) gid=1000(user) groups=1000(user),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),1001(devs)
Run Code Online (Sandbox Code Playgroud)
umask 是正常的。
user@host:/srv$ umask
0022
Run Code Online (Sandbox Code Playgroud)
创建一个目录;组所有权和权限已设置。
user@host:/srv$ sudo mkdir lib; sudo chmod 0750 lib && sudo chgrp www-data lib
user@host:/srv$ ls -l
total 24
drwxr-x--- 2 root www-data 4096 May 21 18:00 lib
drwx------ 2 root root 16384 Feb 17 18:22 lost+found
drwxr-xr-x 3 root www-data 4096 May 21 17:25 www …Run Code Online (Sandbox Code Playgroud) 如果我有一个分配了默认 ACL 条目的目录,但其部分或全部后代文件和子目录具有访问权限或默认 ACL 与这些默认值不一致,我如何递归(重新)应用这些默认 ACL 条目给所有后代?有资格。我希望完全替换所有现有的后代 ACL,除了文件的现有执行状态。否则的目的是所有后代都应该拥有在其当前位置新创建的 ACL。
Rogach 询问“如何在目录上递归设置权限(启用 ACL)?” 但希望以递归方式添加新的ACL 条目,而不是(重新)应用现有的默认 ACL。尽管 Rogach 没有要求,富兰克林·皮亚特 (Franklin Piat) 对该问题的回答也为我的问题提供了解决方案,但我认为他的解决方案存在缺陷。Piat 建议使用以下命令:
Run Code Online (Sandbox Code Playgroud)find . -mindepth 1 -type d| xargs -n 50 setfacl -b --set-file=<(getfacl . | sed -e 's/x$/X/') find . -mindepth 1 -type f| xargs -n 50 setfacl -b --set-file=<(getfacl . | grep -v '^default:' | sed -e 's/x$/X/')
我想修复的缺陷:
如何做类似的事情
find . -acl u:jim:rx
find . -acl u:*:r
find . -noacl u:jim:r
Run Code Online (Sandbox Code Playgroud)
ETC。
我知道 find 命令不支持此功能,但是您知道了。是否有任何脚本,甚至适用于某些特定场景?
注 1:我对 debian 特别感兴趣,但它适用于任何 *nix 操作系统。
注2:这个问题侧重于一个实际案例,但实际上更笼统——有哪些好的工具可以查找与ACL相关的文件。
我想设置一个目录,其中所有新文件和目录都具有特定的访问掩码,并且目录还设置了粘滞位(t限制删除这些目录中的文件的那个)。
对于第一部分,我的理解是我需要为父目录设置默认ACL。但是,新目录不会t从父目录继承该位。因此,非所有者可以删除子目录中的文件。我能解决这个问题吗?
关于 FUSE GitHub 页面,我有一些问题:
下面是否意味着SSHFS报价确实,如果支持的ACLdefault_permissions是不使用?
这是否意味着如果需要 ACL 支持和适当的安全性,既不应该default_permissions也不allow_other应该用作挂载选项?(很明显,allow_other没有default_permissions.不应该使用。)
如果 #2 是正确的,这是否意味着 SSHFS 挂载default_permissions和不挂载allow_other都会正确地将服务器的文件权限和 ACL 传递给客户端?
来源:GitHub - libfuse/libfuse:FUSE(用户空间中的文件系统)接口 https://github.com/libfuse/libfuse
如果您打算使用 allow_other 挂载选项,请注意 FUSE 有一个未解决的安全漏洞: 如果没有使用 default_permissions 挂载选项,只要被访问条目的 inode 存在于内核缓存中,文件系统对目录条目执行的第一次权限检查的结果将被重新用于后续访问 -即使权限已更改,即使后续访问是由不同的用户进行的。如果文件系统只能由挂载用户访问(无论如何都可以完全访问文件系统),则这无关紧要,但是当其他用户被允许访问文件系统时(因为他们可以利用它对文件系统执行操作),这将成为一个安全问题他们实际上没有权限的文件系统)。
这个错误需要在 Linux 内核中修复,并且自 2006 年以来就已经存在,但遗憾的是尚未应用任何修复。如果您依赖 FUSE 文件系统的正确权限处理,唯一的解决方法是使用default_permissions(当前不支持 ACL),或者完全禁用目录条目属性的缓存。
在我的环境中,所有客户端和服务器都运行 Linux,并且都使用 BTRFS(支持 ACL)。所有 GUID 和 UID 都匹配。
我看过其他答案,但找不到这个问题的答案。
我有一个使用 ACL 的文件系统。我想测试给定用户(我猜是组)尝试访问嵌套在文件树中的文件时所得到的权限集(传统权限和 ACL)将是什么。
(注意 - 我不是问“他们可以访问它”或“他们可以更改它”。我正在寻找输出,它告诉我该用户将拥有的完整的人类可读的有效权限集,这可能与无不同至少,享有某些权利,但不享有其他权利,享有全部权利。)
man getfacl没有说如何做到这一点,但它是如此基本,我一定错过了一些东西。
这对我来说有点难以实现,但我遇到了一种非常奇怪的行为,涉及ACL 扩展文件权限和硬/符号链接。我会尽力让我的问题简短明了,但我首先必须向您展示我目前情况的一个例子,因为我不知道发生了什么或它叫什么。
假设我们有一个有两个用户的系统,我们称他们为alice和bob,他们在一定程度上共享一个名为 的文件夹,stuff具有以下权限:
bob@server:~$ getfacl /home/stuff getfacl:
Removing leading '/' from absolute path names
# file: home/stuff
# owner: alice
# group: bob
user::rwx
group::-wx
other::---
default:user::rwx
default:user:bob:rwx
default:group::-wx
default:mask::rwx
default:other::---
Run Code Online (Sandbox Code Playgroud)
如您所见,该文件夹的所有者是alice,但 bob 可以在其中写入内容并使其可执行,以便alice可以在(+x 标志)中运行。但是,由于 ACL,每次 bob 将文件写入/复制到 时stuff,文件的权限都会发生更改,最终如下所示。bob假设我们在主目录中创建一个文件并将其移动到stuff.
bob@server:~$ touch myfile
bob@server:~$ chmod 777 myfile
bob@server:~$ ls -la myfile
-rwxrwxrwx 1 bob bob 0 myfile
bob@server:~$ mv myfile /home/stuff/myfile
bob@server:~$ …Run Code Online (Sandbox Code Playgroud) 我可以可靠地使用 Rsync 的哪些选项/如何/将其组合到:
\n\n即使权限/ ACL 的“有限集”可靠且在 Cygwin Windows/NTFS 和 *Nix/Perms 等的灰色区域之间不发生冲突,也可以可靠地传输“工作”
\nOR
如果我不能执行上述操作,请刷新干净/让 RSync 完全避免权限/ACL 问题?
在过去十年左右的时间里,我已经阅读了近 50 个关于如何解决此问题的选项卡和窗口。
\n\n如何处理它似乎会根据您询问的地点和对象以及正在讨论的 Rsync 版本(时间和变化/替代代码库)而变化。
\n\n可供选择的选项:
\n\n我从这个 QnA 中得到了关于如何针对这个特定场景执行 RSync 的答案;
\n\n