summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/misc-functions.sh25
1 files changed, 19 insertions, 6 deletions
diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
index d1b8c5eb3..d293fd769 100755
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@ -429,15 +429,28 @@ preinst_sfperms() {
fi
# Smart FileSystem Permissions
if hasq sfperms $FEATURES; then
+ local i
for i in $(find "${D}" -type f -perm -4000); do
- ebegin ">>> SetUID: [chmod go-r] $i "
- chmod go-r "$i"
- eend $?
+ if [ -n "$(find "$i" -perm -2000)" ] ; then
+ ebegin ">>> SetUID and SetGID: [chmod o-r] /${i#${D}}"
+ chmod o-r "$i"
+ eend $?
+ else
+ ebegin ">>> SetUID: [chmod go-r] /${i#${D}}"
+ chmod go-r "$i"
+ eend $?
+ fi
done
for i in $(find "${D}" -type f -perm -2000); do
- ebegin ">>> SetGID: [chmod o-r] $i "
- chmod o-r "$i"
- eend $?
+ if [ -n "$(find "$i" -perm -4000)" ] ; then
+ # This case is already handled
+ # by the SetUID check above.
+ true
+ else
+ ebegin ">>> SetGID: [chmod o-r] /${i#${D}}"
+ chmod o-r "$i"
+ eend $?
+ fi
done
fi
}