У меня есть Launch агент настроен для запуска .plist файла, например: /Library/LaunchAgent/foo.plist
. Внутри этого .plist он настроен на запуск во время LoginWindow
и Aqua
.
Когда я пытаюсь запустить свой компьютер и попасть на экран входа в систему, этот список должен запуститься, но вместо этого выдает следующую ошибку (в консоли):
launchctl: сомнительное владение файлом (пропуск): /Library/LaunchAgents/foo.plist
Когда я пытаюсь войти в систему без учетной записи администратора, он выдает точно такое же сообщение об ошибке. Когда я пытаюсь войти с учетной записью администратора, он работает нормально.
Честно говоря, я не знаю много о привилегиях и разрешениях Mac OS X.
Чтобы создать файл, я открыл его в emacs
, с sudo
в учетной записи администратора (например , с помощью su
команды с другой учетной записи не имеет права Судо) и затем сохранить его.
Какую учетную запись мне нужно использовать для создания файла, чтобы он работал для всех пользователей?
Нужно ли использовать команду sudo?
Нужно ли менять права доступа к файлу (например, использовать chmod
)?
Есть ли простой способ взять существующий файл и изменить его владельца вместо того, чтобы создавать файл заново?
Может кто-нибудь объяснить, почему эта ошибка происходит?
источник
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
-F
).Ответы:
Если plist принадлежит пользователю root и доступен для записи не пользователю root, это проблема безопасности.
Вы можете изменить владельца на root с
sudo chown root <filename>
помощью прав доступаsudo chmod 644 <filename>
(4 для доступа на чтение, 2 для доступа на запись, 1 для доступа на выполнение, добавлено. Первый номер для владельца, второй для группы, третий для каждый.)источник
launchctl
. Я создал файл как мой обычный пользователь и выполнял сsudo
. Отсюда и ошибка. Поскольку root не является владельцем файла, нетsudo
необходимости не было. Я бежал без,sudo
и это работало нормально.Из launchctl (1) страницы руководства «s описание
load
подкоманды:В launchctl есть несколько «сомнительных…» сообщений. Запуск программ код 10.6.7 (к примеру) имеет три таких сообщений в его
launchctl.c
(см функцииpath_goodness_check
).Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
Чтобы избежать этих сообщений, путь должен быть (# 3) обычным файлом или каталогом 1 (или символической ссылкой на один), который (# 1) принадлежит пользователю root или вызывающему пользователю и (# 2) не «group» или «other» Записываемый (то есть
chmod go-w
).1 Нет именованных каналов, блочных / символьных узлов специальных устройств, локальных доменных сокетов и т. Д.
Ваш файл, вероятно, принадлежит пользователю с правами администратора, поскольку вы говорите, что не получаете сообщение при входе в систему от имени этого пользователя (в этом случае имя пути принадлежит вызывающему пользователю).
Чтобы имя пути работало для других пользователей, оно должно принадлежать пользователю root.
Для этого сделайте:
источник
Спасибо за ответ (смена владельца на root) - это все что мне нужно.
Чтобы сделать это немного больше, чем пост «Я тоже» ... Я попал сюда запутанным путем: я получал сообщения об ошибках «Этот API может использоваться только процессом, выполняющимся в сеансе Aqua» для launchdaemon. Поиск ответа на этот вопрос привел меня к техническому замечанию Apple по демонам и агентам, в котором объяснялось, как устранить ошибку «Aqua session», но у меня остались проблемы с «сомнительным владением». Вот как я попал сюда, где мой последний вопрос был решен.
Возможно, добавление всего этого к этому обсуждению заставит поисковую систему связать эту страницу с одной из предшествующих проблем, тем самым сэкономив время будущему искателю приключений.
источник
для файла в ~ / Library / LaunchAgent, принадлежащего пользователю, а не root, dont sudo, если вам нужно изменить владельца, так как вы загружаете его от пользователя root
источник
Это то, что происходит, когда люди не знают, как
sudo
работает. Чтобы отключить службы, которые находятся в файлах, принадлежащих вашему пользователю, просто позвонитеlaunchtl
безsudo
.источник