1

Linux 12.04 を使用しています。apache と php がインストールされています。/root/ フォルダー内のテキスト ファイルにアクセスしたいのですが、アクセス許可について本当に混乱しています。

<?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 ファイルにはアクセスできません。可能なステップごとに助けて説明してください。

4

2 に答える 2

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補助 | grep Apache www-data 5133 0.0 0.2 6512 1208 ? R+ 10:04 0:00 アパッチ

ここで、www-data ユーザーで実行されている apache にファイルを読み取らせようとしています。次の 3 つのアクションを実行できます。

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

リスクを理解していない場合は、これを行うべきではありません。

于 2013-08-08T17:52:47.650 に答える
0

まず、ルートへのアクセス権を apache に与えることは一般的に悪い考えです。あなたが主張するなら...

ACL (アクセス制御リスト) のインストール 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

rx パーミッションを必要なものに変更します

編集 - ACL を使用しない潜在的な解決策

以下はテストされておらず、微調整が必​​要な場合がありますが、正しい方向に進むはずです。自己責任!

新しいグループを作成します。名前は何でもかまいませんが、この例では、 groupaddを使用して「wwwadmins」と呼びます。

 groupadd wwwadmins

usermodを使用して、root ユーザーと apache2 ユーザーをこの新しいグループに追加します。

 usermod -a -G wwwadmins root
 usermod -a -G wwwadmins apache2

chownを使用して、ファイルのグループ所有者を新しいグループに変更します。

 chown :wwwadmins /root/whatever.file
于 2013-08-06T12:03:31.070 に答える