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ファイルにはアクセスできません。可能な手順をステップごとに説明してください。
これを行うことのセキュリティへの影響を忘れ、ビジネスに取りかかります。
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アパッチ
ここで、www-data
ユーザーでApacheを実行してファイルを読み取ろうとしています。次の3つのアクションコースを実行できます。
ファイルを/var/www
に移動し、そのアクセス許可を変更して、www-data
ユーザーが読み取れるようにします。
mv /root/cr.txt /var/www/
chown www-data:www-data /var/www/cr.txt
これが望ましい方法です。
/var/www
ディレクトリ内のファイルへのシンボリックリンクを作成します。
ln -s /root/cr.txt /var/www/
これは、場合によっては、ファイルが読み取られることを保証しません。
これは危険であり、実行すべきではありません!www-data
ユーザーをroot
グループに追加するか、ファイル所有権を変更してwww-data
ユーザーが読み取れるようにします:
chown :www-data /root/cr.txt
## Or
Sudo adduser www-data root
リスクを理解していない場合は、これを行うべきではありません!
ルート以外のユーザーがファイルを読み取り可能ですか? ALLの読み取りアクセス権を追加してみてください。
Sudo chmod a+r /root/cr.txt