CentOS 7にSambaサーバをたてる

Windows とのファイル共有のために、Samba サーバをインストールし、その後 firewalld と SELinux の設定を行う。

インストール

[takatoh@aybesea ~]$ sudo yum install samba samba-client samba-winbind samba-winbind-clients

firewalldの設定

firewalld の詳しい説明はまた別の機会に。ここでは、samba サーバにアクセスできるようにだけする。

[takatoh@aybesea ~]$ sudo firewall-cmd --add-service samba --zone public --permanent
success
[takatoh@aybesea ~]$ sudo firewall-cmd --add-service samba-client --zone public --permanent
success

smb.confの編集

誰でもアクセスできる共有フォルダを作る。/etc/samba/smb.conf ファイルを次のように編集。globa セクション。

[global]
workgroup = PANICBLANKET
security = user

passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw

dos charset = CP932
unix charset = UTF-8
display charset = UTF-8
map to guest = Bad User

共有フォルダのセクション。ここでは share という共有フォルダを作った。

[share]
path = /mnt/wiwaxia/share
writable = yes
force create mode = 0666
force directory mode = 0777
guest ok = yes
guest only = yes

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

[takatoh@aybesea ~]$ cd /mnt/wiwaxia
[takatoh@aybesea wiwaxia]$ sudo mkdir share

自動定と起動

[takatoh@aybesea wiwaxia]$ sudo systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[takatoh@aybesea wiwaxia]$ sudo systemctl enable nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.
[takatoh@aybesea wiwaxia]$ sudo systemctl enable winbind
Created symlink from /etc/systemd/system/multi-user.target.wants/winbind.service to /usr/lib/systemd/system/winbind.service.
[takatoh@aybesea ~]$ sudo systemctl start smb
[takatoh@aybesea ~]$ sudo systemctl start nmb
[takatoh@aybesea ~]$ sudo systemctl start winbind

Windowsから確認

ここでいったん、Windows 側からアクセスできるかどうか確認してみたところ、ダメだった。たぶん SELinux のせいだ。

SELinuxの設定

SELinux についても詳しいことは別の機会にして、ここでは必要そうな設定だけをする。

[takatoh@aybesea ~]$ sudo setsebool -P allow_smbd_anon_write=on
[takatoh@aybesea ~]$ sudo setsebool -P samba_share_nfs=on
[takatoh@aybesea ~]$ sudo setsebool -P samba_export_all_rw=on
[takatoh@aybesea ~]$ sudo sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

さて、これでもう一回試してみたけどダメだった。

何がいけない?

firewalld をもう一度確認してみる。

[takatoh@aybesea ~]$ sudo firewall-cmd --list-service
ssh dhcpv6-client

あれ?samba が追加されてない。

[takatoh@aybesea ~]$ sudo cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="samba"/>
  <service name="samba-client"/>
</zone>

ゾーンの設定ファイルには反映されている。何故だ?
firewalld をリスタートさせてみる。

[takatoh@aybesea ~]$ sudo systemctl restart firewalld
[takatoh@aybesea ~]$ sudo firewall-cmd --list-service
ssh dhcpv6-client samba samba-client

今度は反映された。
もう一度 Windows からアクセスしてみると、共有フォルダは見つかったものの書き込みができない。
共有用ディレクトリのパーミッションを確認してみると、root 以外は書き込みができないようになっていたので、これを変更してみる。

[takatoh@aybesea ~]$ cd /mnt/wiwaxia
[takatoh@aybesea wiwaxia]$ ls -l
合計 20
drwx------. 2 root root 16384 12月 30 21:21 lost+found
drwxr-xr-x. 2 root root  4096  1月  1 17:52 share
[takatoh@aybesea wiwaxia]$ sudo chmod 777 share
[takatoh@aybesea wiwaxia]$ ls -l
合計 20
drwx------. 2 root root 16384 12月 30 21:21 lost+found
drwxrwxrwx. 2 root root  4096  1月  1 18:31 share

これでめでたく、共有フォルダに読み書きできるようになった。

CentOS 7のsshd

CentOS 7 では標準で sshd が動いているようだ。Ubuntu マシンからアクセスした様子を示す。

takatoh@envelopes $ ssh takatoh@aybesea
takatoh@aybesea's password: 
Last login: Sun Dec 31 08:28:12 2017
[takatoh@aybesea ~]$ ls
Desktop    Downloads              Music     Public     Videos  w
Documents  Firefox_wallpaper.png  Pictures  Templates  bin

envelopes が Ubuntu マシンで、aybesea が CentOS マシンね。なんにもしてなくても、ちゃんとアクセスできる。これは楽でいい。