/var/www 中的 chmod u+s

/var/www 中的 chmod u+s

我无法向正确的用户授予正确的权限......

我想用 apache 运行 pootle,所以我下载了 pootle。然后我将其复制到 /var/www,安装它并授予 www-data 用户对整个文件夹的权限。至于好...现在我想从翻译目录(例如 /var/www/pootle/po/project)复制翻译文件并复制到该目录。
所以我创建了一个组 (www),将我添加到该组并执行

sudo chown -R :www /var/www/pootle

好的,现在我有权将文件写入目录,但是,当 apache 创建文件时,它的组是 www-data...

sudo chmod -R g+s /var/www/pootle

好的,现在组始终是“www”,正如我希望的那样......现在问题是:
当我将文件写入/var/www/pootle时,它们在那里,但是,我的用户是所有者,而不是如我所期望的 www-data,尽管我执行了命令:

sudo chmod -R u+s /var/www/pootle

有没有办法可以让我声明创建该文件的用户,即使是我,也是 www-data?

提前谢谢 :)

答案1

如果运行 chown 时前面不带冒号,则会更改所有者。(如果前面带冒号,则会更改组,如上所示,也可以运行 chown -R new-owner:newgroup。)因此,如果您只运行

sudo chown -R www-data /var/www/pootle

您将把所有者更改为 www-data。

“...当 apache 创建一个文件时,它的组是 www-data...”

您能解释一下这是什么意思吗?Apache 提供文件,而不是创建文件。PHP 创建文件 - 但它们是动态创建的并直接提供给 Web 客户端(浏览器),而不是由 Apache 创建然后保存。

看来您的问题出在文件所有权上。如果是这样,更方便的方法可能是将 pootle 添加到 www 组 - 因为 Apache(通常)需要 www 拥有的 htm(l) 文件才能读取它们。然后由 Pootle 创建的文件将具有相同的组 ID,您根本不需要运行 chown - Apache 将具有对 Pootle 文件的读取权限。请参阅http://translate.sourceforge.net/wiki/pootle/apache其中写道:

 You need to extract Pootle in a directory accessible to the apache user.

Make sure Apache has read access to all of Pootle's files and write access to the dbs and po subdirectories.

希望这可以帮助。

答案2

这样是不是更好呢:

chown -R greenit:www-data /var/www/
chmod -R 770 /var/www/pootle

我不会推荐下一步(您最好手动 chmod 或 chown 您自己创建的文件),但您可以将自己添加到 www-data 组:

usermod -a -G www-data greenit

然而,理想的做法是在 Pootle 中找到指定以哪个用户身份运行的设置,然后将其更改为 www-data。

相关内容