389DSをdockerで動かしてみる.
使うコンテナは「389ds/dirsrv」https://hub.docker.com/r/389ds/dirsrv

データは「/srv/389ds/data」に設置して、docker内の389DSに/dataとして繋げる

ホスト名は「ds.sybyl.local」ですが、
その上で動くdockerコンテナは「ds.cluster.local」として動くとします. なのでドメインは「dc=cluster,dc=internal」

dockerとdocker composeを入れる

[root@ds ~]# cat /etc/redhat-release
Rocky Linux release 9.8 (Blue Onyx)
 
[root@ds ~]# dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
[root@ds ~]# dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
[root@ds ~]# systemctl enable --now docker
[root@ds ~]# docker version
 :
Server: Docker Engine - Community
 Engine:
  Version:          29.7.2
 :
[root@ds ~]# docker compose version
Docker Compose version v5.4.0
[root@ds ~]#

ldaps対応

まずはldapsに対応したいので自己認証局のCA証明書(ca.crt)とそれで署名されたサーバー証明書(server.crt)を準備します

流れとしては自己認証局を作って、CA証明書(ルート証明書)を準備します

[root@ds ~]# mkdir -p /srv/389ds/{certs/ca,data}
[root@ds ~]# cd /srv/389ds/certs
[root@ds certs]# openssl genrsa -out ca/ca.key 4096  <-- 認証局の秘密鍵を作成します
 
[root@ds certs]# ls -l ca/
total 4
-rw-------. 1 root root 3272 Jul 31 06:19 ca.key     <-- 認証局の秘密鍵(CA秘密鍵)
[root@ds certs]#
 
(CA秘密鍵(ca.key)を使ってCA証明書(ca.crt)を作ります. オレオレ証明書です)
[root@ds certs]# openssl req -x509 -new -sha256 \
  -key ca/ca.key \
  -days 3650 \
  -out ca/ca.crt \
  -subj "/C=JP/O=cluster.internal/CN=cluster.internal 389DS CA" \
  -addext "basicConstraints=critical,CA:TRUE" \
  -addext "keyUsage=critical,keyCertSign,cRLSign" \
  -addext "subjectKeyIdentifier=hash"
[root@ds certs]#
[root@ds certs]# ls -l ca/
total 8
-rw-r--r--. 1 root root 1980 Jul 31 06:22 ca.crt    <--- CA証明書 もしくは ルート証明書と言います
-rw-------. 1 root root 3272 Jul 31 06:19 ca.key
[root@ds certs]#

次に、自己認証局からサーバ証明書を作る。
正確にはサーバの秘密鍵からCSR(証明書の発行依頼書)を作って、CSRに自己認証局のCA証明書で署名(サイン)してもらい、サーバー証明書(server.crt)を発行する。

ただ、その際「SANを含む拡張設定」を含ませる. SAN[Subject Alternative Name](その証明書が有効な通信先(ドメイン名やIPアドレス)の追加リスト)。
以前ならCN(Common Name)だけで良かったが、最近ではSANに書かれている内容で真贋判定されるので。

[root@ds certs]# openssl genrsa -out server.key 4096    <--サーバの秘密鍵(server.key)を作成
 
(サーバの秘密鍵(server.key)から依頼書(server.csr)を作る)
[root@ds certs]# openssl req -new \
  -key server.key \
  -out server.csr \
  -subj "/C=JP/O=cluster.internal/CN=ds.cluster.internal"
 
[root@ds certs]#
 
(SAN定義書を作る)
[root@ds certs]# cat > server-ext.cnf <<'_EOF_'
basicConstraints=critical,CA:FALSE
keyUsage=critical,digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth
subjectAltName=@alt_names
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
 
[alt_names]
DNS.1=ds.cluster.internal
DNS.2=ds
_EOF_
 
(依頼書(server.csr)からSANをまぜつつ、CA証明書(ca.crt)とCA秘密鍵(ca.key) とで サーバ証明書(server.crt)を得る)
[root@ds certs]# openssl x509 -req \
  -in server.csr \
  -CA ca/ca.crt \
  -CAkey ca/ca.key \
  -CAcreateserial \
  -out server.crt \
  -days 825 \
  -sha256 \
  -extfile server-ext.cnf
 
[root@ds certs]#
[root@ds certs]# ls -l
total 16
drwxr-xr-x. 2 root root   48 Aug  1 00:40 ca
-rw-r--r--. 1 root root 2049 Aug  1 00:40 server.crt
-rw-r--r--. 1 root root 1651 Aug  1 00:19 server.csr
-rw-r--r--. 1 root root  250 Aug  1 00:38 server-ext.cnf
-rw-------. 1 root root 3272 Jul 31 06:25 server.key
[root@ds certs]#
[root@ds certs]# ls -l ca/
total 12
-rw-r--r--. 1 root root 1980 Jul 31 06:22 ca.crt
-rw-------. 1 root root 3272 Jul 31 06:19 ca.key
-rw-r--r--. 1 root root   41 Aug  1 00:40 ca.srl
[root@ds certs]#

依頼書の「server.csr」は削除しても構わない。

CA秘密鍵の「ca/ca.key」とCAが発行した証明書の「シリアルナンバー(管理番号)の記録ファイル」(ca.srl)は別の場所に保管します
サーバー証明書(server.crt)の再発行や発行済み証明書の無効のために「ca.key」と「ca.srl」は必須なため.

[root@ds certs]# mkdir -p /root/389ds-ca-private
[root@ds certs]# mv ca/ca.key  ca/ca.srl   /root/389ds-ca-private
[root@ds certs]# rm -f server.csr

一応確認

[root@ds certs]# openssl x509 -in ca/ca.crt -noout -text | grep -A2 'Basic Constraints'
            X509v3 Basic Constraints: critical
                CA:TRUE                           <-- ここ
            X509v3 Key Usage: critical
 
[root@ds certs]# openssl x509 -in server.crt -noout -text | grep -A2 -E 'Basic Constraints|Subject Alternative Name'
            X509v3 Basic Constraints: critical
                CA:FALSE                           <-- ここ
            X509v3 Key Usage: critical
--
            X509v3 Subject Alternative Name:
                DNS:ds.cluster.internal, DNS:ds    <-- ここ
            X509v3 Subject Key Identifier:
 
[root@ds certs]# openssl verify -CAfile ca/ca.crt server.crt    <-- CA証明書(ca.crt)によるサーバ証明書(server.crt)の署名検証
server.crt: OK
 
[root@ds certs]# openssl pkey -in server.key -pubout -outform DER | sha256sum            <--- 秘密鍵と証明書の一致確認
c92d01c60e712fe5d4c230b5054a8fe3e03f1945f765db3fa61910b3e1d76b84  -
[root@ds certs]#
[root@ds certs]# openssl x509 -in server.crt -pubkey -noout |   openssl pkey -pubin -outform DER |   sha256sum
c92d01c60e712fe5d4c230b5054a8fe3e03f1945f765db3fa61910b3e1d76b84  -
[root@ds certs]#

コンテナ起動

compose.ymlは「/srv/389ds/compose.yml」として下記のようにします

services:
  389ds:
    image: 389ds/dirsrv:3.1
    container_name: 389ds
    hostname: ds.cluster.internal
    restart: unless-stopped
 
    environment:
      DS_DM_PASSWORD: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      DS_SUFFIX_NAME: "dc=cluster,dc=internal"
 
    ports:
      - "389:3389"
      - "636:3636"
 
    volumes:
      - /srv/389ds/data:/data:Z
      - /srv/389ds/certs:/data/tls:ro,Z

として

[root@ds ~]# cd /srv/389ds/
 
[root@ds 389ds]# docker compose up -d
 
[root@ds 389ds]# firewall-cmd --add-service=ldap --add-service=ldaps --zone=public --permanent
[root@ds 389ds]# firewall-cmd --reload
 
[root@ds 389ds]# docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS                            PORTS                                                                                  NAMES
fc6f77ab7a3b   389ds/dirsrv:3.1   "/usr/lib/dirsrv/dsc…"   3 seconds ago   Up 3 seconds (health: starting)   0.0.0.0:389->3389/tcp, [::]:389->3389/tcp, 0.0.0.0:636->3636/tcp, [::]:636->3636/tcp   389ds
 
[root@ds 389ds]#
 
(接続テスト)
[root@ds 389ds]# dnf install openldap-clients
[root@ds 389ds]# LDAPTLS_CACERT=/srv/389ds/certs/ca/ca.crt ldapwhoami -H ldaps://ds:636   -D "cn=Directory Manager"   -W    <-- ldaps[636]で接続
Enter LDAP Password:
dn: cn=directory manager
 
[root@ds 389ds]# ldapwhoami -H ldap://ds:389   -D "cn=Directory Manager"   -W     <-- ldap[389]で接続
Enter LDAP Password:
dn: cn=directory manager
 
(コンテナの中に入って)
[root@ds 389ds]# docker exec -it 389ds bash
ds:/ # ldapwhoami   -x  -H ldap://ds:3389   -D "cn=Directory Manager"   -W                                             ldap通信
ds:/ # LDAPTLS_CACERT=/data/tls/ca/ca.crt ldapwhoami   -x   -H ldaps://ds:3636   -D "cn=Directory Manager"   -W        ldaps通信
ds:/ # ldapwhoami   -x  -H ldapi://%2Fdata%2Frun%2Fslapd-localhost.socket   -D "cn=Directory Manager"   -W             ソケット通信
 
[root@ds 389ds]#

注意 接続先となる「-H ldaps://ds:636」は、SAN定義書の「alt_names」のみ許可される. 記載のない対応するipアドレスで接続を試みると「ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)」と表示される

終了するには

[root@ds 389ds]# docker compose down
 
(稼働中にログをなら)
[root@ds 389ds]# docker compose logs -f 389ds

一度起動に成功すると「/srv/389ds/data/」にコンテンツが作られる

[root@ds 389ds]# ls -l /srv/389ds/data/
total 4
drwxr-xr-x. 2 root root    6 Aug  1 02:07 bak
drwxr-xr-x. 3 root root 4096 Aug  1 06:03 config
drwxr-xr-x. 2 root root   54 Aug  1 02:07 db
drwxr-xr-x. 2 root root    6 Aug  1 02:07 ldif
drwxr-xr-x. 2 root root  172 Aug  1 02:07 logs
drwxr-xr-x. 4 root root   89 Aug  1 06:03 run
drwxr-xr-x. 2 root root  156 Aug  1 02:07 ssca
drwxr-xr-x. 2 root root    6 Aug  1 02:07 tls
[root@ds 389ds]#

なので再度立ち上げても同じコンテンツが利用できるが、初期化したいならこのフォルダの中身を消す

[root@ds 389ds]# docker compose down
 
[root@ds 389ds]# rm -rf /src/389ds/data/*
 
(再調整後)
[root@ds 389ds]# docker compose up -d

コンテンツ投入

LDAP/Composeとは違って、389DS/dirsrvは、最低限まで作ってあとはldifか dsconf を作って形を作るって感じです.

まずはコンテナ内の dsconf コマンドでバックエンドを作成します

[root@ds 389ds]# docker exec -it 389ds dsconf localhost backend suffix list
No backends                                                                     <-- バックエンドを持ってない
 
[root@ds 389ds]#
[root@ds 389ds]# docker exec 389ds \
dsconf localhost backend create \
    --be-name userRoot \
    --suffix "dc=cluster,dc=internal" \
    --create-suffix
 
(確認)
[root@ds 389ds]# docker exec -it 389ds dsconf localhost backend suffix list
dc=cluster,dc=internal (userroot)                                              <-- バックエンドが作れた
 
[root@ds 389ds]# docker exec -it 389ds dsctl --list
slapd-localhost                                                                <-- 389DSのインスタンス名は localhost 
 
[root@ds 389ds]#

バックエンドの作成で「docker exec 389ds dsconf localhost backend create --be-name userRoot --suffix "dc=cluster,dc=internal" --create-suffix --create-entries」
と「--create-entries」を付けるとデモデータ(ou=groups, ou=peopleとか)を作ってくれます.

memberOf

[root@ds 389ds]# ldapsearch -H ldap://ds:389 -D "cn=Directory Manager" -b "cn=plugins,cn=config" -s one "cn=*MemberOf*" cn nsslapd-pluginEnabled  -W
 :
# MemberOf Plugin, plugins, config
dn: cn=MemberOf Plugin,cn=plugins,cn=config
cn: MemberOf Plugin
nsslapd-pluginEnabled: off
 :
[root@ds 389ds]# ldapmodify -H ldap://ds:389 -D "cn=Directory Manager" -W << _EOF_
dn: cn=MemberOf Plugin,cn=plugins,cn=config
changetype: modify
replace: nsslapd-pluginEnabled
nsslapd-pluginEnabled: on
_EOF_
 
(確認)
[root@ds 389ds]# ldapsearch -H ldap://ds:389 -D "cn=Directory Manager" -b "cn=plugins,cn=config" -s one "cn=*MemberOf*" cn nsslapd-pluginEnabled  -W
 :
nsslapd-pluginEnabled: on
 :
[root@ds 389ds]#

group, peopleの追加

389DSのメリット dsidm コマンドで作ってみる

[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost organizationalunit create --ou groups     <-- パスワードなしで行ける
[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost organizationalunit create --ou people
[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost organizationalunit create --ou automount
[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost organizationalunit create --ou sudoers
 
[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost posixgroup create --cn fgo --gidNumber 2000
[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost user create --uid illya --cn "Illyasviel von Einzbern"  --displayName illya --uidNumber 2001 --gidNumber 2000 --homeDirectory /home/illya
[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost account modify-by-dn   uid=illya,ou=people,dc=cluster,dc=internal  add:loginShell:/bin/bash
[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost account reset_password uid=illya,ou=people,dc=cluster,dc=internal  '初期パスワード'
 
(コンテナの中に入って)
[root@ds 389ds]# docker exec -it 389ds bash
ds:/ #
ds:/ # ldapadd -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: nisMapName=auto.master,ou=automount,dc=cluster,dc=internal
objectClass: top
objectClass: nisMap
nisMapName: auto.master
_EOF_
ds:/ #
ds:/ # ldapadd -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: nisMapName=auto.home,ou=automount,dc=cluster,dc=internal
objectClass: top
objectClass: nisMap
nisMapName: auto.home
_EOF_
ds:/ #
ds:/ # ldapadd -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: cn=supervisor,ou=sudoers,dc=cluster,dc=internal
objectClass: top
objectClass: sudorole
cn: supervisor
sudoUser: %supervisor
sudoCommand: ALL
sudoHost: ALL
sudoOption: nopasswd
_EOF_
ds:/ #
ds:/ # exit
exit
[root@ds 389ds]#

パスワードポリシーの変更

[root@ds 389ds]# docker exec -it 389ds dsconf localhost pwpolicy set \
    --pwdchecksyntax=off \
    --pwdhistory=off \
    --pwdminlen=3 \
    --pwdminage=0 \
    --pwdlockout=on \
    --pwdmaxfailures=5 \
    --pwdlockoutduration=3600 \
    --pwdresetfailcount=600
[root@ds 389ds]#

パスワードリセット

「passwordmustchange」を有効にすると、初期パスワードでログイン後に自分でパスワードを再設定する必要が生じます.

[root@ds 389ds]# docker exec -it 389ds dsconf localhost pwpolicy get | grep passwordmustchange
passwordmustchange: off
 
[root@ds 389ds]# docker exec -it 389ds dsconf localhost pwpolicy set --pwdmustchange=on
Successfully updated global password policy
 
[root@ds 389ds]#

接続用アカウントの作成

一般ユーザとは違うouに入れて権限も制限させるようにします

[root@ds 389ds]# docker exec -it 389ds dsidm -b "dc=cluster,dc=internal" localhost organizationalunit create --ou ServiceAccounts
 
[root@ds 389ds]# docker exec -it 389ds bash
 
ds:/ # ldapadd -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal
objectClass: top
objectClass: account
objectClass: simpleSecurityObject
uid: sssd-auth
description: LDAP client search account
userPassword: yyyyyyyyyyyy
_EOF_
ds:/ #
ds:/ # exit
[root@ds 389ds]#

ただ、現状pwpolicy で「pwdmustchange=on」となっているのでこのアカウント「uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal」にもパスワードポリシーが適用され
初期設定のパスワードがそのままでは使えないです。
なので「Local Password Policy」を使えるようにします

[root@ds 389ds]# docker exec -it 389ds \
  dsconf localhost pwpolicy set --pwdlocal on
[root@ds 389ds]#
 
(確認)
[root@ds 389ds]# docker exec -it 389ds dsconf localhost pwpolicy get
 :
nsslapd-pwpolicy-local: on
 :
[root@ds 389ds]#

これでユーザ/サブツリごとの個別ポリシーを使えるようになります。
なので

[root@ds 389ds]# docker exec -it 389ds \
  dsconf localhost localpwp adduser \
  --pwdmustchange off \
  "uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal"
 
[root@ds 389ds]#

と「uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal」のみ「pwdmustchange off」とさせます。
っで確認

[root@ds 389ds]# docker exec -it 389ds \
  dsconf localhost localpwp get \
  "uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal"
 
Local User Policy Policy for "uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal": cn=cn\3DnsPwPolicyEntry_user\(略
------------------------------------
passwordmustchange: off
 
[root@ds 389ds]#

あと、「uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal」のパスワードの再設定

(コンテナの中に入って)
[root@ds 389ds]# docker exec -it 389ds bash
ds:/ #  ldapmodify -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal
changetype: modify
replace: userPassword
userPassword: yyyyyyyyyyyy
_EOF_
 
[root@ds 389ds]#

それで、「uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal」による接続テスト

[root@ds 389ds]# ldapwhoami -H ldap://ds:389   -D "uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal"  -W
 
[root@ds 389ds]# LDAPTLS_CACERT=/srv/389ds/certs/ca/ca.crt ldapwhoami -H ldaps://ds:636 -D "uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal" -W

次に「uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal」に参照権限を渡す

[root@ds 389ds]# docker exec -it 389ds bash
ds:/ #
ds:/ # ldapmodify -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: ou=people,dc=cluster,dc=internal
changetype: modify
add: aci
aci: (targetattr != "userPassword || aci")
 (version 3.0;
  acl "SSSD read";
  allow (read,search,compare)
  userdn="ldap:///uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal";)
_EOF_
 
ds:/ #
ds:/ # ldapmodify -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: ou=groups,dc=cluster,dc=internal
changetype: modify
add: aci
aci: (targetattr != "userPassword || aci")
 (version 3.0;
  acl "SSSD read";
  allow (read,search,compare)
  userdn="ldap:///uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal";)
_EOF_
 
ds:/ #
ds:/ # ldapmodify -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: ou=sudoers,dc=cluster,dc=internal
changetype: modify
add: aci
aci: (targetattr != "userPassword || aci")
 (version 3.0;
  acl "SSSD read";
  allow (read,search,compare)
  userdn="ldap:///uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal";)
_EOF_
 
ds:/ #
ds:/ # ldapmodify -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: ou=automount,dc=cluster,dc=internal
changetype: modify
add: aci
aci: (targetattr != "userPassword || aci")
 (version 3.0;
  acl "SSSD read";
  allow (read,search,compare)
  userdn="ldap:///uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal";)
_EOF_
 
ds:/ #
ds:/ # ldapmodify -H ldap://localhost:3389 -D "cn=Directory Manager" -W <<_EOF_
dn: dc=cluster,dc=internal
changetype: modify
add: aci
aci: (targetattr="dc || ou || objectClass || description")(version 3.0; acl "SSSD base read"; allow (read,search,compare) userdn="ldap:///uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal";)
_EOF_
 
ds:/ # exit
[root@ds 389ds]#

確認方法

[root@ds 389ds]# ldapsearch  -H ldap://ds:389 -D "cn=Directory Manager" -b "dc=cluster,dc=internal" "(objectClass=*)" aci -o ldif-wrap=no -W

クライアントとの接続

クライアントマシンでまずはパッケージを入れて、389DSノードからCA証明書を頂く

[root@rockylinux9 ~]# dnf -y install sssd-ldap oddjob-mkhomedir sssd-tools openldap-clients
 
[root@rockylinux9 ~]# mkdir /opt/389ds
[root@rockylinux9 ~]# scp root@ds:/srv/389ds/certs/ca/ca.crt   /opt/389ds/
 
(SELinuxが有効なら)
[root@rockylinux9 ~]# restorecon -Rv /opt/389ds

接続用アカウントで通信してみる

[root@rockylinux9 ~]# LDAPTLS_CACERT=/opt/389ds/ca.crt ldapsearch -x -H ldaps://ds:636 -D "uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal"  -b "dc=cluster,dc=internal" "(uid=illya)" dn -W
 :
dn: uid=illya,ou=people,dc=cluster,dc=internal
 :
[root@rockylinux9 ~]#

とユーザが引ければok

っでsssdの設定

[root@rockylinux9 ~]# vi /etc/sssd/sssd.conf
 
[sssd]
services = nss, pam
domains = default
 
[nss]
 
[domain/default]
id_provider = ldap
auth_provider = ldap
 
ldap_uri = ldaps://ds:636
ldap_search_base = dc=cluster,dc=internal
 
ldap_default_bind_dn = uid=sssd-auth,ou=ServiceAccounts,dc=cluster,dc=internal
ldap_default_authtok_type = password
ldap_default_authtok = yyyyyyyyyyyy
 
ldap_tls_cacert = /opt/389ds/ca.crt
ldap_tls_reqcert = demand
 
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# chown root:root /etc/sssd/sssd.conf
[root@rockylinux9 ~]# chmod 600 /etc/sssd/sssd.conf
[root@rockylinux9 ~]# systemctl restart sssd
 
(確認)
[root@rockylinux9 ~]# id illya
uid=2001(illya) gid=2000(fgo) groups=2000(fgo)
[root@rockylinux9 ~]# getent passwd illya
illya:*:2001:2000:Illyasviel von Einzbern:/home/illya:/bin/bash
[root@rockylinux9 ~]#

あと、389DSに載せたautomountの情報をクライアントが参照できるようにするとかの設定がある

docker内コンテナのデーモン化

[root@ds ~]# docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED      STATUS                PORTS                                                                                  NAMES
8ddd64a88ffa   389ds/dirsrv:3.1   "/usr/lib/dirsrv/dsc…"   2 days ago   Up 2 days (healthy)   0.0.0.0:389->3389/tcp, [::]:389->3389/tcp, 0.0.0.0:636->3636/tcp, [::]:636->3636/tcp   389ds
[root@ds ~]#
 
 
[root@ds ~]# docker update --restart=unless-stopped 389ds
 
(確認)
[root@ds ~]# docker inspect -f '{{.HostConfig.RestartPolicy.Name} }' 389ds     <--- }と}にはスペースを入れてます。ここの表記上の問題です
unless-stopped
[root@ds ~]#

これでコンテナ 389ds は unless-stopped となったので、ホストが再起動して、dockerが動けば自動的に 389ds も動きます

最新の60件
2026-09-05 2026-08-31 2026-08-27 2026-08-24 2026-08-20 2026-08-18 2026-08-17 2026-08-16 2026-08-15 2026-08-13 2026-08-12 2026-08-11 2026-08-09 2026-07-30 2026-07-25 2026-07-24 2026-07-20 2026-07-18 2026-07-17 2026-07-16 2026-07-08 2026-07-07 2026-07-06 2026-07-04 2026-07-02 2026-06-27 2026-06-24 2026-06-21 2026-06-17 2026-06-14 2026-06-13 2026-06-09 2026-06-08 2026-06-05 2026-06-04 2026-06-03

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-08-16 (日) 03:12:15