我有一个网站,在必要时会写入文件。这些文件归 www-data 所有。我还有一个用户,它执行一个应用程序来从这些文件中收集信息。它是用 Python 编写的。但是,由于这些文件归 www-data 所有,所以我的应用程序无法读取它们,我必须以 root 身份执行该应用程序,而我并不想这样做。我该怎么做才能允许我的用户读取 www-data 创建的文件?
编辑,相对于评论:
-rw-r--r-- 1 ivan www-data 444 2011-07-20 16:34 serverfile1.php
-rw-r--r-- 1 ivan www-data 140 2011-07-20 16:34 serverfile2.php
-rw-r--r-- 1 ivan www-data 478 2011-07-20 16:35 serverfile3.php
-rw-r--r-- 1 www-data www-data 10 2011-07-20 17:41 info1.txt
-rw-r--r-- 1 www-data www-data 21 2011-07-20 17:41 info2.txt
-rw-r--r-- 1 ivan www-data 236 2011-07-20 16:35 serverfile4.php
我仍然无法使用用户 ivan 读取文件 info1 和 info2
答案1
将您的用户添加到 www-data 组并使文件可由该组读取。
# usermod -a -G www-data username
# chmod -R g+r /var/www/files
答案2
假设文件权限列表是准确的,则用户 ivan 应该有权访问这些文件。
您可能需要验证使用 Python 打开文件的模式。如果您尝试使用写入权限打开它,您将收到错误。
如果您像 ivan 一样,可以 cat 或 head info1/info2 文件,则更可能是 python/code 问题。
答案3
您的文件已经是组可读的,如果您只打开文件进行读取,则不会有任何问题。其中一些已经建议,但这里有一些需要检查的事情。
- Python 代码正在打开以进行读取而不是写入
- 确保文件所在的目录对所有人都可读且可执行(至少是可执行的)。
- 通过用户 Ivan 使用 cat 进行测试,如果它有效,则是 python 代码的问题。
答案4
另一种方法是在特定用户下将 php 作为 fastcgi 运行(php fastcgi+suexec)。
再见,斯蒂法诺