Ubuntu18.04 Samba-ad-dcのドメインに参加しつつファイルサーバーになる

ファイルサーバーを立てよう、ドメインメンバーがすぐに使えるやつを。既に、Samba ad dcでサーバーを立てているので、これに参加すればいい。

Samba ad dcサーバーに登録したユーザーで認証ができるようにするためにwinbindを使っている。ということは、このwinbindがドメインサーバーに認証情報を聞きに行くように設定すれば行けそうな気がする。





やること。

ここに書かれていることがほとんど全て、ちょっとだけ使いやすさをケア。
Server World / Samba : Samba Winbind
ubuntu documentation / ActiveDirectoryWinbindHowto

 

Sambaのインストール

立てたばかりのサーバーで何も入っていないので。

$ sudo apt install samba

 

 

認証系のインストール

Kerberos

Samba ad dc と連携するためにKerberos認証をインストール。

realmはSamba ad dcサーバーのsmb.conf [global]セクションの realm に書いてあるものをそのまま書く。

$ sudo apt install krb5-config

■Configuring Kerberos Authentication
When users attempt to use Kerberos and specify a principal or user name without specifying what administrative
Kerberos realm that principal belongs to, the system appends the default realm. The default realm may also be
used as the realm of a Kerberos service running on the local machine. Often, the default realm is the uppercase
version of the local DNS domain.
Google翻訳~
ユーザーがKerberosを使用して、プリンシパルが属する管理Kerberosレルムを指定せずに
プリンシパルまたはユーザー名を指定しようとすると、システムはデフォルトレルムを
追加します。 デフォルトレルムは、ローカルマシンで実行されているKerberosサービスの
レルムとしても使用できます。 多くの場合、デフォルトのレルムは、ローカルDNSドメインの
大文字バージョンです。

Default Kerberos version 5 realm: HOGESERVER.HOGEDDNS.JP

 

Winbind

Sambaの認証はWinbindが担当。Sambaインストール時に既にインストールされているが、認証用のライブラリを追加する。

$ sudo apt install libpam-winbind libnss-winbind

 

ついでにログイン時にホームディレクトリが作成されるようにする。

$ sudo pam-auth-update

■PAM configuration
Pluggable Authentication Modules (PAM) determine how authentication, authorization, and password changing are
handled on the system, as well as allowing configuration of additional actions to take when starting user
sessions.

Some PAM module packages provide profiles that can be used to automatically adjust the behavior of all PAM-using
applications on the system. Please indicate which of these behaviors you wish to enable.

Google翻訳~
プラガブル認証モジュール(PAM)は、システムでの認証、承認、およびパスワード変更の
処理方法を決定し、ユーザーセッションを開始するときに追加のアクションを構成できる
ようにします。
一部のPAMモジュールパッケージは、システム上のすべてのPAM使用アプリケーションの
動作を自動的に調整するために使用できるプロファイルを提供します。
これらの動作のどれを有効にするかを指定してください。



PAM profiles to enable:
[*] Unix authentication
[*] Winbind NT/Active Directory authentication
[*] Register user sessions in the systemd control group hierarchy
[*] Create home directory on login ← ここをチェック
[*] Inheritable Capabilities Management

 

認証にwinbindを加える。

/etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd winbind
group:          compat systemd winbind
shadow:         compat ← ここにはwinbindを加えない。wbinfoが失敗する可能性
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

 

 

Sambaの設定

必要なモジュールをインストールしたので、Sambaの設定に反映させる。

/etc/samba/smb.conf
[global]
dos charset = SJIS

security = ads
realm = HOGESERVER.HOGEDDNS.JP
# password server = addc.hogeserver.hogeddns.jp
workgroup = MYHOME
idmap config * : range = 3000000-4999999
winbind enum users = Yes
winbind enum groups = Yes
template homedir = /home/sambahomes/%U
template shell = /bin/bash
client ntlmv2 auth = Yes
client use spnego = Yes
encrypt passwords = Yes
restrict anonymous = 2

server string = %h server
obey pam restrictions = Yes
log file = /var/log/samba/log.%m
max log size = 1000
log level = 0
panic action = /usr/share/samba/panic-action %d
min protocol = SMB2

[homes]

root preexec = /etc/samba/samba_create_directory.sh "%H" "%u"
path = %H
read only = No
browseable = No

[share]
comment = 共有領域
path = /home/sambashare
read only = No
create mask = 00775
force create mode = 00775
directory mask = 04777
force directory mode = 04777
force group = root

※共有領域は誰でもファイルを作って誰でも消せて、それでいて誰のファイルなのかが見られる設定のつもり。ちょっと変わった設定だけど過去の実験の結果であって、多分今のバージョンでも動くと思う。

ホームディレクトリがないときに自動で作って欲しいので、root preexecでスクリプトを指定しておいたので、これを新規作成。
[Samba] Samba AD domain member and home directory creation
StackExchange / How to force Samba to create directory

/etc/samba/samba_create_directory.sh
#!/bin/bash
# $1: ホームディレクトリのフルパス
# $2: ユーザー
if [ ! -d $1 ]; then
mkdir $1
chown "$2" $1
chgrp "MYHOME\domain users" $1
chmod 700 $1
fi

 

testparmを実行すると報告されるエラーに対処。

/etc/security/limits.conf
#<domain>      <type>  <item>         <value>
*                soft    nofile          16384 ← 追記
# End of file

 

limits.confの設定を反映させる方法が分からず…再起動。

$ sudo reboot

 

 

ドメインへの参加

ここまで準備したところで、ドメインに参加する。

$ sudo net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- MYHOME
Joined 'MYHOME' to dns domain 'hogeserver.hogeddns.jp'
No DNS domain configured for enjoy. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

※DNS更新に失敗しているけれども、addc.hogeserver.hogeddns.jpのログを見てみるとDHCPv6のために作ったスクリプトでエラーが発生している模様。固定でIPv6のアドレスを付与しているので手作業で修正することに。今回の直接のテーマではないので諦める。

ここでwinbindを停止して起動する(もしかしたら、再起動後にwinbindは起動していないかもしれない)。

$ sudo systemctl stop winbind
$ sudo systemctl start winbind

 

Samba ad dcに登録済みのユーザーが取り出せている確認。

$ getent passwd

MYHOME\~~~:*:3000000:3000000::/home/~~~:/bin/bash
MYHOME\~~~:*:3000001:3000000::/home/~~~:/bin/bash
MYHOME\~~~:*:3000002:3000000::/home/~~~:/bin/bash
MYHOME\administrator:*:3000003:3000000::/home/administrator:/bin/bash
MYHOME\hogeuser:*:3000004:3000000::/home/hogeuser:/bin/bash

※Samba ad dcに登録された順ではないし、アルファベット順でもない。しかし参照はできている。

ついでにグループも確認。

$ getent group

MYHOME\allowed rodc password replication group:x:3000001:
MYHOME\enterprise read-only domain controllers:x:3000002:
MYHOME\denied rodc password replication group:x:3000003:
MYHOME\read-only domain controllers:x:3000004:
MYHOME\group policy creator owners:x:3000005:
MYHOME\ras and ias servers:x:3000006:
MYHOME\domain controllers:x:3000007:
MYHOME\enterprise admins:x:3000008:
MYHOME\domain computers:x:3000009:
MYHOME\cert publishers:x:3000010:
MYHOME\dnsupdateproxy:x:3000011:
MYHOME\domain admins:x:3000012:
MYHOME\domain guests:x:3000013:
MYHOME\schema admins:x:3000014:
MYHOME\domain users:x:3000000:
MYHOME\~~~:x:3000015:
MYHOME\dnsadmins:x:3000016:

※こちらも登録順ではない模様。しかし参照はできる。

 

ファイアウォールでポートを開ける

各種設定が終わったらファイアウォールで必要なポートを開けて、他のPCとかからアクセスできるようにする。設定結果はこちら。

$ sudo ufw status
To Action From
-- ------ ----

137/udp ALLOW 172.16.0.0/16 # NetBIOS Name Service
139/tcp ALLOW 172.16.0.0/16 # NetBIOS Session Service
445/tcp ALLOW 172.16.0.0/16 # Microsoft-DS Active Directory, Windows shares

 

 

さいごに

簡単かと思ったけど、他の用事もあわせて1日かかっちゃった。でも、前々からやってみたかったことが全て盛り込めたのでとても良かった。

 

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です