Вопрос или проблема
У меня возникла ошибка, которая является причиной многих ошибок с snap, которые я получаю. Когда я выполняю:
$ systemctl status display-manager
Получаю следующий текст:
gkr-pam: unable to locate daemon control file
gkr-pam: stashed password to try later in open session
pam_unix(gdm-password:session): session opened for user jhon(uid=1000) by (uid=0)
pam_systemd(gdm-password:session): Runtime directory '/run/user/1000' is not owned by UID 1000, as it should
pam_systemd(gdm-password:session): Not setting $XDG_RUNTIME_DIR, as the directory is not in order.
gkr-pam: gnome-keyring-daemon started properly and unlocked keyring
Gdm: process -888 was already dead.r
Эта строка сообщает, что $XDG_RUNTIME_DIR не был установлен. Я подозреваю, что это причина проблем с snap, таких как невозможность открыть Firefox и получение сообщения:
cmd_run.go:1055: WARNING: cannot start document portal: Expected portal at "run/user/1000/doc", got "/home/pablo/.cache/doc"
/user.slice/user-1000.slice/session-2.scope is not a snap cgroup
Даже если я использую chmod, это не работает. Помогите, пожалуйста!
Кажется, что вы потеряли право собственности на папку snap или, возможно, на всю домашнюю папку.
В вашей домашней папке, запустив ls -l
, у вас есть два столбца, указывающих владельца и группу, назначенную каждому элементу. Ошибка, которую вы описываете, возникает, когда ваша основная группа отличается от той, которая назначена домашней папке.
Прежде всего, убедитесь, что у вас правильная группа по умолчанию.
Запустив команду id
, вы должны увидеть что-то вроде uid=1000(USER) gid=1000(GROUP)
. Это означает, что пользовать USER
имеет группу GROUP
в качестве основной. Если группа не по умолчанию, измените её с помощью команды sudo usermod -g GROUP USER
(заменяя GROUP и USER на нужную вам основную группу и вашего пользователя)
Теперь, cd /home
, а затем выполните chown -R USER:GROUP HOME_FOLDER/
(заменяя USER и GROUP как прежде, а также HOME_FOLDER на вашу домашнюю папку).
Ответ или решение
Проблема, с которой вы столкнулись, связана с несоответствием прав доступа и владельца для каталога /run/user/1000
, который используется системой для временного хранения данных пользователей. Это может привести к множеству ошибок, в том числе связанных с приложением Snap, таких как невозможность открытия приложений или нарушенная работа документационного портала.
Теоретическая часть
Давайте начнем с того, что разберемся, как работает данный механизм. Каталог /run/user/1000
— это часть системы временных файловых систем Linux, которые обрабатываются в памяти, чтобы обеспечить более быструю работу по сравнению с файлами, сохраняемыми на диске. Каждому пользователю назначается отдельный подкаталог в /run/user
, обычно форматированный как /run/user/<UID>
, где UID — это уникальный идентификатор пользователя.
Когда пользователь входит в систему, PAM-система (Pluggable Authentication Modules) выделяет временный каталог для этого пользователя и устанавливает прав доступа, а также идентичность владельца (UID и GID, соответствующие пользователю). Это важно для динамической переменной окружения $XDG_RUNTIME_DIR
, которая указывает на соответствующий каталог в /run/user/<UID>
, что позволяет приложениям сохранять сессии и временные файлы.
Если права доступа или владельцы установлены неправильно, система не сможет подтвердить права на использование этого каталога, что помешает нормальному функционированию приложений, таких как Snap.
Пример ситуации
При проверке статуса службы дисплейного менеджера через systemctl
, вы указываете, что получаете следующие сообщения:
pam_systemd(gdm-password:session): Runtime directory '/run/user/1000' is not owned by UID 1000, as it should
pam_systemd(gdm-password:session): Not setting $XDG_RUNTIME_DIR, as the directory is not in order.
Это говорит о том, что система не может установить переменную $XDG_RUNTIME_DIR
, потому что обнаружила неправильную владельческую идентичность для временного каталога. Например, если кто-то изменил владельца или группу для каталога /run/user/1000
, это вызовет такую проблему.
Применение на практике
Чтобы устранить проблему, выполните следующие шаги:
-
Проверьте текущее состояние и правильность прав:
- Используйте команду
ls -ld /run/user/1000
для проверки текущих прав и владельцев каталога. - Убедитесь, что права установленному пользователю (должны быть
rwx------
или д.р.), и владельцем устанавливается текущий пользователь с UID 1000.
- Используйте команду
-
Исправьте владельца и права, если они неверны:
- Если владельцы или права действительно отличаются, используйте команду
sudo chown 1000:1000 /run/user/1000
для корректировки владельцев. - Установите правильные права с помощью команды
sudo chmod 700 /run/user/1000
.
- Если владельцы или права действительно отличаются, используйте команду
-
Проверьте вашу домашнюю директорию:
- Используйте команду
id
, чтобы увидеть ваши текущие UID и GID. - Зайдите в вашу домашнюю папку с командой
cd ~
и посмотрите все файлы и папки с помощьюls -l
. Убедитесь, что все элементы принадлежат вам.
- Используйте команду
-
Измените владельцев и группу для всей домашней директории:
- Если владельцы не совпадают, выполните команду
sudo chown -R 1000:1000 /home/jhon/
, чтобы рекурсивно установить правильного владельца для всех файлов в домашней директории.
- Если владельцы не совпадают, выполните команду
-
Сбросьте сессию и перезапустите систему:
- Выйдите из системы и снова войдите, чтобы изменения вступили в силу.
- Перезапустите компьютер, чтобы убедиться, что все временные каталоги и сессии были обновлены.
Эти шаги должны разрешить проблему с неправильно установленной переменной $XDG_RUNTIME_DIR
и устранить ошибки, связанные с Snap, такие как невозможность открыть Firefox и другие программы. Всегда помните, что изменения прав доступа и владельца должны производиться с осторожностью, чтобы избежать нарушения работы других частей системы.