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

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

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

  

launchctl: сомнительная собственность на файл (пропуск): /Library/LaunchAgents/foo.plist

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

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

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

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

54 голоса | спросил Senseful 18 +04002010-10-18T02:00:40+04:00312010bEurope/MoscowMon, 18 Oct 2010 02:00:40 +0400 2010, 02:00:40

5 ответов


51

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

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

ответил Michiel de Mare 18 +04002010-10-18T18:49:48+04:00312010bEurope/MoscowMon, 18 Oct 2010 18:49:48 +0400 2010, 18:49:48
14

Из launchctl (1) manpage - описание подкоманды load:

  

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

launchctll содержит несколько сообщений «Незначительные». Код launchd для 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) принадлежит root или вызывающему пользователю и ( # 2), а не «групповой» или «другой» (т.е. chmod go-w).

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


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

Чтобы это сделать, выполните:

sudo chown root /Library/LaunchAgent/foo.plist
ответил Chris Johnsen 5 Mayam11 2011, 07:21:55
1

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

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

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

ответил Matt Strange 9 TueEurope/Moscow2014-12-09T00:30:22+03:00Europe/Moscow12bEurope/MoscowTue, 09 Dec 2014 00:30:22 +0300 2014, 00:30:22
-2

для файла в ~ /Library /LaunchAgent, принадлежащего пользователю, а не root dont sudo, если вам придется менять владельца, так как вы загружаете его от пользователя root

ответил radha 9 32011vEurope/Moscow11bEurope/MoscowWed, 09 Nov 2011 18:47:58 +0400 2011, 18:47:58
-3

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

ответил Maximo Pech 16 J000000Monday12 2012, 07:42:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132