CentOS 7にSambaサーバをたてる

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

インストール

[[email protected] ~]$ sudo yum install samba samba-client samba-winbind samba-winbind-clients

firewalldの設定

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

[[email protected] ~]$ sudo firewall-cmd --add-service samba --zone public --permanent
success
[[email protected] ~]$ 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

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

[[email protected] ~]$ cd /mnt/wiwaxia
[[email protected] wiwaxia]$ sudo mkdir share

自動定と起動

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

Windowsから確認

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

SELinuxの設定

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

[[email protected] ~]$ sudo setsebool -P allow_smbd_anon_write=on
[[email protected] ~]$ sudo setsebool -P samba_share_nfs=on
[[email protected] ~]$ sudo setsebool -P samba_export_all_rw=on
[[email protected] ~]$ 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 をもう一度確認してみる。

[[email protected] ~]$ sudo firewall-cmd --list-service
ssh dhcpv6-client

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

[[email protected] ~]$ 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 をリスタートさせてみる。

[[email protected] ~]$ sudo systemctl restart firewalld
[[email protected] ~]$ sudo firewall-cmd --list-service
ssh dhcpv6-client samba samba-client

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

[[email protected] ~]$ cd /mnt/wiwaxia
[[email protected] 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
[[email protected] wiwaxia]$ sudo chmod 777 share
[[email protected] 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 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください