в журнале указан отказ доступа для пользовательской службы — как найти причину и исправить

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

Журнал user-unit в Arch Linux сообщает Permission denied или EACCES. Причина может быть в доступе к исполняемому файлу, родительскому каталогу, переменной окружения, системном сокете или файлу с данными; права всей домашней папки менять нельзя.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и признаки
  3. Подробная диагностика и безопасные действия
  4. Как понять, что проблема устранена
  5. Что делать, если не помогло

#Симптом и границы применимости

Журнал user-unit в Arch Linux сообщает Permission denied или EACCES. Причина может быть в доступе к исполняемому файлу, родительскому каталогу, переменной окружения, системном сокете или файлу с данными; права всей домашней папки менять нельзя.

#Возможные причины и признаки

Возможная причинаКак узнатьЧто делать
Нет доступа к родительскому каталогуДля открытия файла требуются права прохода x на каждом каталоге.namei -l отмечает участок без x у пользователя.Исправить только конкретный каталог при согласовании владельца.
Неверный пользовательский unitСлужба работает под user manager, но путь или данные принадлежат root.В журнале Permission denied у файла в /var/lib или /run.Разместить пользовательские данные в доступном каталоге или назначить ACL.
Запрет со стороны sandbox systemdProtectHome, ReadWritePaths, PrivateTmp меняют доступность ресурсов внутри службы.Обычный cat работает, unit не видит путь.Проверить параметры sandbox до изменения файловых прав.

#Подробная диагностика и безопасные действия

  1. 1. Убедитесь, что это именно пользовательская службаПод обычной учётной записью, которая владеет службой, запустите команды с --user. При ошибке Failed to connect to bus проверьте, что вы вошли через действующий пользовательский сеанс, а не применяйте sudo к пользовательскому unit.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    systemctl --user status ИМЯ.service --no-pager
    systemctl --user is-enabled ИМЯ.service
  1. 2. Найдите строку отказа в журналеСмотрите последние записи только этого пользователя; укажите конкретный путь, который программа не смогла открыть, и код ошибки. Если отказа не видно, включите прикладной журнал программы, не меняя права наугад.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    journalctl --user -u ИМЯ.service -b --no-pager -n 100
  1. 3. Выясните, от кого и как запускается процессПрочитайте полный пользовательский unit: ExecStart, WorkingDirectory, EnvironmentFile и параметры защиты. Для user unit обычно User= не требуется, так как его уже запускает пользовательский менеджер.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    systemctl --user cat ИМЯ.service
    systemctl --user show ИМЯ.service -p User -p ExecStart -p WorkingDirectory -p ProtectHome
  1. 4. Проверьте проблемный файл по всей цепочкеПуть замените на точный путь из ошибки; namei показывает права родительских каталогов, stat — владельца и маску. Если ошибок нет, возможно, файл исчезает до запуска или доступ ограничен средствами sandbox.
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    namei -l /ПУТЬ/К/ФАЙЛУ
    stat -c "%U:%G %a %n" /ПУТЬ/К/ФАЙЛУ
  1. 5. Сверьте наличие доступа именно у нужного пользователяВ пользовательской сессии команда test -r сообщает 0 при чтении файла; для каталогов отдельно нужен x. Если данные в /var/lib системной службы, не открывайте их всему миру. Уточните необходимость доступа и согласуйте настройку ACL или групп.
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    test -r /ПУТЬ/К/ФАЙЛУ; printf "read_exit=%s\n" "$?"
    id
  1. 6. Исправьте только проверенную пользовательскую настройкуЕсли ошибка вызвана неверным WorkingDirectory или EnvironmentFile, отредактируйте свою копию unit через systemctl --user edit; после изменения сделайте daemon-reload. Отсутствующий файл создавайте только по документации приложения и с правильными правами, а не как пустую заглушку.
    Linux · Терминал (Bash)С осторожностью
    Изменение только своего пользовательского unit; сохранить исходный вариант для отката.
    systemctl --user edit ИМЯ.service
    systemctl --user daemon-reload
    systemctl --user cat ИМЯ.service

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. 7. Перезапустите и проверьте журналПовторный запуск проводите после исправления точного пути. Убедитесь не только в active, но и в том, что приложение читает данные; если ошибки остаются — верните изменение и соберите описание пути, ACL и защитных свойств unit.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)С осторожностью
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    systemctl --user restart ИМЯ.service
    systemctl --user status ИМЯ.service --no-pager
    journalctl --user -u ИМЯ.service -b --no-pager -n 40

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как понять, что проблема устранена

Повторите исходное действие, из-за которого возникла неисправность, и сверяйте не только код завершения команды, но и прикладной результат. Сохраните вывод последней диагностической команды и записи журнала до и после исправления. Если ошибка повторяется, верните только изменённую настройку из резервной копии и передайте специалисту точный симптом, имя программы/службы, версию системы и необходимые фрагменты журнала без паролей и закрытых ключей.

#Что делать, если не помогло

Не применяйте случайные советы для другого дистрибутива: в Arch Linux особенно опасны частичные обновления пакетов, а в Rocky Linux — отключение SELinux или неконтролируемый перезапуск системных служб. Остановитесь после неуспешного безопасного шага, зафиксируйте фактическое сообщение и вернитесь к соответствующей причине. Для загрузки, разделов диска и единственного удалённого подключения используйте резервную копию и локальную консоль.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.