授予多个用户对文件夹和子文件夹的权限,并具有覆盖文件的权限

授予多个用户对文件夹和子文件夹的权限,并具有覆盖文件的权限

我知道这个问题很常见,但我似乎找不到好的答案。

设置如下 - 有一个网络服务器和一个文件夹,Apache(用户 www-data)在其中创建目录并上传/删除文件。

网站管理员可能决定添加或删除一些文件。

大多数托管设置对 Apache 和网站管理员使用相同的用户。

我可以在文件夹内部通过设置chmod 770和创建一个包含两个用户的组来执行此操作,但我无法对子文件夹执行此操作。

我也想避免使用umask

答案1

尝试一下这个:

进入代码根目录

cd /var/www/html/

并尝试对文件执行此操作:

sudo find -type f -exec chmod 664 {} \;

对于目录:

sudo find -type d -exec chmod 775 {} \;

对于业主,你可以尝试

sudo chown www-data:www-data -R /var/www/html

这将找到每个文件夹和文件并更改您想要的权限,谢谢!

答案2

我将对文件使用 664 (rw-rw-r--) 而不是 770 (rwxrwx---)(默认值为 (rw-r--r--)),因此每个人都可以读取文件并且不会设置执行位。

对于目录(默认为 rwxr-xr-x),您需要执行位才能进入目录并访问文件。

setgid创建的文件自动属于目录的组(而不是创建该文件的用户的默认组),因此同一组的其他用户可以修改它们。

如果您的目录是/var/www/html并且具有写权限的组是www-data,那么您所需要的就是:

  • 使用 set 将目录更改为 2775 (rwxrwsr-x) setgid

    find /var/www/html -type d -exec chmod 2775 {} +
    
  • setgid在目录上设置(如果其他权限已经正确)

    find /var/www/html -type d -exec chmod g+s {} +
    
  • 将文件更改为 664 (rw-rw-r--)

    find /var/www/html -type f -exec chmod -v 664 {} +
    
  • 递归地将组更改为www-data

    chgrp -R www-data /var/www/html
    
  • 或者递归地将用户和组更改为www-data

    chown -R www-data:www-data /var/www/html
    

-v您可以向上述命令添加详细选项来查看发生了什么更改。

  • 将用户添加username到组www-data

    usermod -a -G www-data username
    

相关内容