LinuxからWindowsの共有フォルダをmountした際にファイルが作成・変更できない問題
$ mount -t smbfs //192.168.0.2/htdocs /var/www/htdocs -o username=hoge,password=hoge,uid=apache
192.168.0.2 : Windows側のIPアドレス
username,password : Windows側でパスワード保護している場合に必要
uid : Linux側の実行ユーザー。httpd.confでUser指定しているユーザー名を記述
普通にWindowsのフォルダをLinux側でマウントする場合は、上記のようなコマンドを打ちます。
で、マウントできてPHPとかを実行することが出来たんだけど、
ログファイル等ファイルの作成・変更・削除が何故か行えないので、色々調べて見ました。
・そもそも、何がダメなのか?
samba経由でアクセスしているWindowsのディレクトリに対するファイル作成・削除の権限がない
→ じゃあmountする際にlinux側から編集する権限をwindowsのフォルダに付加すればいいんじゃない?
・で、いろいろためしてみた
- gid=apacheをmountオプションに付加
無駄
- uidをrootとかに変更してみる
無駄無駄
- Apacheの実行ユーザーをapacheからrootに変更
無駄無駄無駄
- ファイルを開く権限がありませんって出てるから、rootでやればいけそうなのに…
[function.fopen]: failed to open stream: Permission denied
- 保存する階層を変えてみたけど
無駄だった
- でもphpのセッションとかは保存できてるから、apache経由でファイルの作成ができなくなっているってワケではない
VM側ならダイジョーブ。Win側をいぢると怒られるってこと
- mountオプションにrwつけてみた
やっぱり無駄
- apacheとかrootを含めたグループを作ってみた。apacheの実行グループ(httpd.conf)も変えた
でもダメダメ
- umaskで実行権限を0777に変えてみた
でもそんなのry
- sambaの設定ファイルをいじくってみる
windowsからのアクセスができるようになったけど関係ないよね
・どーしてなのさ
moountのオプションでrw権限与えてるのに動かないって何Yo
→ CacheFS, NFS, PCFS, UFS, S5FSとかじゃないと有効じゃないらしい?(http://docs.sun.com/app/docs/doc/806-2717/6jbtqleh3?l=ja&a=view)
と思ったけど違うぽい
・とりあえずVMをリブートしてtouchされたメッセージを眺めてみることにする
Feb 9 09:47:41 yeOldZX kernel: smb_create: //test failed, error=-13
なんかそれっぽいメッセージが出だした!!
それをもとに、しぶしぶ海外のサイトをあさってみたら答えがあった
http://www.linuxquestions.org/questions/linux-networking-3/smbmount-write-permissions-root-288157/
・結果
Windows側の共有フォルダのアクセス許可でフルコントロールにチェックいれたらなおた!←結論
Linux側は全く関係なかった!Linux側が原因と思ってずっと見てたのに!!
基本大事!超大事!