我在 Ubuntu 上。我使用 truecrypt 容器来存储我的所有工作文件。我的 apache 服务器与用户一起运行www-data
(默认设置)。
当我使用 truecrypt 安装容器时,我的所有文件都归 fmaz:fmaz 所有。因此,当我的 PHP 代码尝试执行 chmod() 时,它会失败——权限被拒绝。
因此我尝试像这样挂载 truecrypt 卷:
truecrypt --auto-mount=devices --fs-options="uid=33,gid=1000"
也:
truecrypt --auto-mount=devices --fs-options="uid=1000,gid=33"
在文件夹上执行操作时ls -la
,我可以看到所有权是有效的( www-data:fmaz 或 fmaz:www-data )但该组似乎没有被考虑在内。
fmaz:www-数据
我可以访问我的文件,但是 apache/php 无法处理它们。
www-数据:fmaz
Apache 和 PHP 都很顺利,一切运行正常,但我无法访问我自己的文件:
fmaz@fmaz-laptop:/$ cd media/truecrypt1/
bash: cd: media/truecrypt1/: Permission non accordée
但正如你所看到的:
sudo ls -la media/truecrypt1/
total 31448
drwx------ 14 www-data fmaz 8192 1969-12-31 19:00 .
drwxr-xr-x 5 root root 4096 2011-12-03 11:10 ..
-rwx------ 1 www-data fmaz 3353256 2009-11-18 21:19 7nuj21us.exe
...
我该如何配置设置才能让 Apache 和我自己拥有对该文件的完全访问权限?
答案1
您可以将chown
文件/文件夹移至fmaz:www-data
。
然后,您需要使用chmod g+r
(文件)和chmod g+rx
(文件夹)向组添加读取权限。
如果您的 PHP 代码需要修改某些目录/文件,则需要使用chmod g+wr
。
这只是其中一种方法。
答案2
通过添加所需的 umask 解决了这个问题。我使用带 gui 的 truecrypt 7.1,所以我去了
设置->首选项->挂载选项
uid=www-数据,gid=用户,umask=007
它使用 drwx-rwx 挂载卷----
这正是我在 truecrypt 中运行 apache 所需要的