Почему я получаю ошибку «сомнительного права собственности на файл», когда запуск агента запускает мой файл .plist?

apple.stackexchange https://apple.stackexchange.com/questions/3250

Вопрос

У меня есть запуск -агент, настроенный для запуска файла .plist, например: /Library/LaunchAgent/foo.plist. Анкет Внутри этого .plist он должен работать во время LoginWindow а также Aqua.

Когда я пытаюсь запустить свой компьютер и добраться до экрана входа в систему, этот plist должен работать, но вместо этого дает следующую ошибку (в консоли):

LaunchCtll: сомнительное право собственности в файле (Skining): /Library/launchagents/foo.plist

Когда я пытаюсь войти в учетную запись, не являющуюся админ, она дает точно такое же сообщение об ошибке. Когда я пытаюсь войти в систему с учетной записью администратора, она работает нормально.

Я буду честен, я не знаю много о привилегиях и разрешениях Mac OS X.

Чтобы создать файл, я открыл его в emacs, с sudo в учетной записи администратора (например, с помощью su Команда, так как в другой учетной записи нет привилегий SUDO), а затем сохранила ее.

Какую учетную запись мне нужно использовать для создания файла, чтобы он работал для всех пользователей?
Мне нужно использовать команду SUDO?
Нужно ли изменить разрешения на файл (например, использование chmod)?
Есть ли простой способ взять существующий файл и изменить его право собственности, а не воссоздать файл?
Может ли кто -нибудь объяснить, почему происходит эта ошибка?

Это было полезно?

Решение

Если PLIST принадлежит root и записывается пользователем, отличным от Root, это проблема безопасности.

Вы можете изменить владельца на корни с sudo chown root <filename>, и изменить разрешения с sudo chmod 644 <filename> (4 для доступа к чтению, 2 для доступа к записи, 1 для доступа к выполнению, добавлено. Первый номер для владельца, второй для группы, третий для всех.)

Другие советы

От LaunchCtl (1) МанОписание load подкоманда:

Обратите внимание, что файлы конфигурации для каждого пользователя (запуск) должны принадлежать пользователю загружает их. Все общеобразовательные демоны (LaunchDaemons) должны принадлежать root. Файлы конфигурации не должны быть групповыми или всемирными. Эти ограничения действуют по соображениям безопасности, поскольку разрешение начиненность в файл конфигурации запуска позволяет указать, какой исполняемый файл будет запущен.

LaunchCtl имеет несколько сообщений «сомнительных…». А запуск код для 10.6.7 (например) имеет три таких сообщения в его launchctl.c (См. Функцию path_goodness_check).

  1. Dubious permissions on file (skipping): <pathname>
  2. Dubious ownership on file (skipping): <pathname>
  3. Dubious path. Not a regular file or directory (skipping): <pathname>

Чтобы избежать этих сообщений, путь должен быть (#3) обычный файл или каталог1 (или символа к одному), то есть (#1) принадлежит корне или призывающему пользователю и (#2) не «группировку» или «другие» записи (т.е. chmod go-w).

1Нет названных труб, блоков/символов, узлов специального устройства, локальных розетков домена и т. Д.


Ваш файл, вероятно, принадлежит пользователю администратора, поскольку вы говорите, что вы не получаете сообщение при входе в систему как этот пользователь (PathName принадлежит призыву пользователя в этом случае).
Чтобы PathName работало для других пользователей, оно должно принадлежать root.

Чтобы организовать это, сделай:

sudo chown root /Library/LaunchAgent/foo.plist

Спасибо за ответ (изменение владельца на корни) - это все, что мне было нужно.

Чтобы сделать это чуть больше, чем пост «я слишком» ... Я попал сюда по запутанному пути: я получал «Этот API может использоваться только процессом, работающим в рамках сеанса аква» для запуска. Поиск ответа на этот Технота Apple на демонах и агентах Что объясняет, как разрешить ошибку «Аква сеанс», но это оставило меня с проблемами «сомнительного владения». Вот как я попал сюда, где был решен мой последний выпуск.

Возможно, добавление всего этого к этому обсуждению приведет к тому, что некоторая поисковая система связала эту страницу с одной из проблем предшественников, тем самым сэкономит некоторое время будущего авантюриста.

Для файла в ~/library/launchagent, принадлежащий пользователю, а не root dont sudo, если вы это сделаете

Вот что происходит, когда люди не знают, как sudo работает. Чтобы отключить службы, которые находятся в файлах, принадлежащих вашему пользователю, просто звоните launchtl без sudo.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с apple.stackexchange
scroll top