Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-107590

SELinux fails to relabel filesystem when in enforcing mode

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major Major
    • rhel-10.1
    • rhel-10.1
    • selinux-policy
    • None
    • rhel-security-selinux
    • 2
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      Since the rebase of selinux-policy (RHEL-54303), when I touch /.autorelabel and reboot, no autorelabel is performed and the file stays there after reboot.

      The problem manifests itself in two ways:
      1. when the file is not labelled correctly ( system_u:object_r:unlabeled_t:s0 ), I see this in the log:

      audit: type=1400 audit(1754407742.389:4): avc:  denied  { getattr } for  pid=577 comm="selinux-autorel" path="/.autorelabel" dev="dm-0" ino=141918 scontext=system_u:system_r:selinux_autorelabel_generator_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=file permissive=0 
      

      2. when I label the file correctly ( unconfined_u:object_r:etc_runtime_t:s0 ), I don't see anything relevant in the log.

      So far, the only workaround I found is to switch to permissive mode for relabelling, which is hard to automate.

      I see some changes to the policy for selinux-relabel-generator:

      diff -ur selinux-policy-40.13.35-build/selinux-policy-c1ae4d4d9a09414cc7e1a05649fdd7c595dc27ed/policy/modules/system/selinuxutil.fc selinux-policy-42.1.4-build/selinux-policy-495b780f9c3f97a6e2cb28206d7298ea34becbcb/policy/modules/system/selinuxutil.fc
      --- selinux-policy-40.13.35-build/selinux-policy-c1ae4d4d9a09414cc7e1a05649fdd7c595dc27ed/policy/modules/system/selinuxutil.fc  2025-07-02 16:32:53.000000000 +0200
      +++ selinux-policy-42.1.4-build/selinux-policy-495b780f9c3f97a6e2cb28206d7298ea34becbcb/policy/modules/system/selinuxutil.fc    2025-07-31 13:32:55.000000000 +0200
      @@ -22,13 +22,6 @@
       /root/\.default_contexts       --      gen_context(system_u:object_r:default_context_t,s0)
       
       #
      -# /sbin
      -#
      -/sbin/load_policy              --      gen_context(system_u:object_r:load_policy_exec_t,s0)
      -/sbin/restorecon               --      gen_context(system_u:object_r:setfiles_exec_t,s0)
      -/sbin/setfiles.*               --      gen_context(system_u:object_r:setfiles_exec_t,s0)
      -
      -#
       # /usr
       #
       /usr/bin/checkpolicy           --      gen_context(system_u:object_r:checkpolicy_exec_t,s0)
      @@ -36,16 +29,18 @@
       
       /usr/lib/selinux(/.*)?                 gen_context(system_u:object_r:policy_src_t,s0)
       
      +/usr/lib/systemd/system-generators/selinux-autorelabel-generator\.sh   --      gen_context(system_u:object_r:selinux_autorelabel_generator_exec_t,s0)
      +
       /usr/libexec/selinux/selinux-autorelabel       --      gen_context(system_u:object_r:semanage_exec_t,s0)
       
      -/usr/sbin/load_policy          --      gen_context(system_u:object_r:load_policy_exec_t,s0)
      -/usr/sbin/restorecon           --      gen_context(system_u:object_r:setfiles_exec_t,s0)
      -/usr/sbin/restorecond          --      gen_context(system_u:object_r:restorecond_exec_t,s0)
      -/usr/sbin/run_init             --      gen_context(system_u:object_r:run_init_exec_t,s0)
      -/usr/sbin/setfiles.*           --      gen_context(system_u:object_r:setfiles_exec_t,s0)
      -/usr/sbin/setsebool            --      gen_context(system_u:object_r:setsebool_exec_t,s0)
      -/usr/sbin/semanage             --      gen_context(system_u:object_r:semanage_exec_t,s0)
      -/usr/sbin/semodule             --      gen_context(system_u:object_r:semanage_exec_t,s0)
      +/usr/bin/load_policy           --      gen_context(system_u:object_r:load_policy_exec_t,s0)
      +/usr/bin/restorecon            --      gen_context(system_u:object_r:setfiles_exec_t,s0)
      +/usr/bin/restorecond           --      gen_context(system_u:object_r:restorecond_exec_t,s0)
      +/usr/bin/run_init              --      gen_context(system_u:object_r:run_init_exec_t,s0)
      +/usr/bin/setfiles.*            --      gen_context(system_u:object_r:setfiles_exec_t,s0)
      +/usr/bin/setsebool             --      gen_context(system_u:object_r:setsebool_exec_t,s0)
      +/usr/bin/semanage              --      gen_context(system_u:object_r:semanage_exec_t,s0)
      +/usr/bin/semodule              --      gen_context(system_u:object_r:semanage_exec_t,s0)
       /usr/libexec/selinux/semanage_migrate_store        --  gen_context(system_u:object_r:semanage_exec_t,s0)
       /usr/share/system-config-selinux/system-config-selinux-dbus\.py                --      gen_context(system_u:object_r:semanage_exec_t,s0)
       /usr/share/system-config-selinux/selinux_server\.py            --      gen_context(system_u:object_r:semanage_exec_t,s0)
      @@ -62,7 +57,7 @@
       # /var/run
       #
       /run/restorecond\.pid  --      gen_context(system_u:object_r:restorecond_var_run_t,s0)
      -
      +/run/systemd/generator/selinux-autorelabel\.service\.d(/.*?)   gen_context(system_u:object_r:selinux_autorelabel_generator_unit_file_t,s0)
       
       /etc/share/selinux/targeted(/.*)?      gen_context(system_u:object_r:semanage_store_t,s0)
       /etc/share/selinux/mls(/.*)?           gen_context(system_u:object_r:semanage_store_t,s0)
      diff -ur selinux-policy-40.13.35-build/selinux-policy-c1ae4d4d9a09414cc7e1a05649fdd7c595dc27ed/policy/modules/system/selinuxutil.te selinux-policy-42.1.4-build/selinux-policy-495b780f9c3f97a6e2cb28206d7298ea34becbcb/policy/modules/system/selinuxutil.te
      --- selinux-policy-40.13.35-build/selinux-policy-c1ae4d4d9a09414cc7e1a05649fdd7c595dc27ed/policy/modules/system/selinuxutil.te  2025-07-02 16:32:53.000000000 +0200
      +++ selinux-policy-42.1.4-build/selinux-policy-495b780f9c3f97a6e2cb28206d7298ea34becbcb/policy/modules/system/selinuxutil.te    2025-07-31 13:32:55.000000000 +0200
      @@ -142,6 +142,12 @@
       domain_entry_file(setfiles_mac_t, setfiles_exec_t)
       domain_obj_id_change_exemption(setfiles_mac_t)
       
      +type selinux_autorelabel_generator_t;
      +type selinux_autorelabel_generator_exec_t;
      +init_system_domain(selinux_autorelabel_generator_t, selinux_autorelabel_generator_exec_t)
      +type selinux_autorelabel_generator_unit_file_t;
      +files_type(selinux_autorelabel_generator_unit_file_t)
      +
       ########################################
       #
       # Checkpolicy local policy
      @@ -812,3 +818,45 @@
       optional_policy(`
              policykit_dbus_chat(policy_manager_domain)
       ')
      +
      +########################################
      +#
      +# selinux-relabel-generator local policy
      +#
      +
      +allow selinux_autorelabel_generator_t selinux_autorelabel_generator_unit_file_t:dir manage_dir_perms;
      +allow selinux_autorelabel_generator_t selinux_autorelabel_generator_unit_file_t:file manage_file_perms;
      +allow selinux_autorelabel_generator_t selinux_autorelabel_generator_unit_file_t:lnk_file manage_lnk_file_perms;
      +
      +# src:elif grep -sqE "\bautorelabel\b" /proc/cmdline; then
      +kernel_read_proc_files(selinux_autorelabel_generator_t)
      +
      +# src:ln, selinuxenabled, cat
      +corecmd_exec_bin(selinux_autorelabel_generator_t)
      +
      +# src:mkdir -p "$earlydir/selinux-autorelabel.service.d"
      +init_filetrans_named_content(selinux_autorelabel_generator_t)
      +
      +optional_policy(`
      +       # src:#!/bin/bash
      +       auth_dontaudit_read_passwd_file(selinux_autorelabel_generator_t)
      +')
      +
      +optional_policy(`
      +       # src:source /etc/selinux/config
      +       seutil_read_config(selinux_autorelabel_generator_t)
      +')
      +
      +optional_policy(`
      +       systemd_unit_file(selinux_autorelabel_generator_unit_file_t)
      +
      +       # src:mkdir -p "$earlydir/selinux-autorelabel.service.d"
      +       systemd_unit_file_filetrans(selinux_autorelabel_generator_t, selinux_autorelabel_generator_unit_file_t, dir)
      +
      +       # src:ln -sf "$unitdir/selinux-autorelabel.target" "$earlydir/default.target"
      +       systemd_manage_unit_symlinks(selinux_autorelabel_generator_t)
      +       systemd_getattr_generic_unit_files(selinux_autorelabel_generator_t)
      +
      +       # src:cat > "$earlydir/selinux-autorelabel.service.d/tty.conf" <<EOF
      +       manage_files_pattern(selinux_autorelabel_generator_t, selinux_autorelabel_generator_unit_file_t, selinux_autorelabel_generator_unit_file_t)
      +')
      

      Perhaps that's related, perhaps not.

              rhn-support-zpytela Zdenek Pytela
              rhn-support-pcahyna Pavel Cahyna
              Zdenek Pytela Zdenek Pytela
              SSG Security QE SSG Security QE
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved: