Contents
概要
Sambaを構築します。本稿の手順はLDAPとの連携を前提としています。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
標準ポート番号
TCP:139,445 (SMB)
nmb(WINS)はUDP:137,138(NMB)でLISTENしますが、本稿では使用していません。
設定
インストール
Sambaをインストールします。
[root@centos ~]# dnf install samba
/etc/samba/smb.conf
smb.confのデフォルト値
コメント行等を削除したsmb.confは下記の通りです。
[global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775
smb.confの設定
デフォルトの設定ファイルは無視して0から作成しています。既定値が設定値と同じになる設定項目(security = user等)は省いています。
[global] dos charset = CP932 ldap admin dn = cn=writable,dc=si1230,dc=com ldap group suffix = ou=groups ldap passwd sync = Yes ldap ssl = No ldap suffix = dc=si1230,dc=com ldap user suffix = ou=users load printers = No passdb backend = ldapsam:ldaps://ldap.si1230.com hosts allow = 127.0.0.0/8 10.0.0.0/24 [homes] read only = No vfs objects = recycle recycle:repository = .recycle recycle:keeptree = No recycle:versions = Yes recycle:touch = No recycle:maxsize = 0
globalセクション
globalセクションはSamba全体の設定です。
- dos charset
- クライアントとなるWindowsの文字コードに合わせます。日本語環境であればCP932です。
- ldap admin dn
- LDAPサーバーにBINDするDNを指定します。SambaはLDAPサーバーに対して書き込み権限が必要です。
- ldap group suffix
- LDAPサーバーのLinux認証で使うグループを格納したOUを指定します。
- ldap passwd sync
- SambaとLDAPのパスワードを同期します。Samba側で変更(smbpasswd)したパスワードはLDAPに同期されます。この為、Smaba/LDAPを連携した環境ではSamba上でパスワード変更することで認証情報の一貫性が保たれます。
- ldap ssl
- Yesの場合はSambaからLDAPにStartTLSで接続します。StartTLSはデフォルトのTCP:389(任意)を使用してLDAPクライアント側が暗号化の有無を指定しますが実際はいろいろと分かりづらく使いにくいと思います。今回はLDAPSを使用する為、Noを指定しています。ハマりやすいポイントですね。
- ldap suffix
- 検索対象のLDAPのSuffixを指定します。
- ldap user suffix
- LDAPサーバーのLinux認証で使うユーザーを格納したOUを指定します。
- load printers
- プリンタの共有は使用しない為、Noを指定しています。
- passdb backend
- 認証情報の格納先を指定します。今回はLDAPサーバーのURIを指定します。
- hosts allow
- Sambaを利用できるネットワークを指定します。
homesセクション
homesセクションはホームディレクトリの共有設定です。
- read only
- Noを指定すると書き込み可能になります。
- vfs objects
- ゴミ箱機能を使う為、VFSでrecycleオブジェクトを作成しています。名前は任意です。
- recycle~
- ゴミ箱機能の設定です。詳細は省略します。
LDAPとの連携
-wオプションでcn=writable,dc=si1230,dc=comのパスワードを入力します。LDAPにSambaの情報が登録されます。この設定を行わないと後述のサービス起動が失敗します。
[root@centos ~]# smbpasswd -w password
smbpasswdを実行すると/var/lib/samba/private/secrets.tdbに情報が格納されます。secrets.tdbはバイナリ形式です。
サービス起動設定
Sambaを起動します。
[root@centos ~]# systemctl enable --now smb.service [root@centos ~]# systemctl status smb.service
ユーザー設定
ユーザー登録
LDAP側で予めユーザー登録が必要です。LDAPのuser01にSamba関連の属性が追加されます。
[root@centos ~]# pdbedit -a user01
CentOS 8 Samba 構築