如何让apache2用户访问/ root目录下的文件?

时间:2013-08-06 11:49:14

标签: php linux apache permissions apache2

我正在使用Linux 12.04,安装了apache和php。我想访问/ root / folder中的文本文件。我真的与权限混淆。我使用的PHP脚本

<?php
$file = fopen("/root/cr.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached

while(!feof($file))
  {
  echo fgets($file). "<br>";
  }

fclose($file);
?>

此脚本可以访问文件/ var / www文件夹但无法访问/root/ip.txt文件。 请帮助并解释可能的步骤。

2 个答案:

答案 0 :(得分:1)

我会忘记这样做的安全隐患,并将继续开展业务:

如果你已经完成了ls -l / var / www和ls -l / root,你会发现两者都有不同的权限:

$ ls -l /root/cr.txt total 2 -rw-r ----- 1 root root 0 Jul 9 01:28 cr.txt $ ls -l / var / www total 2 -rw-r --r-- 1 www-data www-data 0 Jul 9 01:28 somefile

/ root仅对root可读,而/ var / www可由www-data用户读取。现在,如果你检查apache进程,你会发现它正在使用www-data用户运行。

$ ps aux | grep apache www-data 5133 0.0 0.2 6512 1208? R + 10:04 0:00 apache

现在,您正在尝试使用www-data用户运行apache来读取该文件。您可以采取三种行动方式:

1.将文件移至/ var / www并更改其权限,以便www-data用户可以阅读。

mv /root/cr.txt /var/www/
chown www-data:www-data /var/www/cr.txt

2.这是更好的方法。

Create a symlink to the file in the /var/www directory:

ln /root/cr.txt /var/www/

3.在某些情况下,这不会确保您的文件正在被阅读。

这很危险,不应该这样做!将www-data用户添加到根组,或更改文件所有权,以便www-data用户可以读取:

chown :www-data /root/cr.txt
## Or
sudo adduser www-data root

如果您不了解风险,则不应该这样做!

答案 1 :(得分:0)

首先,给apache访问root通常是一个坏主意。如果你坚持......

安装ACL(访问控制列表)Installing ACL

然后,假设您的apache服务器为其用户和组运行'apache2',请授予apache2用户和组访问目录/文件的权限:

setfacl -m "group:apache2:r-x" /root/whatever.file
setfacl -m "user:apache2:r-x" /root/whatever.file

# *** only need the next two lines if you plan on writing new files in the specified  directory.  It sets the default file permissions that will be used when the new file is created.
setfacl -d -m "group:apache2:r-x" /root
setfacl -d -m "user:apache2:r-x" /root

将r-x权限更改为您需要的任何内容

编辑 - 没有ACL的潜在解决方案

以下是未经测试的,可能需要调整,但应该让您朝着正确的方向前进。使用风险自负!

创建一个新组。名称可以是任何名称,但是对于此示例,我将使用groupadd

将其命名为“wwwadmins”
 groupadd wwwadmins

使用usermod

将root用户和apache2用户添加到此新组
 usermod -a -G wwwadmins root
 usermod -a -G wwwadmins apache2

使用chown

将文件的群组所有者更改为新群组
 chown :wwwadmins /root/whatever.file