「Sambaをドメインメンバーとして設定」の版間の差分
編集の要約なし |
|||
(同じ利用者による、間の5版が非表示) | |||
15行目: | 15行目: | ||
{{Imbox | {{Imbox | ||
| type = content | | type = content | ||
| style = 4px 2% | |||
| text = Unixドメインメンバーを作成するために、決して<code>samba-tool domain provision</code>コマンドを使わないでください。機能しません。このページに記載されている手順に従ってください。 | | text = Unixドメインメンバーを作成するために、決して<code>samba-tool domain provision</code>コマンドを使わないでください。機能しません。このページに記載されている手順に従ってください。 | ||
}} | }} | ||
312行目: | 313行目: | ||
* Sambaをビルドした場合は、サービスを開始するためのスクリプトまたは設定の作成方法について、ディストリビューションのドキュメントを参照してください。 | * Sambaをビルドした場合は、サービスを開始するためのスクリプトまたは設定の作成方法について、ディストリビューションのドキュメントを参照してください。 | ||
= | = Winbindへの接続を確認 = | ||
== | == Winbindd Ping を送信する == | ||
WinbinddサービスがActive Directory(AD)ドメインコントローラ(DC)またはプライマリドメインコントローラ(PDC)に接続できるかどうかを確認するには、次のように入力します。 | |||
# wbinfo --ping-dc | # wbinfo --ping-dc | ||
checking the NETLOGON for domain[SAMDOM] dc connection to "DC.SAMDOM.EXAMPLE.COM" succeeded | checking the NETLOGON for domain[SAMDOM] dc connection to "DC.SAMDOM.EXAMPLE.COM" succeeded | ||
前のコマンドが失敗した場合は、次の点を確認してください。 | |||
* | * <code>winbindd</code>サービスが実行されていること。 | ||
* | * <code>smb.conf</code>ファイルは正しく設定されていること。 | ||
== | == オペレーティングシステムのコマンドでドメインアカウントとグループを使用する == | ||
=== | === ドメインユーザーとグループを調べる === | ||
<code>libnss_winbind</code>ライブラリを使用すると、ドメインのユーザーとグループを検索できます。 例えば: | |||
* | * ドメインユーザー<code>SAMDOM\demo01</code>を検索するには: | ||
# getent passwd SAMDOM\\demo01 | # getent passwd SAMDOM\\demo01 | ||
SAMDOM\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash | SAMDOM\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash | ||
* | * <code>Domain Users</code>のグループを検索するには: | ||
# getent group "SAMDOM\\Domain Users" | # getent group "SAMDOM\\Domain Users" | ||
345行目: | 346行目: | ||
=== | === ドメインユーザーとグループにファイルのアクセス許可を割り当てる === | ||
ネームサービススイッチ(NSS)ライブラリを使用すると、コマンドでドメインユーザーアカウントとグループを使用できます。たとえば、ファイルの所有者を<code>demo01</code>ドメインユーザーに、グループを<code>Domain Users</code>ドメイングループに設定するには、次のように入力します。 | |||
# chown "SAMDOM\\demo01:SAMDOM\\domain users" file.txt | # chown "SAMDOM\\demo01:SAMDOM\\domain users" file.txt | ||
= ドメインメンバーに追加サのービスを設定する = | |||
Sambaドメインメンバーに、追加の設定ができます。 | |||
* ファイル共有はファイルサーバーとして機能します。 詳細は[[Sambaファイルサーバ | Sambaファイルサーバ]]を参照のこと。 | |||
* プリントサービスはプリントサーバーとして機能します。 詳細は[[Print_Server_Support |プリントサーバーサポート]]を参照してください。 | |||
* ローカルサービスに対するドメインユーザーのPAM認証。 詳細については、[[PAMを使用したドメインユーザーの認証 | PAMを使用したドメインユーザーの認証]]を参照してください。 | |||
=トラブルシューティング= | |||
詳細については、[[Sambaドメインメンバのトラブルシューティング | Sambaドメインメンバのトラブルシューティング]]を参照してください。 | |||
2019年3月1日 (金) 19:00時点における最新版
はじめに
Sambaドメインメンバーは、Sambaを実行していて、なおかつNT4のプライマリドメインコントローラ(PDC)や、あるいはActive Directory(AD)ドメインコントローラ(DC)のようなドメインサービスを提供することのない、ドメインに参加しているLinuxマシンです。
Sambaドメインメンバーでは次の事ができます:
- ファイルとディレクトリのローカルアクセス制御リストでユーザとグループを使用します。
- ファイルサーバーとして機能するように共有を設定します。
- プリントサーバーとして機能するように印刷サービスを設定します。
- ドメインユーザーがローカルにログオンできるように、あるいは、ローカルにインストールされているサービスに対して認証できるようにPAMを設定します。
Samba NT4 ドメイン、あるいはSamba ADをセットアップすることについては、ドメインコントロールを見てください。
{{#invoke:Message box|imbox}}
インストールの準備
一般的な準備
- Sambaプロセスが一つも動作していないことを確認:
# ps ax | egrep "samba|smbd|nmbd|winbindd"
- もし、
samba
、smbd
、nmbd
や、winbindd
のようなプロセスが表示されるのであれば、それらのプロセスを停止させてください。
- もし、以前にこのホスト上でSambaのインストールを実行したのであれば:
smb.conf
を削除してください。ファイルへのパスを表示させるには、次のように入力:
# smbd -b | grep "CONFIGFILE" CONFIGFILE: /usr/local/samba/etc/samba/smb.conf
*.tdb
と、*.ldb
ファイルのような、Sambaデータベースファイルを削除してください。Sambaデータベースのあるフォルダを表示させるには:
# smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR" LOCKDIR: /usr/local/samba/var/lock/ STATEDIR: /usr/local/samba/var/locks/ CACHEDIR: /usr/local/samba/var/cache/ PRIVATE_DIR: /usr/local/samba/private/
- クリーンな環境からスタートするのは、混乱を防ぐのに役立ちますし、また、以前のSambaのインストールからのどのファイルも、新たなドメインメンバーのインストールと混在することはありません。
ActiveDirectoryドメインに参加するドメインメンバーの準備
DNSの設定
Active Directory(AD)はバックグラウンドでDNSを使用して、Kerberosなどの他のDCおよびサービスを見つけます。 したがって、ADドメインメンバーとサーバーはAD DNSゾーンを解決できなければなりません。
以下に、DNSサーバーを使用するようにLinuxクライアントを手動で構成する方法を説明します。 クライアントコンピュータにDNS設定を提供するDHCPサーバーを実行している場合は、DNSサーバーのIPアドレスを送信するようにDHCPサーバーを構成します。
/etc/resolv.conf の設定
/etc/resolv.conf
にDNSサーバーのIPアドレスとAD DNSドメインを設定します。 例えば:
nameserver 10.99.0.1 search samdom.example.com
NetworkManagerなどの一部のユーティリティは、そのファイルの手動で変更した内容を上書きすることがあります。 永続的に名前解決を設定する方法については、ディストリビューションのドキュメントを参照してください。
DNSの名前解決をテスト
DNS設定が正しく、クライアントまたはサーバーがIPアドレスとホスト名を解決できることを確認するには、 nslookup
コマンドを使用します。 このコマンドはLinuxとWindowsで利用可能です。
前方参照
ホスト名を、そのIPアドレスに解決するには:
# nslookup DC1.samdom.example.com Server: 10.99.0.1 Address: 10.99.0.1#53 Name: DC1.samdom.example.com Address: 10.99.0.1
後方参照
IPアドレスをそのホスト名に解決するには:
# nslookup 10.99.0.1 Server: 10.99.0.1 Address: 10.99.0.1#53 1.0.99.10.in-addr.arpa name = DC1.samdom.example.com.
Samba ADでは、リバースゾーンは自動的には設定されません。 逆ゾーンを設定するには、DNSの管理を参照してください。
SRVレコードの解決
Active Directory(AD)はSRVレコードを使用してKerberosやLDAPなどのサービスを見つけます。 SRVレコードが正しく解決されたことを確認するには、 nslookup
インタラクティブシェルを使用します:
# nslookup Default Server: 10.99.0.1 Address: 10.99.0.1 > set type=SRV > _ldap._tcp.samdom.example.com. Server: UnKnown Address: 10.99.0.1 _ldap._tcp.samdom.example.com SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dc1.samdom.example.com samdom.example.com nameserver = dc1.samdom.example.com dc1.samdom.example.com internet address = 10.99.0.1
エラーメッセージ
- DNSサーバーはホスト名を解決できません:
** server can't find DC1.samdom.example.com: NXDOMAIN
- DNSサーバーはIPアドレスを解決できません:
** server can't find 1.0.99.10.in-addr.arpa: NXDOMAIN
- 使用されているDNSサーバーが利用できません:
;; connection timed out; no servers could be reached
Kerberosを設定
SambaはHeimdalとMIT Kerberosのバックエンドをサポートしています。 ドメインメンバーにKerberosを設定するには、 /etc/krb5.conf
ファイルに次のように設定します。
[libdefaults] default_realm = SAMDOM.EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = true
前の例では、 SAMDOM.EXAMPLE.COM
レルムにKerberosを設定しています。
Sambaチームは、 /etc/krb5.conf
ファイルにこれ以上パラメータを設定しないことをお勧めします。
/etc/krb5.conf
に include
行が含まれていても機能しません。この行を削除する必要があります。
時刻の同期の設定
Kerberosでは、すべてのドメインメンバで時刻の同期が必要です。 したがって、NTPクライアントを設定することをお勧めします。 詳細については、 Unixドメインメンバーでの時刻同期の設定を参照してください。
ローカルホストの名前解決
ホストをドメインに参加させると、SambaはAD DNSゾーンにホスト名を登録しようとします。 これを行うには、 net
ユーティリティがDNSを使用するか /etc/hosts
ファイルの正しいエントリを使用してホスト名を解決できる必要があります。
ホスト名が正しく解決されたことを確認するには、 getent hosts
コマンドを使用してください。 例えば:
# getent hosts M1 10.99.0.5 M1.samdom.example.com M1
ホスト名とFQDNは、 127.0.0.1
IPアドレス、またはドメインメンバーのLANインターフェースで使用されているもの以外のIPアドレスに解決されてはなりません。
出力が表示されない、またはホストが間違ったIPアドレスに解決され、dhcpを使用していない場合は、 / etc / hosts
ファイルに正しいエントリを設定してください。 例えば:
127.0.0.1 localhost 10.99.0.5 M1.samdom.example.com M1
dhcpを使用している場合は、 / etc/hosts
に上記の '127.0.0.1'行のみが含まれていることを確認してください。 問題が解決しない場合は、DHCPサーバーを管理しているシステム管理者に連絡してください。
- Debian関連システムでは、/etc/hostsに
127.0.1.1 hostname
という行も表示されますので、sambaをインストールする前に削除してください。 127.0.0.1 localhost
の行を残してください。
マシンのホスト名にエイリアスを追加する必要がある場合は、127.0.0.1の行ではなく、マシンのipaddressで始まる行の末尾に追加してください。
NT4ドメインに参加するためのドメインメンバーの準備
ホストをNT4ドメインに参加させるには、準備は必要ありません。
Sambaのインストール
詳細については、 Sambaのインストール を参照してください。
{{#invoke:Message box|imbox}}
Sambaを設定
基本的な smb.conf
ファイルの設定
Unixドメインメンバー上でsmb.confを設定するとき、あなたは何点か決めておく必要があります。
- Samba AD DCを含め、すべての場所でユーザーとグループが同じIDを持つ必要がありますか?
- あなたのユーザとグループだけがUnixドメインメンバー上で同じIDを持ちたいですか?
あなたの決断をした後、あなたは決断をするための別の決断をするでしょう。この決断はあなたがすでに決断したと思うことに影響を与えるかもしれません。
- 個々のユーザに異なるログインシェルやUnixホームディレクトリパスを持たせたい、または必要としますか
ユーザに異なるログインシェルやUnixホームディレクトリパスを持たせる必要がある場合、またはどこでも同じIDを持つようにしたい場合は、winbindの 'ad'バックエンドを使用してADにRFC2307属性を追加する必要があります。
{{#invoke:Message box|imbox}}
{{#invoke:Message box|imbox}}
ユーザーが認証のためだけにSamba AD DCを使用し、データを保存したり、ログインしたりしない場合、winbindの 'rid' バックエンドを使用することが出来ます。これは、ユーザーとグループのIDをWindows RIDから算出し、すべてのUnixドメインメンバーのsmb.confで、同じ[global]セクションを使用すれば、同じIDを取得することができます。 'rid'バックエンドを使うのであれば、ADに何か追加する必要はありません。実際、RFC2307の属性はすべて無視されます。 'rid'バックエンドを使用するときは、smb.confで 'template shell'と 'template homedir'パラメータを設定しなければなりません。これらはグローバル設定で、個々にホームディレクトリとシェルを設定できる、RFC2307属性とは異なって、全員が同じログインシェルとUnixホームディレクトリパスを取得します。
別にもう一つ、Sambaを設定する方法があります。これは、ユーザーとグループがどこでも同じIDを持たせたいが、同じログインシェルとUnixホームディレクトリパスを使用することのみ必要とするところです。これを行うには、winbindの 'ad'バックエンドを使用し、smb.confのテンプレート行を使用します。これにより、uidNumberおよびgidNumbers属性をADに追加するだけで済みます。
どちらのwinbindバックエンドを使うか決めたら、smb.confの 'idmap config'で使用する範囲を決めます。 Unixドメインメンバーのデフォルトでは、ユーザーとグループのブロックは複数あります:
- ローカルシステムのユーザーとグループ:これらは0から999までとなります
- ローカルのUnixユーザーとグループ: これらは1000から始まります
- 既知のSID: ????
- ドメインユーザーとグループ: ADUCでは、デフォルト10000から開始します
- 信頼されるドメイン: ????
- 既知のSID、DOMAINのメンバー、信頼できるドメイン以外のものは何でも:????
上記からわかるように、 '*'または 'DOMAIN'の範囲を999以下に設定しないでください。ローカルシステムのユーザーおよびグループに干渉します。 ローカルのUnixユーザーやグループのためにもスペースを空けておくべきです。ですから 'idmap config'の範囲を3000から始めるのは良い妥協のようです。
あなたは、自身の'DOMAIN'がどれくらい大きくなる可能性があるか、決める必要があります。また、さらにどれくらいの信頼できるドメインを持っており、あるいは将来的に必要になるのかどうか知っておく必要があります。
上記の情報を念頭に置いて、 'idmap config'の範囲を次のように設定できます。
Domain Range *
3000-7999 DOMAIN
10000-999999
You could also have any trusted domains starting at:
Domain Range TRUSTED
1000000-9999999
'*'の範囲を 'DOMAIN'の範囲より上に設定した場合、 'Domain'が次のIDが '*'の範囲の開始IDと同じになるまで成長すると、範囲が競合します。
上記で示唆された範囲では、どの範囲も他の範囲と重複することも干渉することもない。
'*'の範囲がすべてに使用されている例も見たことがあるかもしれませんが、これはお勧めできませんし、使用しないでください。
ドメインに参加する前に、ドメインメンバーの smb.conf
ファイルを設定します。
- ファイルを見つけるには、次のように入力します。
# smbd -b | grep CONFIGFILE CONFIGFILE: /usr/local/samba/etc/smb.conf
winbinddでIDマッピング用のバックエンドを選択
このウィキページを読んだ後、以下のハイパーリンクのいずれかをクリックして、関連するSambaドメインのバックエンドに関する情報を見つけてください。:
Back End Documentation Man Page ad
idmap config ad idmap_ad(8)
rid
idmap config rid idmap_rid(8)
autorid
idmap config autorid idmap_autorid(8)
- {{#invoke:Message box|imbox}}
Domain Administrator アカウントをローカルの root
ユーザーにマッピングする
Sambaではドメインアカウントをローカルアカウントにマッピングすることができます。 この機能を使用して、クライアントで操作を要求したアカウントとは異なるユーザーとしてドメインメンバーのファイルシステムでファイル操作を実行します。
{{#invoke:Message box|imbox}}
ドメイン管理者をローカルの root
アカウントにマッピングするには、次の手順を実行します。
smb.conf
ファイルの[global]
セクションに次のパラメータを追加します。
username map = /usr/local/samba/etc/user.map
- 以下の内容で
/usr/local/samba/etc/user.map
ファイルを作成します。:
!root = SAMDOM\Administrator
- {{#invoke:Message box|imbox}}
詳細は、smb.conf(5
のmanページのusername map
パラメータをご覧ください。
ドメインに参加
- ホストをActive Directory(AD)に参加させるには次のように入力:
# net ads join -U administrator Enter administrator's password: Passw0rd Using short domain name -- SAMDOM Joined 'M1' to dns domain 'samdom.example.com'
- ホストをNT4ドメインに参加させるには次のように入力:
# net rpc join -U administrator Enter administrator's password: Passw0rd Joined domain SAMDOM.
{{#invoke:Message box|imbox}}
ドメインへの参加に問題がある場合は、設定を確認してください。 さらなるヘルプについては、 Sambaドメインメンバのトラブルシューティングを参照してください。
ネームサービススイッチの設定
ネームサービススイッチ(NSS)ライブラリを有効にして、ドメインユーザーとグループがローカルシステムで使用できるようにするには;
winbind
のエントリを/etc/nsswitch.conf
ファイルの以下のデータベースに追加します:
passwd: files winbind group: files winbind
- それぞれ両方のデータベースの最初のソースは、
files
エントリのままにしておいてください。これにより、NSSはWinbindサービスに問い合わせをする前に、/etc/passwd
と/etc/group
ファイルからドメインユーザーおよび、ドメイングループを検索できます。
- それぞれ両方のデータベースの最初のソースは、
winbind
のエントリをshadow
データベースに追加してはいけません。これによって、wbinfo
ユーティリティーが失敗する可能性があります。
- {{#invoke:Message box|imbox}}
- {{#invoke:Message box|imbox}}
Starting the Services
Unixドメインメンバが完全に機能させるために、次のサービスを開始してください:
smbd
サービス
nmbd
サービス
winbindd
サービス
- {{#invoke:Message box|imbox}}
- {{#invoke:Message box|imbox}}
Sambaは、System V initスクリプト、systemd
、upstart
、あるいはその他initサービス用のサービスファイルを提供していません。
- パッケージを使用してSambaをインストールした場合は、Sambaを起動するためにパッケージによって提供されるスクリプトまたはサービス設定ファイルを使用してください。
- Sambaをビルドした場合は、サービスを開始するためのスクリプトまたは設定の作成方法について、ディストリビューションのドキュメントを参照してください。
Winbindへの接続を確認
Winbindd Ping を送信する
WinbinddサービスがActive Directory(AD)ドメインコントローラ(DC)またはプライマリドメインコントローラ(PDC)に接続できるかどうかを確認するには、次のように入力します。
# wbinfo --ping-dc checking the NETLOGON for domain[SAMDOM] dc connection to "DC.SAMDOM.EXAMPLE.COM" succeeded
前のコマンドが失敗した場合は、次の点を確認してください。
winbindd
サービスが実行されていること。smb.conf
ファイルは正しく設定されていること。
オペレーティングシステムのコマンドでドメインアカウントとグループを使用する
ドメインユーザーとグループを調べる
libnss_winbind
ライブラリを使用すると、ドメインのユーザーとグループを検索できます。 例えば:
- ドメインユーザー
SAMDOM\demo01
を検索するには:
# getent passwd SAMDOM\\demo01 SAMDOM\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash
Domain Users
のグループを検索するには:
# getent group "SAMDOM\\Domain Users" SAMDOM\domain users:x:10000:
ドメインユーザーとグループにファイルのアクセス許可を割り当てる
ネームサービススイッチ(NSS)ライブラリを使用すると、コマンドでドメインユーザーアカウントとグループを使用できます。たとえば、ファイルの所有者をdemo01
ドメインユーザーに、グループをDomain Users
ドメイングループに設定するには、次のように入力します。
# chown "SAMDOM\\demo01:SAMDOM\\domain users" file.txt
ドメインメンバーに追加サのービスを設定する
Sambaドメインメンバーに、追加の設定ができます。
- ファイル共有はファイルサーバーとして機能します。 詳細は Sambaファイルサーバを参照のこと。
- プリントサービスはプリントサーバーとして機能します。 詳細はプリントサーバーサポートを参照してください。
- ローカルサービスに対するドメインユーザーのPAM認証。 詳細については、 PAMを使用したドメインユーザーの認証を参照してください。
トラブルシューティング
詳細については、 Sambaドメインメンバのトラブルシューティングを参照してください。