このブログを検索

2012/11/07

windows共有フォルダをマウントして、phpでファイル一覧を取得

以下のようにPHPをつかって、既にマウントされた共有フォルダ内の一覧を取得したかった.
windows(app server) → マウント → windows(nas)
本当は上記のようにwindows同士でやりたかったが、どうにもうまくいかず以下のかたちをとることにした.windows同士でうまくいったという人がいましたら教えてください.
Linux(app server) → マウント → windows(nas)
それと、selinuxはoffってません.
普通にマウントしたら、PHPからアクセスできなかったので、mountコマンドにcontextというオプションを付けてあげなくてはならないようだ.
[ 普通にマウント ]
# mount -t cifs //server/source /var/www/data/destination -o username=xx,password=xx,uid=xx,gid=xx
# ll -aZ /var/www/data/destination
- rwxr-xr-x apache apache system_u:object_r:cifs_t:s0 test.txt
[ contextオプション追加マウント]
# mount -t cifs //server/source /var/www/data/destination -o username=xx,password=xx,uid=xx,gid=xx,context="system_u:object_r:httpd_sys_content:s0"
# ll -aZ /var/www/data/destination
- rwxr-xr-x apache apache system_u:object_r:httpd_sys_content:s0 test.txt
という感じになって、以下のphp実行したら意図した動作に至ったので解決.
$vim index.php
---------------------
<?php
foreach (glob('../data/destination/*.*') as $file) {
    echo "file_name:".$file.'<br />';
}
?>
セキュリティ的に危ういのかはいざ知らず.
毎回起動時にマウントするのが面倒なので、/etc/fstabに記述したが、contextオプションでエラーになってしまった.
なので、cronコマンドで対処することにした.
#crontab -e
------
@reboot mount -t cifs //server/source /var/www/data/destination -o username=xx,password=xx,uid=xx,gid=xx,context="system_u:object_r:httpd_sys_content:s0"
当分はこれでやり過ごそう.

参考:
Mountiong File System
http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-Mounting_File_Systems.html

0 件のコメント:

コメントを投稿