Mam Uruchom agenta skonfigurowany do uruchomienia pliku .plist na przykład: /Library/LaunchAgent/foo.plist
. Wewnątrz tego .plist jest ustawiony do działania podczas LoginWindow
i Aqua
.
Gdy próbuję uruchomić komputer i przejść do ekranu logowania, ten plist powinien się uruchomić, ale zamiast tego wyświetla następujący błąd (w konsoli):
launchctl: Wątpliwa własność pliku (pomijanie): /Library/LaunchAgents/foo.plist
Kiedy próbuję zalogować się na konto inne niż admin, pojawia się dokładnie ten sam komunikat o błędzie. Kiedy próbuję zalogować się przy użyciu konta administratora, działa dobrze.
Będę szczery, nie wiem wiele o przywilejach i uprawnieniach systemu Mac OS X.
Aby utworzyć plik, otworzyłem go w górę emacs
, a sudo
na koncie administratora (np za pomocą su
polecenia od innego konta nie ma przywileje sudo), a następnie zapisany.
Którego konta muszę użyć do utworzenia pliku, aby działał on dla wszystkich użytkowników?
Czy muszę używać polecenia sudo?
Czy muszę zmienić uprawnienia do pliku (np. Używać chmod
)?
Czy istnieje prosty sposób na przejęcie istniejącego pliku i zmianę jego własności zamiast konieczności ponownego tworzenia pliku?
Czy ktoś mógłby wyjaśnić, dlaczego występuje ten błąd?
źródło
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
-F
).Odpowiedzi:
Jeśli plist jest własnością użytkownika root i może być zapisywany przez użytkownika innego niż root, jest to problem z bezpieczeństwem.
Możesz zmienić właściciela, aby zrootować
sudo chown root <filename>
i zmienić uprawnienia za pomocąsudo chmod 644 <filename>
(4 dla dostępu do odczytu, 2 dla dostępu do zapisu, 1 dla dostępu do wykonania, dodane. Pierwszy numer jest dla właściciela, drugi dla grupy, trzeci dla grupy każdy.)źródło
launchctl
. Plik utworzyłem jako mój normalny użytkownik i korzystałem z niegosudo
. Stąd błąd. Ponieważ root nie jest właścicielem pliku, Nosudo
nie było potrzebne. Uciekłem bezsudo
i wszystko działało dobrze.Z opisu komendy launchctl (1) manpage
load
:launchctl ma kilka komunikatów „Wątpliwe…”. Launchd kod do wersji 10.6.7 (na przykład) ma trzy takie wiadomości w swoich
launchctl.c
(patrz funkcjapath_goodness_check
).Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
Aby uniknąć tych wiadomości, ścieżką musi być (# 3) zwykły plik lub katalog 1 (lub dowiązanie symboliczne do jednego), które jest (# 1) własnością użytkownika root lub wywołującego użytkownika i (# 2) nie jest „grupą” ani „innym” ”Do zapisu (tj
chmod go-w
.).1 Brak nazwanych potoków, blokowych / znakowych węzłów urządzeń specjalnych, gniazd domeny lokalnej itp.
Twój plik jest prawdopodobnie własnością administratora, ponieważ mówisz, że nie otrzymujesz wiadomości podczas logowania jako ten użytkownik (w takim przypadku nazwa ścieżki jest własnością wywołującego użytkownika).
Aby nazwa ścieżki działała dla innych użytkowników, powinna być własnością root.
Aby to zorganizować, wykonaj:
źródło
Dzięki za odpowiedź (zmiana właściciela na rootowanie) - to wszystko, czego potrzebowałem.
Aby uczynić to trochę więcej niż postem „ja też” ... Dotarłem tutaj skomplikowaną ścieżką: dostaję błędy „Ten interfejs API może być używany tylko przez proces działający w ramach sesji Aqua” dla programu uruchamiającego. Poszukiwanie odpowiedzi na to pytanie doprowadziło mnie do noty Apple o demonach i agentach, która wyjaśniła, jak rozwiązać błąd „sesji Aqua”, ale pozostawiły mnie problemy z „wątpliwą własnością”. W ten sposób dotarłem tutaj, gdzie mój ostatni problem został rozwiązany.
Być może dodanie tego wszystkiego do tej dyskusji spowoduje, że jakaś wyszukiwarka połączy tę stronę z jednym z poprzedzających problemów, oszczędzając w ten sposób przyszłemu poszukiwaczowi przygód trochę czasu.
źródło
dla pliku w ~ / Library / LaunchAgent, którego właścicielem jest użytkownik, a nie root, nie sudo, jeśli musisz zmienić właściciela, ponieważ ładujesz go od użytkownika root
źródło
Tak się dzieje, gdy ludzie nie wiedzą, jak to
sudo
działa. Aby wyłączyć usługi znajdujące się na plikach należących do użytkownika, wystarczy zadzwonićlaunchtl
bezsudo
.źródło