◆ ユーザのホームフォルダの中だとシンボリックリンクでも apache から中見えない

Windows にあるフォルダを apache で見えるようにして動きを確認したいことがあります

単純にそのフォルダを公開して Linux で mount するのですが /mnt に別のフォルダをマウント済みだったので たまたまその時いた カレントディレクトリ以下に mnt フォルダ作って mount させたせいでハマりました

Forbidden

PC 名が notepc の Windows で share01 と言う名前でフォルダを共有できるようにしておきます
これを ~/mnt にマウントして /var/www/html/mnt にシンボリックリンクを作ります
[qwer@fedora]~% sudo mount -t cifs //notepc/share01 ~/mnt -o username=share,password=share,iocharset=utf8,file_mode=0777,dir_mode=0777
[qwer@fedora]~% sudo ln -s ~/mnt /var/www/html/share01
[qwer@fedora]~% ll /var/www/html
(略)
lrwxrwxrwx 1 root root     15  4月  1 11:07 share01 -> /home/qwer/mnt
(略)

これで http://fedora/share01 にアクセスすれば Windows の share01 フォルダがみえるはず
フォルダの中に apache で動く php を入れておきます
[qwer@fedora]~% ll /var/www/html/share01/
合計 1
-rwxrwxrwx 1 root root 42  3月 31 21:51 test.php

apache の設定にも FollowSymLinks をつけてシンボリックリンクを許可します
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName fedora
    <Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

これで再起動して準備完了……のはず
[qwer@fedora]~% sudo systemctl restart httpd


さっそくアクセスしてみます



Forbidden

You don't have permission to access /share01/test.php on this server.



なぜ!?

FollowSymLinks だし mount オプションは 0777 パーミッションなのに


原因

原因はユーザフォルダの中に mount してること

新しくユーザ作って そのユーザで /var/www/html を見てみます
[qwer@fedora]~% sudo adduser user
[qwer@fedora]~% sudo su - user
[user@fedora ~]$ ll /var/www/html
(略)
lrwxrwxrwx 1 root root     15  4月  1 11:07 share01 -> /home/qwer/mnt
(略)
[user@fedora ~]$ ls /var/www/html/share01
ls: '/var/www/html/share01' にアクセスできません: Permission denied

リンクが赤色になっていてアクセスもできません
同じように apache ユーザからもシンボリックリンクが見えていません

mount パーミッションが 0777 でも qwer ユーザのホームフォルダの中にあるので mnt フォルダまでたどり着けないからです


/mount に mount すると user ユーザからも見えています
[qwer@fedora]~% sudo mkdir /mount
[qwer@fedora]~% sudo mount -t cifs //notepc/share01 /mount -o username=share,password=share,iocharset=utf8,file_mode=0777,dir_mode=0777
[qwer@fedora]~% sudo ln -s /mount /var/www/html/share01
[qwer@fedora]~% sudo su - user
[user@fedora ~]$ ls /var/www/html/share01
test.php

これなら apache からも見えるのでブラウザから開けます