sambaを使って家庭内ファイルサーバを作ってみた

2017年11月2日

sambaを使ってローカルネットワーク内でファイル共有

最近、Windows端末とLinux端末を同じ頻度で利用するようになってきた。

Linux端末は、持ち運びが便利なノートパソコンなので、外で作業したいときとかはよく使う。

そんなこともあり、ブログの記事とかをLinux端末を使って書いたりする。

ただ、やっぱりWindows端末のほうが大きくて使いやすいので、仕上げはWindows端末でやったり。

今まではTeratermを使ってファイルの転送をやってたけど、毎度のことでめんどくさくなってきた。

なんかいい方法ないかなーっと思って調べているとsambaというのを発見した。

sambaって何

Samba Wiki
を見ると、以下のように書かれている。

Sambaは、1992年以来、多数のバージョンのMicrosoft Windowsオペレーティングシステムを含むあらゆる種類のSMB / CIFSクライアントにファイルおよび印刷サービスを提供するオープンソース / フリーソフトウェアスイートです。

これだけではよくわからないけど、私的にはそんなことはどーでもよくて、何ができるかというのが重要なのだ。

今回の目的であるwindows端末とlinux端末でのファイルのやり取りが実現できるということはわかっている。

あとは気が向いたときに勉強すればいいかな。

sambaの設定

インストール

sambaの設定については、
こちらを参考にした。
sambaをインストールする。

sudo yum -y install samba

共有するディレクトリの設定

今あるフォルダーを使えばいいかなと思って、既存のディレクトリの権限を変えて使おうと考えた。

chmod 777 /home/user/mdfile

しかし、そもそも/home/user自体の権限が777でなかったので、結局うまくいかなかった。
しゃーないので、共有用のフォルダーを作成する。

mkdir /home/samba chmod 755 /home/samba

ファイアフォールの設定

sambaを使うために、ファイアフォールの設定を変更する。

firewall-cmd --permanent --add-service=samba firewall-cmd --reload

sambaの設定ファイルを編集

sambaの設定ファイルを編集する。

vim /etc/samba/smb.conf

ほぼ、参考サイトで書いてる通りにコンフィグを変更した。
hosts allowは自分のipをみて適宜書き換える。
あと、path = /home/sambaも共有したいディレクトリ次第で書き換える。

# See smb.conf.example for a more detailed config file or # read the smb.conf manpage. # Run ‘testparm’ to verify the config is correct after # you modified it. [global] workgroup = WORKGROUP security = user netbios name = myCent07 hosts allow = 127. 192.168.100. map to guest = Bad User passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = root create mask = 0664 directory mask = 0775 [Public] comment = Sample Share path = /home/samba public = yes writable = yes guest ok = yes guest only = yes

書き直した内容が問題ないかシンタックスチェックする。
Loaded services file OK.と出たら問題なし。

# testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section “[homes]” Processing section “[printers]” Processing section “[print$]” Processing section “[Public]” Loaded services file OK. Server role: ROLE_STANDALONE

sambaで使うサービスの起動と設定

sambaで使うサービスを起動

</span><span style="font-family: 'Noto Sans Japanese';">systemctl start nmb.service systemctl start smb.service # systemctl is-active nmb.service active # systemctl is-active smb.service active</span><span style="font-family: 'Noto Sans Japanese';">


端末を起動したタイミングで自動でサービスが立ち上がるように設定する。

# systemctl enable nmb.service Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service. # systemctl enable smb.service Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

SElinuxの設定

windowsのネットワークを開くと、myCent07ができてる。
ダブルクリックして開くとLinux側でSElinuxの警告がでてる。
あ、、SELinuxが有効になってる。。。

# getenforce Enforcing

無効に変更する。(永続的に)

</span><span style="font-family: 'Noto Sans Japanese';">vim /etc/selinux/config SELINUX=disabled</span><span style="font-family: 'Noto Sans Japanese';">


設定変更を有効にするために端末自体を再起動。

注意事項

よし。設定windows側でもファイルを使えるようになった。

その後、/home/samba/mdfileを作成して、windows側でファイルを編集して保存しようとしたところ、権限がないというようなエラーとなった。

あれ?権限はゆるゆるの777にしてるはず。っと思って確かめてみると、
確かに/home/sambaは777なのだけど、/home/samba/mdfileはデフォルトの権限設定となっていたので、そこで権限エラーとなっていることがわかった。

あとそこで作ったマークダウンのファイルとかも全部デフォルトの権限で作成される。

つまり、/home/samba配下でディレクトリ及びファイルを作成した場合、ちゃんとゆるゆるに設定してやらないといけないよということ。

念の為言っておくと、今回の目的はとりあえず権限とか考えずに目的(ローカル内でwindowsとlinux間でファイルの共有)をシンプルに達成できればOKというものです。

だから権限設定を何も考えずに777とかしてたり、セキュリティ面で何も考えずにやってます。

あくまでローカルネットワーク内でいじくる程度なら問題ないと判断してやってます。がっつりサーバを公開しようと思うなら、そこのところは再度調査しましょう。