samba-adドメインにLinuxマシンを追加してメンバーサーバを作ります
メンバーサーバとは samba-ad 以外のファイルサーバ、計算機サーバ/クライアント、webサーバらを意図してます

メンバーサーバになるには
1.ドメインに参加(samba-adデータベース[kerberos]への登録とDNSへの登録)
2.name service switch (NSS)の設定
が必要です

2015y10m10d_233134109.png

参加していたドメインから撤退する samba/Linux離脱

メンバーサーバになるための準備

chaperoneドメインに参加させるLinuxマシンの概要は下記とします。

ホスト名IPアドレスOS参照DNS参照NTP
samba-client.chaperone.jp192.168.0.151RokcyLinuxad.chaperone.jpad.chaperone.jp

/etc/hostsファイルは、自身のIPを入れて、FQDNと短縮名 $(hostname -s) を入れる. 短縮名がないと「net ads join」の際にDNSに登録されない

[root@samba-client ~]# echo `hostname -I` `hostname -A` `hostname -s` >> /etc/hosts
[root@samba-client ~]# echo "192.168.0.131 ad.chaperone.jp ad" >>  /etc/hosts
[root@samba-client ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.151 samba-client.chaperone.jp samba-client
192.168.0.131 ad.chaperone.jp ad
 
[root@samba-client ~]#

ドメインの参加に必要なパッケージをインストールします

[root@samba-client ~]# dnf install samba-common samba-common-tools

次に時計合わせとkerberosの調整を行います

[root@samba-client ~]# echo "pool ad iburst" > /etc/chrony.conf
[root@samba-client ~]# systemctl restart chronyd
 
[root@samba-client ~]# mv /etc/krb5.conf /etc/krb5.conf.old
[root@samba-client ~]# vi /etc/krb5.conf
[libdefaults]
        default_realm = CHAPERONE.JP
        dns_lookup_realm = false
        dns_lookup_kdc = true
 
[root@samba-client ~]#

ドメインへの参加

ドメイン自体への参加は「net ads join」コマンドで行うのですが、
その後にsamba-adからユーザ情報の取得/認証は複数の選択肢(経路)があります. 設定自体はauthselect/authconfigコマンドで行います

 authselect/authconfig
    +--- sssd     --> /etc/sss/sssd.conf を修正 sssd を起動
    +--- winbind  --> /etc/samba/smb.confを修正 winbindd を起動
            +-- backend:ad  --> rfc2307が使える
            +-- backend:rid --> rfc2307なし

samba-adのrfc2307(uid/gid/homedir/loginShellら)を有効活用するならsssd系かwinbidでbackendにadを採用する
rfc2307を利用しない(ホームディレクトリは/homeに集約、loginShellは皆共通)ならwinbindでbackendにridを採用する

ユーザ毎に/homeが/home1とか/home2とかになるならrfc2307. ユーザAはbash、ユーザBがzshとかならrfc2307が必要
ならrfc2307対応にしておけば?ってなるけど、それぞれ設定する必要があるのが面倒なら簡易なwinbind:ridが楽かな


winbindで参加させてみる(backendをridで)

まずは「/etc/samba/smb.conf」を修正します. 下記はwinbind経由でbackendを「rid」にしてます

[root@samba-client ~]# dnf install samba-winbind
[root@samba-client ~]# vi /etc/samba/smb.conf
[global]
  workgroup = CHAPERONE
  security = ADS
  realm = CHAPERONE.JP
 
  idmap config * : backend = tdb
  idmap config * : range = 3000-7999
  idmap config CHAPERONE : backend = rid
  idmap config CHAPERONE : range = 10000-999999
  winbind use default domain = true

これで

[root@samba-client ~]# net ads join osName=rockyLinux osVer=9.2 -Uadministrator
[root@samba-client ~]# authselect current
No existing configuration detected.
 
[root@samba-client ~]#
[root@samba-client ~]# authselect select winbind --force
[root@samba-client ~]# systemctl enable winbind --now

っでユーザ情報を引いてみる

[root@samba-client ~]# id illya
uid=11111(illya) gid=10513(domain users) groups=10513(domain users),11111(illya)
 
[root@samba-client ~]# getent passwd illya
illya:*:11111:10513::/home/CHAPERONE/illya:/bin/false
[root@samba-client ~]#

samba/ユーザ登録で登録したuid/gidではないことが分かる. 加えてホームディレクトリは「/home/$DOMAIN/<user>」でlogin shellが「/bin/false」となる。
後半2つは「/etc/samba/smb.conf」にて「template shell = /bin/bash」「template homedir = /home/%U」で矯正できる.

winbindで参加させてみる(backendをadで)

変更の前に前段でのデータキャッシュをクリアさせます

[root@samba-client ~]# systemctl stop winbind
[root@samba-client ~]# net cache flush
[root@samba-client ~]# rm -f /var/lib/samba/*.tdb
[root@samba-client ~]# rm -f /var/lib/samba/group_mapping.ldb

っで「/etc/samba/smb.conf」を「backend:ad」で修正します

[root@samba-client ~]# vi /etc/samba/smb.conf
[global]
  workgroup = CHAPERONE
  security = ADS
  realm = CHAPERONE.JP
 
  idmap config * : backend = tdb
  idmap config * : range = 30001-30010
  idmap config CHAPERONE:backend = ad
  idmap config CHAPERONE:schema_mode = rfc2307
  idmap config CHAPERONE:range = 1000-30000
  idmap config CHAPERONE:unix_nss_info = yes
  idmap config CHAPERONE:unix_primary_group = yes
  winbind use default domain = true

っでwinbindを再起動させます

[root@samba-client ~]# systemctl stop winbind

っでアカウント情報は

[root@samba-client ~]# id illya
uid=1002(illya) gid=2000(fate) groups=2000(fate)
 
[root@samba-client ~]# getent passwd illya
illya:*:1002:2000:Illyasviel von Einzbern:/home/illya:/bin/bash
 
[root@samba-client ~]#

っとsamba-adで指定したuid/gidやらホームディレクトリ、login shellらが反映されました.

sssdで参加(backendはad)なら

samba-clientをドメインに参加させる際に「/etc/krb5.keytab」をsamba-adから頂けるようにします. krb5.keytabがあればSSOとか使えます

[root@samba-client ~]# dnf install sssd-ad
 
[root@samba-client ~]# cat /etc/samba/smb.conf
[global]
  workgroup = CHAPERONE
  security = ADS
  realm = CHAPERONE.JP
  kerberos method = secrets and keytab
 
[root@samba-client ~]# net ads join osName=rockyLinux osVer=9.2 -Uadministrator
 
[root@samba-client ~]# ls -l /etc/krb5.keytab
-rw-------. 1 root root 1318 Jun 23 02:03 /etc/krb5.keytab
 
[root@samba-client ~]#

中身は「klist -ke」で確認できます。 「krb5-workstation」パッケージが必要

そしてsssdの設定を施します
sssdの設定ファイル( /etc/sssd/sssd.conf )を作り上げます. *初めから用意されてません

[root@samba-client ~]# cat << _EOT_ > /etc/sssd/sssd.conf
[sssd]
services = nss, pam
config_file_version = 2
domains = chaperone.jp
 
[domain/chaperone.jp]
id_provider = ad
auth_provider = ad
access_provider = ad
dyndns_update = false
 
enumerate = True
krb5_keytab = /etc/krb5.keytab
ldap_id_mapping = False
ldap_sasl_authid = samba-client$@CHAPERONE.JP
_EOT_
[root@samba-client ~]#
[root@samba-client ~]# chmod 600 /etc/sssd/sssd.conf

っでathselectでsssdを有効にします

[root@samba-client ~]# authselect select sssd --force
[root@samba-client ~]# ps -ef |grep sss
root       10774       1  0 02:37 ?        00:00:00 /usr/libexec/sssd/sssd_kcm --uid 0 --gid 0 --logger=files
root       10784     915  0 02:40 pts/0    00:00:00 grep --color=auto sss
 
[root@samba-client ~]#

っで引けるか確認

[root@samba-client ~]# id illya
uid=1002(illya) gid=2000(fate) groups=2000(fate)
[root@samba-client ~]# getent passwd illya
illya:*:1002:2000:Illyasviel von Einzbern:/home/illya:/bin/bash
[root@samba-client ~]#

備考

sssdにはキャッシュがあり、キャッシュをクリアにするには
sssd を止めてキャッシュデータベースを削除して、sssdを再起動する

[root@c105 ~]# systemctl stop sssd
[root@c105 ~]# rm -rf /var/lib/sss/db/*
[root@c105 ~]# systemctl start sssd

な感じで。
あるいは sss_cache なるコマンドで対処する

sssdでは getent は

(&(objectclass=user)(uid=*)(uidNumber=*)(gidNumber=*))

に適合したユーザが認証対象となる。またグループでは

(&(objectclass=group)(cn=*)(&(gidNumber=*)(!(gidNumber=0))))

である。
ldapsearch を使えば誰がログインユーザとして拾われるかが分かる。

[root@c105 ~]# yum install openldap-clients
 
[root@c105 ~]# ldapsearch -h c.sybyl.local -D "CN=administrator,CN=Users,DC=SYBYL,dc=local" -w ******* \
 -b "dc=sybyl,dc=local" '(&(objectclass=user)(uid=*)(uidNumber=*)(gidNumber=*))'

*「-w *******」は、administratorのパスワード

めも

「net ads join osName=rockyLinux osVer=9.2 -Uadministrator」の後にsamba-adで登録されたのかの確認は
「samba-tool computer list」
「samba-tool dns query ad chaperone.jp @ A」
で確認できる
注意 samba-internal dnsの正引きには登録されるが、逆引きはゾーンが用意されてても登録されない

めも

「net ads join osName=rockyLinux osVer=9.2 -Uadministrator」の後に

DNS Update samba-nfs.chaperone.jp failed: ERROR_DNS_UPDATE_FAILED
DNS update failed: NT_STATUS_UNSUCCESSFUL

とメッセージが表示されることがある。これはsamba-ad(samba-internal dns)に既にエントリーがあるか、samba-client側のFQDNにミスがあるかも.
failed」と表記されるが、「Active Directory ユーザとコンピュータ」には登録される
FQDNのミスは「/etc/hosts」ファイルに「`hostname -i` `hostname -f` `hostname -s`」とすると回避される

samba-ad側で「samba-tool computer delete xxx」の後に再度クライアント側で「net ads join」操作すると発生します.
解消方法は一度samba-ad側で「samba-tool dns add」で手動でsamba-clientを追加して「samba-tool dns delete」で削除します. その後「net ads join」操作は問題なくなる.

「samba-tool computer delete xxx」とすると「samba-tool dns query ad chaperone.jp @ A」からもエントリーが消える. これが原因?

最新の60件
2024-09-16 2024-09-14 2024-09-12 2024-09-09 2024-09-08 2024-09-06 2024-09-05 2024-09-04 2024-09-02 2024-09-01 2024-08-31 2024-08-28 2024-08-21 2024-08-18 2024-08-17 2024-08-16 2024-08-15 2024-08-14 2024-08-11 2024-08-09 2024-08-01 2024-07-27 2024-07-26 2024-07-16 2024-07-15 2024-07-12 2024-07-07 2024-06-22 2024-06-21 2024-06-17 2024-06-14 2024-06-11 2024-06-10 2024-06-08 2024-06-07 2024-06-02 2024-06-01 2024-05-30 2024-05-16 2024-04-26 2024-04-15 2024-04-11

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-06-24 (土) 01:37:06