web-dev-qa-db-ja.com

/ rootディレクトリのファイルにアクセスするためにphpウェブページを作成する方法は?

Linux 12.04を使用しています。Apacheにphpがインストールされています。/root/フォルダー内のテキストファイルにアクセスしたいです。権限と本当に混乱しています。使用している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
acekapila

これを行うことのセキュリティへの影響を忘れ、ビジネスに取りかかります。

ls -l /var/wwwls -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

/rootrootに対してのみ読み取り可能ですが、/var/wwwwww-dataユーザーによって読み取り可能です。これで、Apacheプロセスをチェックすると、www-dataユーザーを使用して実行されていることがわかります。

$ ps aux | 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. /var/wwwディレクトリ内のファイルへのシンボリックリンクを作成します。

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

    これは、場合によっては、ファイルが読み取られることを保証しません。

  3. これは危険であり、実行すべきではありません!www-dataユーザーをrootグループに追加するか、ファイル所有権を変更してwww-dataユーザーが読み取れるようにします:

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

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

1
Braiam

ルート以外のユーザーがファイルを読み取り可能ですか? ALLの読み取りアクセス権を追加してみてください。

Sudo chmod a+r /root/cr.txt
0
etsauer