userf="${f/"$subsession_dir"/$apps_rwdir}"
# Check if permissions are correct
- usergroup=$(stat --format '%U:%G:%A' "$f")
- user=$(echo "$usergroup" | cut -d: -f1)
- group=$(echo "$usergroup" | cut -d: -f2)
- u_usergroup=$(stat --format '%U:%G:%A' "$userf")
- u_user=$(echo "$u_usergroup" | cut -d: -f1)
- u_group=$(echo "$u_usergroup" | cut -d: -f2)
- verbose_echo "subsession file/dir = $f; home file/dir = $userf"
- verbose_echo "subsession file/dir [user, group] = [$user, $group], home dir file/dir [user, group] = [$u_user, $u_group]"
-
- if [ "$user" != "$u_user" ] || [ "$group" != "$u_group" ]; then
+ usergroupperms=$(stat --format '%U:%G:%A' "$f")
+ user=$(echo "$usergroupperms" | cut -d: -f1)
+ group=$(echo "$usergroupperms" | cut -d: -f2)
+ perms=$(echo "$usergroupperms" | cut -d: -f3)
+ u_user=$TESTUSER
+ u_group="users"
+ u_perms="drwxr-xr-x"
+ if [ -L "$f" ]; then
+ u_perms="lrwxrwxrwx"
+ else
+ prefix_to_remove="$skeldir/"
+ prefix_removed_f="${templf/#"$prefix_to_remove"}"
+ first_level=$(echo "$prefix_removed_f" | cut -d/ -f1)
+ second_level=$(echo "$prefix_removed_f" | cut -d/ -f2)
+ third_level=$(echo "$prefix_removed_f" | cut -d/ -f3)
+
+ if [ "$first_level" == ".shared" ]; then
+ dir_to_check="$third_level"
+ else
+ dir_to_check="$second_level"
+ fi
+
+ if [ "$dir_to_check" == "cache" ] || [ "$dir_to_check" == "data" ]; then
+ u_group="system_share"
+ u_perms="drwxrwsr-x"
+ fi
+ fi
+
+ # N.B.: When I was performing tests on RPi4, I encountered
+ # an infamous exception to the above scheme of granting permissions.
+ # `xwalk-service` was the one the has the `rwxrwxr-x` permissions set,
+ # while all other home app directories followed the `rwxr-xr-x` scheme.
+ # This won't break the test, but it's good to keep that in mind.
+ if [ "$user" != "$u_user" ] || [ "$group" != "$u_group" ] || [ "$perms" != "$u_perms" ]; then
echo "$f: incorrect permissions set!"
remove_test_users false
exit 1