我刚刚将我的 Apache 服务器更新为在 Ubuntu 13.04 下运行的 Apache/2.4.6。我曾经有一个 vhost 文件,其中包含以下内容:
<Directory "/home/john/development/foobar/web">
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)
但是当我运行时,我得到了一个“禁止。你无权访问 /”
在做了一点谷歌搜索后,我发现要让我的网站再次工作,我需要添加以下行“要求全部授予”,以便我的虚拟主机看起来像这样:
<Directory "/home/john/development/foobar/web">
AllowOverride All
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
我想知道这是否“安全”并且不会带来任何安全问题。我在 Apache 的页面上读到,这“模仿了以前由“全部允许”和“全部拒绝”指令提供的功能。此提供程序可以采用“授予”或“拒绝”的两个参数之一。以下示例将授予或拒绝访问所有请求。”
但它没有说明这是否是某种安全问题,或者为什么我们现在必须这样做,而过去您不必这样做。
我有一个名为“成员”的目录,在它下面有文件夹/文件。如何递归地将所有当前文件夹/文件以及在那里创建的任何未来文件夹/文件默认设置为具有 775 权限并分别属于所有者/组 nobody/admin?我启用了 ACL,已挂载,但似乎无法让 setfacl 命令正确执行此操作。知道如何做到这一点吗?
我每隔一段时间就会遇到一个我需要拥有的文件。我通常cacls用于更改 ntfs 权限,但它似乎没有所有权。在 *nix 下,我会运行类似chown me:me <file>. 是否有相当于的窗口chown?
windows windows-xp ntfs command-line-interface access-control-list
任何处理过文件服务器权限的人都知道,NTFS 有一个有趣的设计特性/缺陷,称为移动/复制问题。
正如这篇 MS KB 文章中所述,如果文件夹或文件被移动并且源和目标位于同一个 NTFS 卷上,则该文件夹或文件的权限不会自动从父级继承。如果文件夹被复制或者源和目标位于不同的卷上,则权限将被继承。
这是一个快速示例:
您在同一个 NTFS 卷上有两个共享文件夹,名为“Technicians”和“Managers”。Technicians 组对 Technicians 文件夹具有 RW 访问权限,Managers 组对“Managers”文件夹具有 RW 访问权限。如果有人对两者都具有访问权限,并且他们将子文件夹从“Managers”文件夹移动到“Technicians”文件夹,则移动的文件夹仍然只能由“Managers”组中的用户访问。“技术人员”组无法访问子文件夹,即使它位于“技术人员”文件夹下并且应该从顶部继承权限。
可以想象,这会导致解决这些最终用户问题的支持电话、票证和浪费的周期,更不用说如果用户经常在不同的安全文件夹/区域之间移动文件夹,您最终可能会遇到的大量权限。相同的音量。
问题是:
解决此 NTFS 设计缺陷的最佳方法是什么,您如何在您的环境中处理它?
我知道链接的 KB 文章谈到了一些注册表项来更改 Windows 资源管理器的默认行为,但它们是客户端,并且要求用户能够更改权限,我认为在大多数环境中,如果您想要控制您的文件服务器权限(以及您作为系统管理员的理智)。
我正在尝试为 Windows 7 上的所有用户授予对特定文件夹的完全访问权限(读、写)。问题是我不知道如何使用 icacls 来做到这一点。
在组内设置文件共享目录的常用方法是:
$ mkdir foo
$ chgrp felles foo
$ chmod g+ws foo
$ setfacl -m group:felles:rwx foo
$ setfacl -dm group:felles:rwx foo
Run Code Online (Sandbox Code Playgroud)
这确保了创建的任何文件foo都可以被组读写felles:
$ umask
0022
$ echo hi > foo/bar
$ ls -l foo
total 4
-rw-rw-r--+ 1 bhm felles 3 2010-09-23 00:18 bar
Run Code Online (Sandbox Code Playgroud)
但是,如果您将文件复制到 中foo,则不会应用默认 ACL:
$ echo you > baz
$ cp baz foo/
$ ls -l foo
total 8
-rw-rw-r--+ 1 bhm felles 3 2010-09-23 00:18 bar
-rw-r--r--+ 1 bhm …Run Code Online (Sandbox Code Playgroud) 我试图理解这种 Unix 行为(我碰巧在 Ubuntu 11.10 上测试):
$ touch foo
$ setfacl -m u:nobody:rwx foo
$ getfacl foo
# file: foo
# owner: michael
# group: michael
user::rw-
user:nobody:rwx
group::rw-
mask::rwx
other::r--
$ chmod g-rw foo
$ getfacl foo
# file: foo
# owner: michael
# group: michael
user::rw-
user:nobody:rwx #effective:--x
group::rw- #effective:---
mask::--x
other::r--
Run Code Online (Sandbox Code Playgroud)
请注意,chmod(1) 命令已更新了 ACL 掩码。为什么会发生这种情况?
在SunOS的联机帮助有以下说:
如果使用 chmod(1) 命令更改具有 ACL 条目的文件的文件组所有者权限,则文件组所有者权限和 ACL 掩码都将更改为新权限。请注意,新的 ACL 掩码权限可能会更改对文件具有 ACL 条目的其他用户和组的有效权限。
我问是因为如果 chmod(1) 没有这种行为对我来说会很方便。我希望通过了解它为什么会这样做,我可以更好地设计我设置文件系统权限的方式。
设置访问控制列表时,0.0.0.0/0和之间有什么区别::/0?
我看到这个是我正在设置的 AWS EC2 实例
我有一个包含以下默认 ACL 的目录:
default:user:phptutor:rwx
Run Code Online (Sandbox Code Playgroud)
但是,该目录中的所有文件/目录都没有该默认权限(因为它是在创建后添加的)。
如何将父目录的默认 ACL 复制到其中的每个文件夹和文件?
假设我的 umask 是 0077。
我有一个目录,foo我想对其应用特殊权限。我在其中创建的所有文件foo都应该是全局可读的,并且所有目录都应该是全局可读和可执行的。
目前,如果我创建一个文件,它将是 0600,目录将是 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm 0 2012-01-12 16:15 file
Run Code Online (Sandbox Code Playgroud)
我希望文件是 0644,目录是 0755,不管我的 umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm 0 2012-01-12 16:15 file
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
permissions ×5
linux ×4
filesystems ×2
ntfs ×2
windows ×2
apache-2.2 ×1
apache-2.4 ×1
ipv4 ×1
ipv6 ×1
setfacl ×1
umask ×1
unix ×1
windows-xp ×1