既存のCentOS6.10+Samba3.6の環境で、htdocsとshareのふたつのディレクトリを、認証なしで接続できるように設定しています。
その設定ファイルを、そのままCentOS7.6+Samba4.8の環境に持ってきたら、なぜか認証画面が開いてしまい接続できない、という、困ったちゃんな状況にぶつかりました。
何とか解決できたので、そこまでの道のりをメモメモ。
インストールされているパッケージの違い
まず、CentOS6.10のサーバと、CentOS7.6のサーバにインストールされているパッケージの比較。
CentOS6.10のサーバ
# rpm -qa | grep samba
samba-3.6.23-51.el6.i686
samba-client-3.6.23-51.el6.i686
samba-common-3.6.23-51.el6.i686
samba-winbind-3.6.23-51.el6.i686
samba-winbind-clients-3.6.23-51.el6.i686
samba4-libs-4.2.10-15.el6.i686
CentOS7.6のサーバ
# rpm -qa | grep samba
samba-4.8.3-4.el7.x86_64
samba-client-4.8.3-4.el7.x86_64
samba-client-libs-4.8.3-4.el7.x86_64
samba-common-4.8.3-4.el7.noarch
samba-common-libs-4.8.3-4.el7.x86_64
samba-common-tools-4.8.3-4.el7.x86_64
samba-libs-4.8.3-4.el7.x86_64
samba-winbind-4.8.3-4.el7.x86_64
samba-winbind-modules-4.8.3-4.el7.x86_64
設定ファイルの中身
[global]
unix charset = UTF-8
dos charset = CP932
workgroup = WORKGROUP
server string = Samba Server
hosts allow = 127. 192.168.1. 192.168.2. 192.168.3. 192.168.4. 192.168.5. 192.168.6.
log file = /var/log/samba/log.%m
max log size = 50
security = share
passdb backend = tdbsam
load printers = yes
[htdocs]
comment = www root
path = /home/project/htdocs
browseable = yes
writable = yes
guest ok = yes
create mode = 0777
directory mode = 0777
share modes = yes
[share]
comment = share
path = /home/share
browseable = no
writable = yes
guest ok = yes
map to guest = Bad User
guest account = project
create mode = 0777
directory mode = 0777
share modes = yes
設定ファイルを検証
とりあえずSambaが起動しているものの、意図したとおりに動いていないので、検証します。
Sambaの設定を検証するツールを使ってみました。
# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: Ignoring invalid value 'share' for parameter 'security'
検証して一目瞭然!Samba4系では、Samba3系で使えた「security=share」が使えなくなっています。そう言えば、Samba3系でtestparmしたとき、「将来廃止されるよ」って警告が出ていたような。
気になったので、Samba3系でtestparmしてみました。
# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (4096) to minimum Windows limit (16384)
Processing section "[htdocs]"
WARNING: The "share modes" option is deprecated
Processing section "[share]"
Global parameter map to guest found in service section!
Global parameter guest account found in service section!
WARNING: The "share modes" option is deprecated
WARNING: The security=share option is deprecated
Loaded services file OK.
Server role: ROLE_STANDALONE
しっかり出ていました!そして、「share mode」も廃止の警告が。
使えないものはしょうがないので、「security=user」にしておいて、「map to guest=Bad User」でguestにマップさせてしまえばよさそう。
「security=user」に変更して、もう一度設定内容の検証。
# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[htdocs]"
Unknown parameter encountered: "share modes"
Ignoring unknown parameter "share modes"
Processing section "[share]"
Global parameter map to guest found in service section!
Global parameter guest account found in service section!
Unknown parameter encountered: "share modes"
Ignoring unknown parameter "share modes"
Loaded services file OK.
Server role: ROLE_STANDALONE
あぁ、やっぱりSamba4系では「share modes」の指定も廃止されているらしい。この指定も削除して、再度検証。
# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[htdocs]"
Processing section "[share]"
Global parameter map to guest found in service section!
Global parameter guest account found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE
OKのようです。Sambaを再起動してみました。
# systemctl restart smb nmb
それでも、やっぱり認証が必要のようです。
設定ファイルの記述を変更してみた
いっそのこと、htdocsとshareでそれぞれ指定しているguest関連の指定を、全てglobalの方へまとめてしまえ!と、半ばヤケになって、以下のように書き換えてみました。
赤い字が移動したもの。
[global]
unix charset = UTF-8
dos charset = CP932
workgroup = WORKGROUP
server string = Samba Server
hosts allow = 127. 192.168.1. 192.168.2. 192.168.3. 192.168.4. 192.168.5. 192.168.6.
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = no
map to guest = Bad User
guest ok = yes
guest only = yes
guest account = project
create mode = 0777
directory mode = 0777
[htdocs]
comment = www root
path = /home/project/htdocs
browseable = yes
writable = yes
read only = no
[share]
comment = share
path = /home/share
browseable = no
writable = yes
read only = no
Sambaを再起動。Windowsからディレクトリを開いてみる。
あらやだ、つながった。
さいごに
Samba4系は、3系からだいぶ変わっている部分があるようですが、設定ファイルの書き方まで変わっているようですね。
Samba3系では、共有したいディレクトリの設定ごとにguest接続できるように記述していましたが、Samba4系になって、その設定はglobalで書かないといけないようです。
何となく「これで本当にいいのだろうか」という疑問はありますが、外には出ないサーバなので、とりあえずこれで良しとしましょう!
お疲れ様でした!
コメント