Я попытался воспроизвести эту проблему, но в моем случае загрузка архива кистей и извлечение его в нужное место сработало нормально.
Поэтому я думаю, что ответ на вопрос требует некоторой дополнительной информации. У меня пока недостаточно репутации, чтобы комментировать, поэтому я пишу это как ответ, хотя в первую очередь прошу дополнительную информацию.
Можешь попробовать
sudo chown -R $(whoami):users ~/snap/gimp/
chmod -R u+r ~/snap/gimp
, чтобы убедиться, что каталог принадлежит вам и что у вас есть права на чтение содержащихся в нем файлов, но я думаю, что это плохая идея. Я бы не стал рекурсивно переопределять разрешения по умолчанию для всего каталога, как это делается с помощью вышеупомянутой команды, а проверил бы разрешения и права, добавленные к конкретным файлам :
.ls -la /home/mycrap/snap/gimp/227/.config/GIMP/2.10/brushes/bolts1_HMS.abr
Это должно быть что-то вроде
-rw-r--r-- 1 [YOUR USER NAME] users
особ. имеют права чтения, предоставленные пользователю, группе и другим.
Поэтому я был бы признателен, если бы вы предоставили вывод
ls -la /home/mycrap/snap/gimp/227/.config/GIMP/2.10/brushes/bolts1_HMS.abr
и, возможно, также информацию о пользователе, запустившем gimp через
ps aux | grep gimp
Надеюсь, я никоим образом не оскорбил вас, попросив перепроверить разрешения, трудно угадать уровень опыта, и, поскольку это кажется прямой -проблемой прямого разрешения, я думаю, что лучше всего двойная -проверка.
Если вы хотите узнать, что текущий процесс имеет один из своих реальных gid, эффективный gid или любой дополнительный gid, совпадающий с именем данной группы, в системе GNU вы можете сделать:
if
gid=$(set -o pipefail; getent -- group "$group" | cut -d: -f3) &&
id -G | grep -qwe "$gid"
then
printf '%s\n' "current process credentials include $group's id ($gid)"
fi
Или сperl
:
perl -se 'if (@g = getgrnam($group)) {
for (split " ", $)) {exit if $_ == $g[2]}
}
exit 1' -- -group="$group"
Чтобы проверить, что данный $user
указан как член данной группы или что его первичный gid соответствует идентификатору $group
, вы должны сделать то же самое, но с id -G -- "$user"
вместо id -G
, но он может сказать, что $user
является членом $group
, даже если они не указаны как один из его членов, если они являются членами другой группы с таким же gid.
Помните, что в базах данных passwd
и group
ключ является именем пользователя/группы, а не идентификатором, и несколько пользователей/групп могут иметь один и тот же идентификатор. Таким образом, подходы, которые сначала работают путем преобразования id в имя и сравнения, в общем случае неверны (, хотя в наши дни несколько пользователей редко используют один и тот же uid и еще реже несколько групп используют один и тот же gid ).