我有一个位于 的 Web 服务器目录/var/www/web
。在其中一个文件内,假设create_dir.php
,我正在创建一个目录mkdir()
。我收到以下消息。
警告:mkdir():/var/www/web/create_dir.php 第 122 行中的权限被拒绝
现在,当我是文件或目录的所有者时,我可以运行此文件。但是,当我不是所有者时,我无法在 PhpStorm 中编辑文件。
我的用户被称为josh
并且 apache2 用户是默认的www-data
。
我本质上需要创建一个组或一个特殊/神奇的用户,以便我可以随时运行和编辑文件。
注意:我已经看过这个超级用户答案但对我来说没用。我运行了以下命令来创建组:
sudo groupadd website
我运行以下命令来添加用户:
sudo usermod -a -G website josh
sudo usermod -a -G website www-data
我运行此命令将其添加到 web 文件夹:
sudo chgrp -R website /var/www/web
我运行了此命令,一旦我重新加载我的网站,我就收到一条禁止错误消息。
sudo chmod -R 770 /var/www/web
因此我运行了这个命令来查看网页:
sudo chmod -R 775 /var/www/web
现在我又回到了原点。
任何帮助都将受到赞赏。
答案1
Linux 中的共享目录可能会因所有权和权限而造成混淆。
对于这个特定的目录,/var/www/html/
这里已经有答案了
因此,让两个用户都成为 的成员www-data
。恕我直言,没有必要创建新组。
要管理权限和文件所有权,请设置组和 setGID
sudo chgrp -R www-data /var/www/html
sudo chmod 2770 /var/www/html
有关详细信息,请参阅https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html
... if a directory’s set-group-ID bit is set, newly created subfiles inherit the same group as the directory ...
重新启动你的 shell 或注销并重新登录以使会员资格生效。
如果您需要更细粒度的控制,您可以使用 ACL,但这可能有点过度。
有关 ACL 的其他信息,请参阅https://help.ubuntu.com/community/FilePermissionsACLs和http://brunogirin.blogspot.com/2010/03/shared-folders-in-ubuntu-with-setgid.html
第二个链接专门解决了这个确切的问题,如何使用 setGID 和 ACL 共享 /var/www/html。