Blame SOURCES/0006-Issue-4973-installer-changes-permissions-on-run.patch

51b5b9
From b4a3b88faeafa6aa197d88ee84e4b2dbadd37ace Mon Sep 17 00:00:00 2001
51b5b9
From: Mark Reynolds <mreynolds@redhat.com>
51b5b9
Date: Mon, 1 Nov 2021 10:42:27 -0400
51b5b9
Subject: [PATCH 06/12] Issue 4973 - installer changes permissions on /run
51b5b9
51b5b9
Description:  There was a regression when we switched over to using /run
51b5b9
              that caused the installer to try and create /run which
51b5b9
              caused the ownership to change.  Fixed this by changing
51b5b9
              the "run_dir" to /run/dirsrv
51b5b9
51b5b9
relates: https://github.com/389ds/389-ds-base/issues/4973
51b5b9
51b5b9
Reviewed by: jchapman(Thanks!)
51b5b9
---
51b5b9
 ldap/admin/src/defaults.inf.in       |  2 +-
51b5b9
 src/lib389/lib389/instance/remove.py | 10 +---------
51b5b9
 src/lib389/lib389/instance/setup.py  | 13 +++----------
51b5b9
 3 files changed, 5 insertions(+), 20 deletions(-)
51b5b9
51b5b9
diff --git a/ldap/admin/src/defaults.inf.in b/ldap/admin/src/defaults.inf.in
51b5b9
index e02248b89..92b93d695 100644
51b5b9
--- a/ldap/admin/src/defaults.inf.in
51b5b9
+++ b/ldap/admin/src/defaults.inf.in
51b5b9
@@ -35,7 +35,7 @@ sysconf_dir = @sysconfdir@
51b5b9
 initconfig_dir = @initconfigdir@
51b5b9
 config_dir = @instconfigdir@/slapd-{instance_name}
51b5b9
 local_state_dir = @localstatedir@
51b5b9
-run_dir = @localrundir@
51b5b9
+run_dir = @localrundir@/dirsrv
51b5b9
 # This is the expected location of ldapi.
51b5b9
 ldapi = @localrundir@/slapd-{instance_name}.socket
51b5b9
 pid_file = @localrundir@/slapd-{instance_name}.pid
51b5b9
diff --git a/src/lib389/lib389/instance/remove.py b/src/lib389/lib389/instance/remove.py
51b5b9
index 1a35ddc07..e96db3896 100644
51b5b9
--- a/src/lib389/lib389/instance/remove.py
51b5b9
+++ b/src/lib389/lib389/instance/remove.py
51b5b9
@@ -52,9 +52,9 @@ def remove_ds_instance(dirsrv, force=False):
51b5b9
     remove_paths['ldif_dir'] = dirsrv.ds_paths.ldif_dir
51b5b9
     remove_paths['lock_dir'] = dirsrv.ds_paths.lock_dir
51b5b9
     remove_paths['log_dir'] = dirsrv.ds_paths.log_dir
51b5b9
-    # remove_paths['run_dir'] = dirsrv.ds_paths.run_dir
51b5b9
     remove_paths['inst_dir'] = dirsrv.ds_paths.inst_dir
51b5b9
     remove_paths['etc_sysconfig'] = "%s/sysconfig/dirsrv-%s" % (dirsrv.ds_paths.sysconf_dir, dirsrv.serverid)
51b5b9
+    remove_paths['ldapi'] = dirsrv.ds_paths.ldapi
51b5b9
 
51b5b9
     tmpfiles_d_path = dirsrv.ds_paths.tmpfiles_d + "/dirsrv-" + dirsrv.serverid + ".conf"
51b5b9
 
51b5b9
@@ -80,14 +80,6 @@ def remove_ds_instance(dirsrv, force=False):
51b5b9
 
51b5b9
     ### ANY NEW REMOVAL ACTION MUST BE BELOW THIS LINE!!!
51b5b9
 
51b5b9
-    # Remove LDAPI socket file
51b5b9
-    ldapi_path = os.path.join(dirsrv.ds_paths.run_dir, "slapd-%s.socket" % dirsrv.serverid)
51b5b9
-    if os.path.exists(ldapi_path):
51b5b9
-        try:
51b5b9
-            os.remove(ldapi_path)
51b5b9
-        except OSError as e:
51b5b9
-            _log.debug(f"Failed to remove LDAPI socket ({ldapi_path})  Error: {str(e)}")
51b5b9
-
51b5b9
     # Remove these paths:
51b5b9
     # for path in ('backup_dir', 'cert_dir', 'config_dir', 'db_dir',
51b5b9
     #             'ldif_dir', 'lock_dir', 'log_dir', 'run_dir'):
51b5b9
diff --git a/src/lib389/lib389/instance/setup.py b/src/lib389/lib389/instance/setup.py
51b5b9
index 57e7a9fd4..be6854af8 100644
51b5b9
--- a/src/lib389/lib389/instance/setup.py
51b5b9
+++ b/src/lib389/lib389/instance/setup.py
51b5b9
@@ -732,10 +732,6 @@ class SetupDs(object):
51b5b9
                 dse += line.replace('%', '{', 1).replace('%', '}', 1)
51b5b9
 
51b5b9
         with open(os.path.join(slapd['config_dir'], 'dse.ldif'), 'w') as file_dse:
51b5b9
-            if os.path.exists(os.path.dirname(slapd['ldapi'])):
51b5b9
-                ldapi_path = slapd['ldapi']
51b5b9
-            else:
51b5b9
-                ldapi_path = os.path.join(slapd['run_dir'], "slapd-%s.socket" % slapd['instance_name'])
51b5b9
             dse_fmt = dse.format(
51b5b9
                 schema_dir=slapd['schema_dir'],
51b5b9
                 lock_dir=slapd['lock_dir'],
51b5b9
@@ -759,7 +755,7 @@ class SetupDs(object):
51b5b9
                 db_dir=slapd['db_dir'],
51b5b9
                 db_home_dir=slapd['db_home_dir'],
51b5b9
                 ldapi_enabled="on",
51b5b9
-                ldapi=ldapi_path,
51b5b9
+                ldapi=slapd['ldapi'],
51b5b9
                 ldapi_autobind="on",
51b5b9
             )
51b5b9
             file_dse.write(dse_fmt)
51b5b9
@@ -861,7 +857,7 @@ class SetupDs(object):
51b5b9
             SER_ROOT_PW: self._raw_secure_password,
51b5b9
             SER_DEPLOYED_DIR: slapd['prefix'],
51b5b9
             SER_LDAPI_ENABLED: 'on',
51b5b9
-            SER_LDAPI_SOCKET: ldapi_path,
51b5b9
+            SER_LDAPI_SOCKET: slapd['ldapi'],
51b5b9
             SER_LDAPI_AUTOBIND: 'on'
51b5b9
         }
51b5b9
 
51b5b9
@@ -905,13 +901,10 @@ class SetupDs(object):
51b5b9
             self.log.info("Perform SELinux labeling ...")
51b5b9
             selinux_paths = ('backup_dir', 'cert_dir', 'config_dir', 'db_dir',
51b5b9
                              'ldif_dir', 'lock_dir', 'log_dir', 'db_home_dir',
51b5b9
-                             'schema_dir', 'tmp_dir')
51b5b9
+                             'run_dir', 'schema_dir', 'tmp_dir')
51b5b9
             for path in selinux_paths:
51b5b9
                 selinux_restorecon(slapd[path])
51b5b9
 
51b5b9
-            # Don't run restorecon on the entire /run directory
51b5b9
-            selinux_restorecon(slapd['run_dir'] + '/dirsrv')
51b5b9
-
51b5b9
             selinux_label_port(slapd['port'])
51b5b9
 
51b5b9
         # Start the server
51b5b9
-- 
51b5b9
2.31.1
51b5b9