设置默认所有者/用户

设置默认所有者/用户

我是一名 Web 开发人员,因此在办公室里设置了一台旧机器作为 Ubuntu 服务器,用于测试网站。

我已经设置了 LAMP 并创建了一个 /var/www 文件夹,我的所有本地站点都从该文件夹提供服务。问题在于用户权限,即我复制到该文件夹​​的任何文件(通过网络从我的 Windows 计算机复制)都会自动将我(daniel)视为其所有者。问题是我想让 www-data 成为所有者。

我做了一些研究,发现应该可以使用 setuid(和 setgid)自动将 www-data 设置为自动放入 /var/www 的所有文件的所有者,但到目前为止我还没有成功让它发挥作用。

有人能帮忙吗?谢谢

更新:这会实现我想要的效果吗?php 用户 www-data 的默认文件权限

更新 2:我通过更改 Samba 设置解决了这个问题。使用 Webmin,我可以进入并更改默认设置(如下所示:http://imageshack.us/photo/my-images/521/captureon.png/

答案1

用户通过使用 Webmin 设置以下文件权限解决了这个问题:

  • 新的 Unix 文件模式:664
  • 新的 Unix 目录模式:775
  • 强制 Unix 用户:www-data
  • 强制 Unix 组:www-data
  • 允许共享之外的符号链接吗?:是[有疑问]
  • 可以删除只读文件吗?:否
  • 强制 Unix 文件模式:000
  • 强制 Unix 目录模式:000

看:

在此处输入图片描述

答案2

您可以启动终端并输入:

sudo chown -R www-data /var/www

-R 代表对 /var/www 下的每个文件和目录进行递归,并且 www-data 将是所有者。

答案3

首先将您的用户添加到www-data组中。

sudo usermod -a -G www-data your_user

然后你可以暂时将 www-data 设为你的群组

newgrp www-data

这将启动一个新的 shell。您创建的任何新文件都将归 www-data 所有。

然后让 root 拥有并读写 /var/www。www-data

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

在“生产服务器”上,我将保留由 root 拥有的文件,并且尽可能保留由 www-data 拥有的文件,但这可能不切实际。

您可以使用 usermod 将 www-data 设为您的主要组

sudo usermod -g www-data your_user

答案4

Linux 系统忽略权限标志setuid,但您可以将setgid标志应用于每个目录/var/www

find /var/www -type d -exec chmod g+s {} +

这将使每一个新的文件继承目录的组,而用户保留所有权,例如daniel:www-data

但是,如果您确实需要文件具有特定的所有者,则可以设置一个 cron 作业来定期修复它。

相关内容