权限 - 允许两个用户完全访问目录

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)

现在我又回到了第一点。

任何帮助表示赞赏。

Pan*_*her 5

由于所有权和权限,Linux 中的共享目录可能会令人困惑。

对于这个特定的目录,/var/www/html/这里已经有答案了

在 /var/www 中工作时如何避免使用 sudo?

因此,让两个用户都成为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/FilePermissionsACLshttp://brunogirin.blogspot.com/2010/03/shared-folders-in-ubuntu-with-setgid.html

第二个链接专门解决了这个确切的问题,即如何使用 setGID 和 ACL 共享 /var/www/html。