base-files: simplify restorecon logic

This commit is contained in:
coolsnowwolf 2024-10-17 17:04:21 +08:00
parent 8527c75281
commit 9f40de14ca

View File

@ -209,10 +209,10 @@ add_group_and_user() {
if [ -n "$rusers" ]; then if [ -n "$rusers" ]; then
local tuple oIFS="$IFS" local tuple oIFS="$IFS"
for tuple in $rusers; do for tuple in $rusers; do
local uid gid uname gname local uid gid uname gname addngroups addngroup addngname addngid
IFS=":" IFS=":"
set -- $tuple; uname="$1"; gname="$2" set -- $tuple; uname="$1"; gname="$2"; addngroups="$3"
IFS="=" IFS="="
set -- $uname; uname="$1"; uid="$2" set -- $uname; uname="$1"; uid="$2"
set -- $gname; gname="$1"; gid="$2" set -- $gname; gname="$1"; gid="$2"
@ -232,7 +232,24 @@ add_group_and_user() {
group_add_user "$gname" "$uname" group_add_user "$gname" "$uname"
fi fi
unset uid gid uname gname if [ -n "$uname" ] && [ -n "$addngroups" ]; then
oIFS="$IFS"
IFS=","
for addngroup in $addngroups ; do
IFS="="
set -- $addngroup; addngname="$1"; addngid="$2"
if [ -n "$addngid" ]; then
group_exists "$addngname" || group_add "$addngname" "$addngid"
else
group_add_next "$addngname"
fi
group_add_user "$addngname" "$uname"
done
IFS="$oIFS"
fi
unset uid gid uname gname addngroups addngroup addngname addngid
done done
fi fi
} }
@ -245,11 +262,6 @@ default_postinst() {
add_group_and_user "${pkgname}" add_group_and_user "${pkgname}"
if [ -f "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" ]; then
( . "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" )
ret=$?
fi
if [ -d "$root/rootfs-overlay" ]; then if [ -d "$root/rootfs-overlay" ]; then
cp -R $root/rootfs-overlay/. $root/ cp -R $root/rootfs-overlay/. $root/
rm -fR $root/rootfs-overlay/ rm -fR $root/rootfs-overlay/
@ -275,6 +287,11 @@ default_postinst() {
rm -f /tmp/luci-indexcache rm -f /tmp/luci-indexcache
fi fi
if [ -f "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" ]; then
( . "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" )
ret=$?
fi
local shell="$(command -v bash)" local shell="$(command -v bash)"
for i in $(grep -s "^/etc/init.d/" "$root$filelist"); do for i in $(grep -s "^/etc/init.d/" "$root$filelist"); do
if [ -n "$root" ]; then if [ -n "$root" ]; then
@ -314,13 +331,19 @@ find_mtd_part() {
} }
find_mmc_part() { find_mmc_part() {
local DEVNAME PARTNAME local DEVNAME PARTNAME ROOTDEV
if grep -q "$1" /proc/mtd; then if grep -q "$1" /proc/mtd; then
echo "" && return 0 echo "" && return 0
fi fi
for DEVNAME in /sys/block/mmcblk*/mmcblk*p*; do if [ -n "$2" ]; then
ROOTDEV="$2"
else
ROOTDEV="mmcblk*"
fi
for DEVNAME in /sys/block/$ROOTDEV/mmcblk*p*; do
PARTNAME="$(grep PARTNAME ${DEVNAME}/uevent | cut -f2 -d'=')" PARTNAME="$(grep PARTNAME ${DEVNAME}/uevent | cut -f2 -d'=')"
[ "$PARTNAME" = "$1" ] && echo "/dev/$(basename $DEVNAME)" && return 0 [ "$PARTNAME" = "$1" ] && echo "/dev/$(basename $DEVNAME)" && return 0
done done
@ -348,7 +371,7 @@ group_add_next() {
return return
fi fi
gids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/group) gids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/group)
gid=65536 gid=32768
while echo "$gids" | grep -q "^$gid$"; do while echo "$gids" | grep -q "^$gid$"; do
gid=$((gid + 1)) gid=$((gid + 1))
done done
@ -363,6 +386,9 @@ group_add_user() {
echo "$grp" | grep -q ":$" && delim="" echo "$grp" | grep -q ":$" && delim=""
[ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd [ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd
sed -i "s/$grp/$grp$delim$2/g" ${IPKG_INSTROOT}/etc/group sed -i "s/$grp/$grp$delim$2/g" ${IPKG_INSTROOT}/etc/group
if [ -z "$IPKG_INSTROOT" ] && [ -x /usr/sbin/selinuxenabled ] && selinuxenabled; then
restorecon /etc/group
fi
[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd [ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd
} }
@ -376,7 +402,7 @@ user_add() {
local rc local rc
[ -z "$uid" ] && { [ -z "$uid" ] && {
uids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/passwd) uids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/passwd)
uid=65536 uid=32768
while echo "$uids" | grep -q "^$uid$"; do while echo "$uids" | grep -q "^$uid$"; do
uid=$((uid + 1)) uid=$((uid + 1))
done done