Skip to content

Commit b5c0334

Browse files
committed
improve check permissions script performance (@Siggi)
1 parent 0a03e12 commit b5c0334

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

shared/checks/check-permissions-ownership.sh

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,29 @@ EXPECTED_GID=$3
2929
error_flag=0
3030

3131
# Check ownership
32-
while IFS= read -r -d '' file; do
33-
uid=$(stat -c "%u" "$file")
34-
gid=$(stat -c "%g" "$file")
32+
while IFS= read -r -d '' entry; do
33+
uid=${entry%% *}
34+
remainder=${entry#* }
35+
gid=${remainder%% *}
3536

3637
if [[ "$uid" -ne "$EXPECTED_UID" || "$gid" -ne "$EXPECTED_GID" ]]; then
38+
file=${remainder#* }
3739
echo "Ownership mismatch: $file (Expected: $EXPECTED_UID:$EXPECTED_GID, Found: $uid:$gid)"
3840
error_flag=1
3941
fi
40-
done < <(find "$DIRECTORY" -print0)
42+
done < <(find "$DIRECTORY" -printf "%U %G %p\0")
4143

4244
# Check permissions
43-
while IFS= read -r -d '' file; do
44-
perms=$(stat -c "%A" "$file")
45-
owner_perms="${perms:1:3}"
46-
group_perms="${perms:4:3}"
45+
while IFS= read -r -d '' entry; do
46+
owner_perms="${entry:1:3}"
47+
group_perms="${entry:4:3}"
4748

4849
if [[ "$owner_perms" != "$group_perms" ]]; then
50+
file="${entry:11}"
4951
echo "Permission mismatch: $file (Owner: $owner_perms, Group: $group_perms)"
5052
error_flag=1
5153
fi
52-
done < <(find "$DIRECTORY" -print0)
54+
done < <(find "$DIRECTORY" -printf "%M %p\0")
5355

5456
if [[ $error_flag -ne 0 ]]; then
5557
echo "Permission and Ownership checks failed for $DIRECTORY!"

0 commit comments

Comments
 (0)