Jos*_*ray 4 server php permissions command-line apache2
我有一个位于/var/www/web
. 在其中一个文件中,比方说create_dir.php
,我正在创建一个带有mkdir()
. 我收到以下消息。
警告:mkdir():第 122 行 /var/www/web/create_dir.php 中的权限被拒绝
现在,当我是文件或目录的所有者时,我可以运行该文件。但是,当我不是所有者时,我无法编辑 PhpStorm 中的文件。
我的用户被调用josh
,apache2 用户是默认用户,www-data
.
我基本上需要创建一个组或一个特殊/魔法用户,以便我可以随时运行和编辑文件。
注意:我看过这个超级用户的答案,但它对我不起作用。我运行这个命令来创建组:
sudo groupadd website
Run Code Online (Sandbox Code Playgroud)
我运行这些命令来添加用户:
sudo usermod -a -G website josh
sudo usermod -a -G website www-data
Run Code Online (Sandbox Code Playgroud)
我运行此命令将其添加到 web 文件夹:
sudo chgrp -R website /var/www/web
Run Code Online (Sandbox Code Playgroud)
我运行了这个命令,一旦我重新加载了我的网站,我就会收到一条禁止错误消息。
sudo chmod -R 770 /var/www/web
Run Code Online (Sandbox Code Playgroud)
所以我运行了这个命令来查看网页:
sudo chmod -R 775 /var/www/web
Run Code Online (Sandbox Code Playgroud)
现在我又回到了第一点。
任何帮助表示赞赏。
由于所有权和权限,Linux 中的共享目录可能会令人困惑。
对于这个特定的目录,/var/www/html/
这里已经有答案了
因此,让两个用户都成为www-data
. 恕我直言,无需创建新组。
要管理权限和文件所有权,请设置组和 setGID
sudo chgrp -R www-data /var/www/html
sudo chmod 2770 /var/www/html
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅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 ...
Run Code Online (Sandbox Code Playgroud)
重新启动 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。