よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

CentOS7 Samba 設定編

前回Samabaをソースインストールしました。
www.unknownengineer.net
先に言っておきますが、別にソースでインストールする理由は特に無いです。なんとなくです。
そしてその結果、設定時に地味にハマった箇所を今回まとめていきます。

目次

smb.conf

まずはsambaの設定ファイルである、smb.confを探します。
CentOS7の場合、パッケージで導入すれば"/etc/samba/smb.conf"に作られますが、ソースで入れたらどこにも無いです。自分で作りましょう。
configureの時に–confdirを指定していなければ、PREFIX/etcの下にsmb.confを作ります。
今回の設定の方針としては「同一セグメントの端末は全て許可」で作ります。えぇ、ユーザー認証が上手く行きませんでした。

# vim /usr/local/samba/etc/smb.conf
[global]
workgroup = WORKGROUP
security = share
log file = /var/log/samba/log.%m
max log size = 50

dos charset = CP932
unix charset = UTF8
display charset = UTF8

[data]
comment = Samba Public
path = /samba/public
public = Yes
guest ok = Yes
read only = No
writable = Yes
hosts allow = 192.168.10.

共用ディレクトリ/samba/publicを作成しておきます。

#mkdir -p /samba/public

とりあえずこれで起動してみます。

# /usr/local/samba/sbin/smbd start
# ps aux |grep smbd
root      3667  0.0  0.0   9032   660 pts/0    S+   15:55   0:00 grep --color=auto smbd

起動しません…

4.x系の罠

罠というほどでは無いのですが、sambaは4系から"security = share"が使えなくなっています。shareと同様の設定をしたければ、以下のように変更します。

# vim /usr/local/samba/etc/smb.conf
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
log file = /var/log/samba/log.%m
max log size = 50

dos charset = CP932
unix charset = UTF8
display charset = UTF8

[data]
comment = Samba Public
path = /samba/public
public = Yes
guest ok = Yes
read only = No
writable = Yes
hosts allow = 192.168.10.

“security"を"user"に変更し、"map to guest = user"を指定します。これでユーザー認証に失敗したユーザーは全てguestになります。

# /usr/local/samba/sbin/smbd start
# ps aux |grep smbd
root      3789  0.0  0.3 328664  6284 ?        Ss   16:03   0:00 /usr/local/samba/sbin/smbd start
root      3790  0.0  0.1 322640  3012 ?        S    16:03   0:00 /usr/local/samba/sbin/smbd start
root      3791  0.0  0.1 322632  2840 ?        S    16:03   0:00 /usr/local/samba/sbin/smbd start
root      3793  0.0  0.1 329188  3704 ?        S    16:03   0:00 /usr/local/samba/sbin/smbd start
root      3795  0.0  0.0   9032   660 pts/0    S+   16:03   0:00 grep --color=auto smbd

これでとりあえず起動しました。
Windowsから"\sambのIP"でアクセスしてみると、publicディレクトリが見えるかと思います。但し、guestアカウントにマッピングされている為、今の状態では権限がありません。とりあえずguestでもファイルの読み書き出来るようにするのであれば、ディレクトリに権限与えといて下さい。尚、こんな設定にするなら、せめてhosts allowはかけましょう。

# chmod 777 /samba/public

systemdの設定

yumで入れた場合のsmb.serviceが以下になります。

[Unit]
Description=Samba SMB Daemon
After=syslog.target network.target nmb.service winbind.service

[Service]
Environment=KRB5CCNAME=FILE:/run/samba/krb5cc_samba
Type=notify
NotifyAccess=all
PIDFile=/run/smbd.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/sbin/smbd $SMBDOPTIONS
ExecReload=/usr/bin/kill -HUP $MAINPID
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

このままでは当然動かないので、ソース用に少し変更します。

# vim /etc/systemd/system/smb.service

Description=Samba SMB Daemon
After=syslog.target network.target nmb.service winbind.service

[Service]
Environment=KRB5CCNAME=FILE:/run/samba/krb5cc_samba
Type=forking
NotifyAccess=all
PIDFile=/usr/local/samba/var/run/smbd.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/local/samba/sbin/smbd $SMBDOPTIONS
ExecReload=/usr/bin/kill -HUP $MAINPID
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

変更するのは2箇所。
Typeを"forking"に変更。
PIDFileを"/usr/local/samba/var/run/smbd.pid"に変更します。

# systemctl enable smb.service 
# systemctl start smb
# systemctl stop smb

これで起動/停止が出来ればとりあえずオッケーです。ユーザー認証周りはもう少し学習します。