page_adsence

2015年1月30日金曜日

Windwosマシンからsambaへのアクセスでハマった

vagrant + ansibleを使ってVMのセットアップをして、いざ共有ディレクトリにアクセスしたら、アクセス拒否。
原因がいまいちよくわからなかった。
結論から先に言うと、全ての原因はSELinuxだったということ。
playbookにSELinuxをオフにする記述を追加して、設定ファイルを確認。

$ view /etc/selinux/config
SELINUX=disabled

と書かれていたので、安心しきっていたのですが、実際には設定ファイルだけ書き換わっていて再起動されていなかったため、
SELinuxが普通に動いている状態でした。

$ getenforce



$ sestatus

で確認した所、ガンガン動いていた。
以下、ハマった事象に関しての詳細。

起こっていた現象

\\サーバのIP

にはアクセス出来る。

\\サーバのIP\public

にもアクセス出来る。

\\サーバのIP\vagrant

にはアクセス出来ない。

sambaの設定色々いじったり、VM側のディレクトリのパーミッション弄ってみたりと色々試しましたが全てダメ。
何がダメなのかわからなかったのですが、こんな記事を教えてもらって試してみた。
VM上で、下記のコマンドを実行したら見れる様になりました。

$ setsebool -P samba_enable_home_dirs on

これで問題なくなったと思っていたら、今度はフォルダとシェルスクリプトだけsamba上で見えていて、ファイルが一切見えないという状態に。
VM上で同じディレクトリを参照すると、特に問題なくファイルもあり、中身も閲覧出来る。
何が原因なんだと思って調べていた所、このサイトが引っかかった。
原因はSELinuxだと書かれていて、SELinuxはオフにしてあるはずなのになぁと思いつつ、確認してみた。

$ getenforce
Enforcing

普通に動いてました・・・。
なので

$ setenforce 0

で一時的に無効化してから、もう一度samba経由で対象のディレクトリにアクセス。
普通に見れました。