samba4のAD/DCを作成したときに、unix id mappingについて、少しわかりにくかったので、メモとして挙げておきます。
samba4のDC(Domain Controller)は、メンバーマシンとは異なり、ad(rfc2307)やRIDによるunix id mappingがサポートされません。これは、sambaのwikiに記述されています。
https://wiki.samba.org/index.php/Configuring_Winbindd_on_a_Samba_AD_DC
Identity Mapping works different on a Samba domain controller (DC) than on a domain member. For example, setting up an ID mapping back end, such as
基本的にはDCサーバでは、adやridによるUID/GIDマッピングサービスはサポートしないが、winbindをDCで走らせuid/gid マッピングを使う場合、以下のようになっている様です。
To run
結局、DCサーバでwinbinddを走らせてidmappingする場合、smb.confでサポートされるのは、template shell(デフォルトは/bin/false) と template homedir(デフォルトは/hoem/%D/%U)だけで、例えば、samba-tool user createしたときに、--login-shell= --unix-home=で、シェルとホームを指定しても、getent passwd userXXXXでもtemplate shellとtemplate homedirで指定した内容が表示され、(nssitcch.confでwinbindを追加していても) 指定した情報がDC上では反映されません。(debian 10/buster にて確認済)
しかし、member マシンでは、DCサーバとは異なるので、idmap config YOURDOMAIN : backend = adなどがサポートされますので、idmpa config と winbindオプションをsmb.confに適切に設定し、/etc/nsswich.confにwinbindを追加し、winbind libpam-winbind libnss-winbind をインストールしておけば、
つまり、どうしてもDCサーバ上で、samba-toolで作成した linux userを使いたい場合には、前述の templte shell と template homedirをsmb.confに追加し、memberマシンと同様に、/etc/nsswitch.confにwinbindを追加し、winbind, libpam-winbind, libnss-winbindをインストールすれば、templateで指定したhomeとshellでログインはできる、ということです。
まとめると、DCサーバ上では、winbindを使ってlinux/unix userとしてログインして作業は極力しないでください、ということになると思います。セキュリティー的にも、いわれてみればごもっともで、必要ならメンバーサーバを立ち上げれば良いですし、DC内でsamba userではなくlinux userとして作業する必要があるなら、なるべくlocal userを使ってくださいということだ思います。
idmapについて、DCとメンバーマシンで異なる、つまり、挙動もsmb.confの設定も異なるので注意が必要ですね。ほかのサイトにはほとんどこの情報がまとまっているところがなかったので、本稿を挙げた次第です。
以上。
samba4のDC(Domain Controller)は、メンバーマシンとは異なり、ad(rfc2307)やRIDによるunix id mappingがサポートされません。これは、sambaのwikiに記述されています。
https://wiki.samba.org/index.php/Configuring_Winbindd_on_a_Samba_AD_DC
Identity Mapping works different on a Samba domain controller (DC) than on a domain member. For example, setting up an ID mapping back end, such as
ad
(RFC2307) or rid
, in the smb.conf
file is not supported an can cause the samba
service to fail.基本的にはDCサーバでは、adやridによるUID/GIDマッピングサービスはサポートしないが、winbindをDCで走らせuid/gid マッピングを使う場合、以下のようになっている様です。
To run
Winbindd
on a Samba Active Directory (AD) domain controller (DC), in most cases no configuration in the smb.conf
file is required.
User and group IDs, are loaded from Active Directory (AD) or automatically generated locally. For details, see Identity Mapping on a Samba Domain Controller.
On a Samba DC, only the winbind template mode is supported. In this mode, all users get:
- The home directory path assigned, set in the
template homedir
parameter. The default value of this parameter is/home/%D/%U
. - The shell assigned, set in the
template shell
parameter. The default value of this parameter is/bin/false
.
To assign the
/bin/bash
shell and the /home/%U
path as home directory path to all domain users provided by Winbindd
:- Add the following parameters to the
[global]
section of yoursmb.conf
file:
template shell = /bin/bash template homedir = /home/%U
結局、DCサーバでwinbinddを走らせてidmappingする場合、smb.confでサポートされるのは、template shell(デフォルトは/bin/false) と template homedir(デフォルトは/hoem/%D/%U)だけで、例えば、samba-tool user createしたときに、--login-shell= --unix-home=で、シェルとホームを指定しても、getent passwd userXXXXでもtemplate shellとtemplate homedirで指定した内容が表示され、(nssitcch.confでwinbindを追加していても) 指定した情報がDC上では反映されません。(debian 10/buster にて確認済)
しかし、member マシンでは、DCサーバとは異なるので、idmap config YOURDOMAIN : backend = adなどがサポートされますので、idmpa config と winbindオプションをsmb.confに適切に設定し、/etc/nsswich.confにwinbindを追加し、winbind libpam-winbind libnss-winbind をインストールしておけば、
$ getent passwd user10000 user10000:*:10000:100::/home/user10000:/bin/bash $ getent passwd user10001 user10001:*:10001:100::/home/user10001:/bin/shのようにsamba-tool user createで指定したshell/homeが表示され、userXXXXでmemberマシン上はログインできる、ということのようです。(同じく debian 10/busterにて確認済。)
つまり、どうしてもDCサーバ上で、samba-toolで作成した linux userを使いたい場合には、前述の templte shell と template homedirをsmb.confに追加し、memberマシンと同様に、/etc/nsswitch.confにwinbindを追加し、winbind, libpam-winbind, libnss-winbindをインストールすれば、templateで指定したhomeとshellでログインはできる、ということです。
まとめると、DCサーバ上では、winbindを使ってlinux/unix userとしてログインして作業は極力しないでください、ということになると思います。セキュリティー的にも、いわれてみればごもっともで、必要ならメンバーサーバを立ち上げれば良いですし、DC内でsamba userではなくlinux userとして作業する必要があるなら、なるべくlocal userを使ってくださいということだ思います。
idmapについて、DCとメンバーマシンで異なる、つまり、挙動もsmb.confの設定も異なるので注意が必要ですね。ほかのサイトにはほとんどこの情報がまとまっているところがなかったので、本稿を挙げた次第です。
以上。
コメント
コメントを投稿