这些文件权限有什么问题?

cuc*_*koo 3 permissions

这是一个令人尴尬的问题,但我似乎无法弄清楚我的服务器的正确文件权限。我想在我的 public_html 文件夹中创建一个目录,其中包含每个人的读/写访问权限,以便我可以通过在用户加载网页时执行的 php 脚本轻松地在那里创建文件。

这是当前显示的权限:

drw-rw-rw- 2 root www-data    4096 Aug 27 19:38 TEMPFILES
Run Code Online (Sandbox Code Playgroud)

当我以非 root 用户且不在 www-data 组中的随机用户身份执行 php 脚本时,我在尝试将文件写入 TEMPFILES 时收到错误“权限被拒绝”。这是为什么?

thr*_*rig 9

chmod a+x TEMPFILES
Run Code Online (Sandbox Code Playgroud)

因为目录必须有 eXecute 位,因为原因[1]。(例如,您可能还希望设置粘性位/tmp。)

[1] "请注意,目录的读取权限和目录的执行权限意味着不同的事情。读取权限让我们读取目录,获取目录中所有文件名的列表。执行权限让我们在目录出现时通过是我们试图访问的路径名的组成部分。” ——史蒂文斯,“APUE”(第一版),第 4 章,第 5 节。

  • *必须*对目录 `/in/path/to/TEMPFILES/somefile` *所有*具有执行权限,否则程序将无权遍历到 `somefile`;目录上的执行位控制是否允许路径遍历。如果“o+rwx”位有问题,另一种选择是将目录权限限制为仅网络服务器或包含必要用户的组的目录权限。 (2认同)