印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Samba にシステムユーザで接続できない

Samba をアップグレードしたところ,Samba サーバは起動しているのに認証が通らない。それは,アクセスするユーザがシステムユーザであり,Samba のパスワードデータベースに登録されていないのが原因だった。

■ ■ ■

動作環境

サーバは Vine Linux 6.2, Samba 3.6.22, iptables 1.4.10,クライアントは Windows 7,アクセスしたいユーザは apache である。

現象

Windows PC から Samba サーバに接続すると,ユーザとパスワードのダイアログは表示されるが,認証が通らない。

調査と対応

passdb の更新

Island Life - sambaプチはまりメモ に原因と解決法が紹介されていた。原因は,Samba が独自に持っているパスワードデータベース /var/lib/samba/passdb.tdb にユーザが登録されていることが必要だが,ユーザ apache は UID 48 で,UID が 1000 より小さいユーザはシステムアカウントと認識されるため,passdb.tdb の構築の際に無視されたというのである。

passdb.tdb の中身を確認する。

# pdbedit -L
WARNING: The "idmap uid" option is deprecated
WARNING: The "idmap gid" option is deprecated

ユーザ apache を登録する。

# pdbedit -a -u apache

再度確認。

# pdbedit -L
WARNING: The "idmap uid" option is deprecated
WARNING: The "idmap gid" option is deprecated
apache:48:Apache

これで試したところ,認証が成功した。

smb.conf の更新

Vine Linux を 4.2 から 6.2 にアップグレードしたタイミングで,Samba もアップグレードされた。上で出てきた警告「WARNING: The "idmap uid" option is deprecated」は,「smb.conf の記述の仕方が古い」のが原因である。Samba 3.6.0 から ID マッピングの方法が変更になったとのこと。

Samba 3.6.0 - ID Mapping Changes

As part of the changes, the default idmap configuration has been changed to be more coherent with the per-domain configuration. The parameters "idmap uid", "idmap gid" and "idmap range" are now deprecated in favour of the systematic "idmap config * : range" and "idmap config * : backend" parameters.

Major enhancements in Samba 3.6.0

/etc/samba/smb.conf を見ると,

[global]
#============================ Share Definitions ==============================
   idmap uid = 16777216-33554431
   idmap gid = 16777216-33554431

となっていた。これを次のように書き換える。

[global]
#============================ Share Definitions ==============================
   idmap config * : backend = tdb
   idmap config * : range = 16777216-33554431

「idmap config * : backend = tdb」はデフォルトのため明示指定する必要はないとのこと (idmap_tdb)。

これで警告は出なくなる。

iptables の設定

自宅に設置した Samba サーバへのアクセスを制限したい場合,いくつかの方法がある。

  • 自宅から外部につながるブロードバンドルーターで Samba のポートを閉じておく
  • 自宅サーバのファイアウォールで Samba サーバへアクセスできる IP アドレスを限定する
  • Samba の設定で,Samba サーバへアクセスできる IP アドレスを限定する

下の2つについては Samba and IPTables に方法が紹介されている。RH-Firewall-1-INPUT は,iptables で使用する INPUT チェーンと FORWARD チェーンを同時に記述するためのチェーンで,名前自体に意味はなく,任意につけていいものだとのことである (RH-Firewall-1-INPUTとは? 【OKWave】)。

/etc/sysconfig/iptables に次を追加した。

-A RH-Firewall-1-INPUT -p udp -m udp -s 192.168.0.0/24 --dport 137 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp -s 192.168.0.0/24 --dport 138 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.0.0/24 --dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.0.0/24 --dport 445 -j ACCEPT
Posted by n at 2014-11-20 22:53 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?