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
これでめでたく、共有フォルダに読み書きできるようになった。
