Вопрос или проблема
Я получаю ошибку «Доступ запрещен» при запуске приложения snap, когда мой домашний каталог смонтирован на nfs-точке монтирования, которая не позволяет запись от имени root. Это не необычная конфигурация, поэтому я считаю это ошибкой.
Сообщение об ошибке:
не удалось создать каталог пользовательских данных: /home/tcumming/snap/vlc/4: Доступ запрещен
Та же проблема возникла и с ubuntu 16.
Некоторая дополнительная информация по запросу:
Используя “Ubuntu Software”, я устанавливаю приложение snap (например, vlc). Когда я пытаюсь запустить его (из командной строки), я получаю вышеупомянутое сообщение «Доступ запрещен».
Я только что переустановил Ubuntu на машине, поэтому с ОС ничего не делалось. Я сохранил свой uid:gid, чтобы смонтировать свою предыдущую nfs-долю.
Это не проблема с точкой монтирования или nfs. Наша точка монтирования не доступна для записи от root по соображениям безопасности.
Я полагаю, вопрос в том, стоит ли подавать отчет об ошибке? Каковы мои следующие шаги?
Я столкнулся с этим, потому что мой домашний каталог является символической ссылкой с /home/$USER
на другую точку монтирования. Я исправил это по предложению из когда /home находится где-то еще, snap не работает.
Короче говоря, вам нужно добавить ваш нестандартный домашний каталог в переменную HOMEDIRS
apparmor:
$ sudo dpkg-reconfigure apparmor
или: создайте файл в /etc/apparmor.d/tunables/home.d/
, который указывает на точку монтирования вашего домашнего каталога:
@{HOMEDIRS}+=/mnt/hdd/.home/
Затем, для надежности, вы должны удалить кэш apparmor и перезагрузить:
$ sudo rm -f /etc/apparmor.d/cache/* /var/cache/apparmor/snap.*
$ sudo reboot
То же самое происходит в Ubuntu 18.04.
Если домашний каталог пользователя не находится под монтированием /home
(или /
), то работать с snap
невозможно. Мой HOMEDIR был на другом локальном диске SSD, но поскольку он не был смонтирован в /home
, каждый пакет, установленный с помощью snap, терпел неудачу.
Поскольку Canonical переходит на поддержку snap, вам придется отказаться от таких приятных вещей, как HOMEDIR на других файловых системах, смонтированных по NFS и т.д.
Может быть, в будущем snap станет более гибким, но это не является приоритетом:
https://forum.snapcraft.io/t/how-can-i-use-snap-when-i-dont-use-home-user/3352/6
Временное решение сейчас – удалить snap
и устанавливать вещи из *.tar.gz
или из *.deb
пакетов.
Вы можете установить разрешения приложений Snap из Центра программного обеспечения.
Следующие шаги протестированы на Ubuntu 20.04 LTS:
- Откройте Программное обеспечение
- Выберите вкладку Установленные. Появится список установленного программного обеспечения.
- Выберите пакет snap, которому нужны повышенные разрешения.
- В детальном представлении нажмите кнопку ‘Разрешения’.
- Нажмите переключатель рядом с ‘Чтение/запись файлов на съемных устройствах’.
Этот метод работает для смонтированных жестких дисков.
Ссылки:
Приложения snap по умолчанию изолированы в песочнице для безопасности. Если вы хотите, чтобы приложения snap могли читать/записывать данные в вашем домашнем каталоге, вам следует установить их в классическом режиме. Попробуйте:
rclone install --classic vlc
Это должно заработать для вас.
Если вас беспокоит изоляция приложений, то вам стоит рассмотреть firejail.
Мы используем домен с ренеймингом, поэтому наш путь дом у нас не /home, а /home/MYDOMAINCOMPANY/. Я исправил это, отредактировав /etc/apparmor.d/tunables/home.d/ubuntu с этой строкой:
@{HOMEDIRS}+=/home/MYDOMAINCOMPANY/
После сохранения просто перезапустите некоторые службы:
systemctl restart apparmor.service snapd.apparmor.service snapd.service snapd.socket
Обходное решение с apparmor не сработало для меня. То, что сработало, – это следующие шаги для моего текущего домашнего каталога “/opt/stack”…
mkdir -p /home/stack
редактировать /etc/fstab с "/opt/stack /home/stack none defaults,bind 0 0"
mount -a
“mount -a” сообщает, есть ли какие-либо проблемы с записями в fstab. После внесения изменений в fstab перезагрузка не требуется.
Я наткнулся на эту страницу AskUbuntu после получения ошибки “Доступ запрещен” (доступ к /media) при попытке открыть файл *.srt фильма, хранящегося на USB-накопителе. Необычно, я не нашел здесь действительно простого ответа, но затем я нашел это на странице Github Subsync…
sudo snap connect subsync:removable-media
Так что, если я снова окажусь здесь с той же основной проблемой, я смогу самостоятельно выяснить, как заменить subsync на [другой пакет установленный snap с той же проблемой].
Я не знаю, есть ли какие-либо альтернативы removable-media, которые также могут быть полезны. Но если кто-то знает, то здесь было бы хорошее место, чтобы разместить эту информацию – для меня, а возможно, и для других.
Все непривилегированные пользователи получали эту ошибку со всеми snap в Ubuntu 20.04. Добавление пользователей в группу adm решало проблему. Но это определенно не является решением. Есть идеи, почему приложения snap требуют этого?
Обновление:
Похоже, это было связано с моей конфигурацией. У меня следующие разрешения для /home:
drwxr-x--x 13 root adm 4096 Sep 1 14:12 /home
А это разрешения, например, для домашнего каталога пользователя:
drwxr-xr-x 7 kubetraining kubetraining 4096 Sep 1 16:39 /home/kubetraining
Очевидно, snap пытается перечислить /home, терпит неудачу и выдает ошибку. Но на самом деле он не должен пытаться перечислить что-либо в /home, так что это, похоже, ошибка.
Я столкнулся с той же проблемой на 20.04, пытаясь установить github cli (gh
) через snap для клонирования репозитория по ssh. В записи Ubuntu Software для gh мне нужно было включить ssh-keys: позволяет читать конфигурацию ssh пользователя и ключи
.
Также есть опция Доступ к файлам в вашей домашней папке
.
/tmp была символической ссылкой. Сделав /tmp не символической ссылкой, я исправил это для себя.
Я просто хотел оставить комментарий к ответу Фабиана де Бура, но у меня недостаточно репутации.
Его решение решило мою проблему, когда OpenSCAD не открывал файлы на другом диске. Так что такая проблема с ‘Доступ запрещен’ может возникнуть не только с домашним каталогом, находящимся в другом месте, но и с рабочим каталогом, находящимся в другом месте.
В любом случае, упомянутое решение работает.
не удается создать каталог пользовательских данных: /home/tcumming/snap/vlc/4: Доступ запрещен
Если вы получаете эту ошибку только у ldap пользователя, у другого стандартного пользователя snap работает нормально.
Тогда это поможет вам просто запустить.
$ sudo dpkg-reconfigure apparmor
И добавьте ваш ldap домашний каталог, в моем случае это /home/users/
Это решение работает для меня очень хорошо.
Ответ или решение
Ошибка "Permission Denied" при запуске приложений, установленных в виде snap-пакетов на Ubuntu 17.04
Если вы столкнулись с ошибкой "Permission denied", когда пытаетесь запустить приложение, установленное в виде snap-пакета, это может быть связано с конфигурацией вашей системы, особенно если ваша домашняя директория смонтирована на NFS-маршруте, который не позволяет запись от имени root. Эта ситуация может происходить также в Ubuntu 16.04 и более поздних версиях, таких как 18.04, и требует понимания несколько сложных аспектов работы snap и AppArmor.
Понимание проблемы
При установке snap-приложений, таких как VLC, система пытается создать директорию данных пользователя в вашем домашнем каталоге следующим образом:
/home/tcumming/snap/vlc/4
Ошибка "Permission denied" указывает на то, что snap не может создать эту директорию, что, в свою очередь, затрудняет работу приложения. Причина может заключаться в ограничениях, накладываемых системой на доступ к директориям, которые не находятся в стандартных путях, таких как /home
.
Основные шаги для решения проблемы
-
Проверка конфигурации Samba/NFS: Убедитесь, что у вас есть необходимые права доступа к вашему NFS-маршруту. Если вы не можете выполнить запись, это может быть основной причиной возникновения ошибки.
-
Проверка настроек AppArmor:
- Snaps используют AppArmor для управления доступом и безопасности. Вам может понадобиться добавить путь вашей нестандартной домашней директории в переменную
HOMEDIRS
для AppArmor. - Выполните следующую команду, чтобы переустановить настройки AppArmor:
sudo dpkg-reconfigure apparmor
- Либо создайте файл в
/etc/apparmor.d/tunables/home.d/
с содержимым, указанным ниже:@{HOMEDIRS}+=/mnt/hdd/.home/
- Snaps используют AppArmor для управления доступом и безопасности. Вам может понадобиться добавить путь вашей нестандартной домашней директории в переменную
-
Очистка кеша AppArmor:
- После внесения изменений необходимо удалить кеш AppArmor и перезагрузить систему:
sudo rm -f /etc/apparmor.d/cache/* /var/cache/apparmor/snap.* sudo reboot
- После внесения изменений необходимо удалить кеш AppArmor и перезагрузить систему:
-
Проверка настройки домашней директории:
- Если ваша домашняя директория не находится под
/home
, возможно, вам придется смонтировать её над стандартным местом. Попробуйте выполнить:mkdir -p /home/stack sudo edit /etc/fstab с добавлением строки: "/opt/stack /home/stack none defaults,bind 0 0" mount -a
- Если ваша домашняя директория не находится под
-
Изменение прав доступа к
/home
(если это применимо):- Убедитесь, что права доступа к каталогу
/home
позволяют пользователям видеть свои каталоги:drwxr-xr-x 7 username username 4096 Sep 1 16:39 /home/username
- Убедитесь, что права доступа к каталогу
Альтернативные решения
Если указанные выше шаги не помогли, рассмотрите возможность установки приложений вне snap. Это можно сделать, скачав .tar.gz
или .deb
файлы:
- Установка приложений из стандартных репозиториев:
sudo apt install application-name
Также рекомендуется следить за обновлениями snap и AppArmor, так как Canonical активно работает над повышением совместимости с нестандартными конфигурациями.
Заключение
Если после всех действий проблема сохраняется, возможно, вам стоит подать отчет об ошибке в систему отслеживания ошибок Ubuntu или snap, так как это может быть неисправленный баг. Ваша ситуация — распространенная проблема среди пользователей, и постоянная поддержка от сообщества может помочь улучшить работу snap-пакетов с нестандартными конфигурациями.
Запоминайте, что snap приложения имеют свои ограничения, и если ваша текущая настройка не позволяет им функционировать должным образом, то разумнее использовать альтернативные способы установки программного обеспечения на вашей системе.