[CentOS] CentOS7.6のSamba4で認証なし共有がうまくいかない

※当サイトでは広告を掲載しています

既存の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で書かないといけないようです。

何となく「これで本当にいいのだろうか」という疑問はありますが、外には出ないサーバなので、とりあえずこれで良しとしましょう!

お疲れ様でした!

初稿:2019年2月17日
[CentOS] 不要PCにCentOS7.6をインストール
4年ほど前、サポートが切れて使わなくなったWindowsServer2003の本体を使って、テスト環境用にLinuxサーバを構築しました。 途中で何度かアップデートをし、現在はCentOS6.10+PHP5.6で動作しています。 しかし、こ...
[CentOS] CentOS7.6でtelnetが自動起動してくれない!
不要PCにCentOS7.6をインストールし、最低限の設定が終わったところまで、前回の記事でまとめました。 その日の作業が終わったところで、一旦PCの電源を切っていたのですが、翌日起動してみるとtelnetがつながらない!コンソールからログ...
[CentOS] CentOS7.6のyumリポジトリにEPELとRemiを追加
CentOS7.6には、PHPが5.4、MySQLは互換DBのMariaDB5.5が入っていました。 今回構築している環境は、公開前のWebサイトを構築するテストサーバ的な動作もさせたいので、本番用サーバと仕様を合わせたい。 本番用サーバで...
[CentOS] CentOS7.6にPHP7.3をインストール
CentOS7.6には、デフォルトでPHP5.4がインストールされます。 今となっては古いPHPになってしまいますが、商用ディストリビューションのRed Hat Enterprise Linux(RHEL)のソースを元に作られているCent...
[CentOS] CentOS7.6にMySQL5.6をインストールする
CentOS7.6でデフォルトでインストールできるMySQLは、MariaDBというMySQL派生のDBです。 MySQLとほぼ同じなので、そのまま使っても特に問題はないのですが、本番環境でMySQL5.6を使うにあたり、同じバージョンに揃...

コメント

タイトルとURLをコピーしました