fixfiles: use `grep -F` when search in mounts

systemd escapes luks uid so that mount points contain '\' and grep
should not consider this as regexp
Fixes:
    $ cat /proc/self/mounts | sort | uniq | awk '{print $2}'
    /run/credentials/systemd-cryptsetup@luks\134x2d6d1f41e6\134x2d5538\134x2d41a0\134x2db383\134x2cd41c2ddcacaa.service

    $ sudo fixfiles -B onboot
    grep: Invalid back reference
    grep: Invalid back reference
    System will relabel on next boot

Suggested-by: Christopher Tubbs <ctubbsii@fedoraproject.org>
Signed-off-by: Petr Lautrbach <lautrbach@redhat.com>
Acked-by: James Carter <jwcart2@gmail.com>
This commit is contained in:
Petr Lautrbach 2024-11-13 14:02:00 +01:00 committed by James Carter
parent 267d4f9bf5
commit cd8d6c7f82
1 changed files with 4 additions and 4 deletions

View File

@ -45,9 +45,9 @@ FS="`cat /proc/self/mounts | sort | uniq | awk '{print $2}'`"
for i in $FS; do for i in $FS; do
if [ `useseclabel` -ge 0 ] if [ `useseclabel` -ge 0 ]
then then
grep " $i " /proc/self/mounts | awk '{print $4}' | grep -E --silent '(^|,)seclabel(,|$)' && echo $i grep -F " $i " /proc/self/mounts | awk '{print $4}' | grep -E --silent '(^|,)seclabel(,|$)' && echo $i
else else
grep " $i " /proc/self/mounts | grep -v "context=" | grep -E --silent '(ext[234]| ext4dev | gfs2 | xfs | jfs | btrfs )' && echo $i grep -F " $i " /proc/self/mounts | grep -v "context=" | grep -E --silent '(ext[234]| ext4dev | gfs2 | xfs | jfs | btrfs )' && echo $i
fi fi
done done
} }
@ -55,14 +55,14 @@ done
get_rw_labeled_mounts() { get_rw_labeled_mounts() {
FS=`get_all_labeled_mounts | sort | uniq` FS=`get_all_labeled_mounts | sort | uniq`
for i in $FS; do for i in $FS; do
grep " $i " /proc/self/mounts | awk '{print $4}' | grep -E --silent '(^|,)rw(,|$)' && echo $i grep -F " $i " /proc/self/mounts | awk '{print $4}' | grep -E --silent '(^|,)rw(,|$)' && echo $i
done done
} }
get_ro_labeled_mounts() { get_ro_labeled_mounts() {
FS=`get_all_labeled_mounts | sort | uniq` FS=`get_all_labeled_mounts | sort | uniq`
for i in $FS; do for i in $FS; do
grep " $i " /proc/self/mounts | awk '{print $4}' | grep -E --silent '(^|,)ro(,|$)' && echo $i grep -F " $i " /proc/self/mounts | awk '{print $4}' | grep -E --silent '(^|,)ro(,|$)' && echo $i
done done
} }