そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

CentOSでメディアサーバを立てる〜その1:sambaでホームネットワークと接続しよう〜

Nasneのメディアサーバ機能はなかなか便利で、専らiPadの『DiXiM Digital TV』というアプリで録画を消化する昨今。

有料なだけあって他のアプリよりも安定性は抜群に良い。

画面を持ち歩いて好きな場所で録画が見られるのはなんだかんだで凄く快適だったりする。



折角なのでと音楽やら画像やらもNasneに放り込んでいたのだが、最近は容量が逼迫してきた。

そんなわけでMicroServerを買ったのは目的の一つは、Nasneの役割を一部移管するメディアサーバを構築することだったりする。
MicroServer N54L 買ってみたよー - そんな今日この頃でして、、、



メディアサーバを立てる前段階として、とりあえずホームネットワークからファイルを読み書きできるようにしようということでsamba環境を構築した。


いうても共有化するだけだし、昔デスクトップOSとして使ってたTurboLinuxでもなんなく出来たから今回もサクッと行けるだろうと思っていたら、意外と引っかかりどころがあったのでメモ程度に。



sambaの導入

yumでsambaインストール

いわずもがな。
rootアカウントで適当に下のコマンド叩けばOK。

yum -y install samba

アクセス用のアカウントを作成

共有フォルダにアクセスするアカウントを作成する。

pdedit -a [アカウント名]

上記コマンドを叩いてパスワードを設定して作成できる。




共有用のディレクトリを作成

ユーザ毎にホームディレクトリを作成するとかの設定だと色々面倒なのだけど、今回は完全に僕個人用なので/home/sambaを全体で共有化する方向で。

mkdir /home/samba

今回は完全に家庭内のネットワークから出ないのでひとまずパーミッションは777で。

chmod 777 /home/samba

※sambaの書き込みアカウントの設定とかmediatombのプロセスとかをきっちり揃えれば755でも良かった気がする。




環境設定

/etc/samba/smb.confを編集する。

見る参考サイトによって違ってて四苦八苦したのだけれど、究極的には[global]の項目のworkgroupを現環境に合わせて、[public]の項目のコメントアウトを外して適時書き換えるのと、[homes]とかの要らない項目をコメントアウトするだけで良かった。

[global]
〜〜〜
省略
〜〜〜
# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
# specifiy it as a per share option as well
#
workgroup = [ホームネットワーク名]

# A publicly accessible directory, but read only, except for people in
# the "staff" group
[public]
comment = Public Stuff
path = [共有ディレクトリのパス(今回なら/home/samba)]
browseable = yes
public = yes
writable = yes
printable = no
; write list = +staff
create mask = 0777
force create mode = 1
directory mask = 0777
force directory mode = 1

※次回書くつもりのmediatombのアカウントの関係上、ディレクトリとかファイルを作る際パーミッションが777になるように強制する設定を加えた。
これまたアカウント周りをもっと上手くやれば不要なのかもしれない。


testparmコマンドを使って文法チェックを行い、問題無さそうなら下記コマンドで起動。

/etc/rc.d/init.d/smb start
/etc/rc.d/init.d/nmb start

ついでにOS起動時に立ち上がるように設定しておく。

chkconfig smb on
chkconfig nmb on

トラブル


と、順調に行けば良かったのだが、今回は色々スムーズには行かなかった。

smbclientで繋げない問題

samba起動後のチェックとしてひとまずサーバのローカルから確認してみようと smbclient -L localhost とやってみたところ「session setup failed: SUCCESS - 0」とエラー。

なんでもsambaの不具合?らしい。

/etc/samba/smb.confの[global]項目に下記の設定を追記。

[global]
client use spnego=No

外部から接続できない問題

めでたくローカルからsmbclientでつなげたので、早速外部から読み書きしてみようと思ったら、外部から接続できない。

ファイアウォール的なサムシングだろうと思ってiptablesを止めてみたらいけた。

/etc/init.d/iptables stop

家庭内専用なので止めっぱなしの運用でも良いことは良いのだが、勉強の一環ということでiptablesを編集してsambaが使用するポートを穴あけして解決。

iptables -I INPUT -p udp -m udp --dport 137--syn -j ACCEPT
iptables -I INPUT -p udp -m udp --dport 138 --syn -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 139 --syn -j ACCEPT
service iptables save
service iptables restart

ディレクトリは見えるのにファイルが見えない問題

ようやっとWindows機からもディレクトリが見えるようになったので、「よし、試しに」とLinux側でテキストファイルを作っていれてみたが表示されない。

最初はパーミッションとかエンコードとかつなぐ側のOS固有の問題かと思ったが、ローカルでsmbclient localhost/publicでつないでlsしても見えない・・・




この問題にかなり手間取ったのだが、分かってしまえば何のことはなかった。

SELinuxというプロセス毎の権限を制限するセキュリティ機能に、sambaが/home以下を使用することに対する許可の項目がある。


下記コマンドでsamba関連の設定一覧が確認できる。

getsebool -a |grep samba

↓結果

samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off


ひとまずSELinuxを止めてみて見えるようになりそうならこれが問題。
下記が停止コマンド。(引数を1にすると起動)

setenfoce 0


一応この状態で運用するという手もあるが、気持ちが悪いのでちゃんと設定して解決。
今回必要なのは下の2つの項目。

  • samba_enable_home_dirs
  • samba_export_all_rw


下記のコマンドで許可する必要がある。

setsebool -P samba_enable_home_dirs 1
setsebool -P samba_export_all_rw 1

一応確認。

getsebool -a |grep samba

↓結果

samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> on
samba_export_all_ro --> off
samba_export_all_rw --> on
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off


あと書き忘れたけど、適時smbとnmbの再起動が必要。

これでなんとかWindowsとMac両方からネットワーク接続して書き込めるようになった。

SELinxとか存在すら知らなかったので意外と勉強になった。




脱線してどうでも良い話

どうにも最近寝付きが悪いのでMOGUの枕を買ってみた。

ビーズクッションの感触が心地よく、また実に合理的な形状が非常にリラックス感がある。

パッと見が新手の性具っぽいことを除けば凄くオススメ。