Başlatma Aracısı .plist dosyamı çalıştırırken neden "şüpheli dosya sahipliği" hatası alıyorum?


54

Bir Başlatma Ajan örneğin bir .plist dosyasını çalıştırmak için yapılandırılmış: /Library/LaunchAgent/foo.plist. Bu .plist'in içinde LoginWindowve sırasında çalışacak şekilde ayarlanmıştır Aqua.

Bilgisayarımı başlatmaya çalışıp giriş ekranına geçmeye çalıştığımda, bu plist çalışmalı ama bunun yerine (konsolda) aşağıdaki hatayı veriyor:

launchctl: Dosyaya şüpheli sahiplik (atlama): /Library/LaunchAgents/foo.plist

Yönetici olmayan bir hesapta oturum açmaya çalıştığımda, aynı hata mesajını veriyor. Bir yönetici hesabıyla giriş yapmaya çalıştığımda, iyi çalışıyor.

Dürüst olacağım, Mac OS X ayrıcalıkları ve izinleri hakkında fazla bir şey bilmiyorum.

Dosyası oluşturmak için, ben bunu açtı emacsile sudo(kullanarak örneğin yönetici hesabına susudo ayrıcalıklara sahip değil diğer hesapta beri komutu) ve ardından kurtardı.

Tüm kullanıcılar için çalışabilmesi için dosyayı oluşturmak için hangi hesabı kullanmam gerekiyor?
Sudo komutunu kullanmam gerekir mi?
Dosya izinlerini değiştirmem gerekiyor chmodmu (örneğin kullanım )?
Mevcut bir dosyayı alıp dosyayı yeniden oluşturmak yerine sahipliğini değiştirmek için kolay bir yol var mı?
Birisi lütfen bu hatanın neden olduğunu açıklayabilir mi?


Ls - l /Library/LaunchAgent/foo.plist için ne verir
user151019

1
@Mark: aşağıdakileri verir:-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
Hassas

Yüklemeyi zorlamak da mümkündür ( -F).
kenorb

Yanıtlar:


51

Bir yalvarma kökündeyse ve kök dışında bir kullanıcı tarafından yazılabilirse, bu bir güvenlik sorunudur.

Sahibini, ile root olarak sudo chown root <filename>değiştirebilir ve izinleri sudo chmod 644 <filename>(okuma erişimi için 4, yazma erişimi için 2, erişim yürütme için 1, eklenmiş) ile değiştirebilirsiniz. herkes.)


Bu çalışıyor. Sadece sahibini neden root olarak değiştirmem gerektiğiyle ilgili olarak kafam karıştı. LaunchAgents için kullanılan kullanıcı root mu?
Hisse

1
Evet bencede.
Michiel de Mare

1
Bunun daha eski bir yayın olduğunu biliyorum ama bu harika bir cevap! Apple'ın önerdiği bir düzeltmeyi denemek için /system/library/launchdaemons/com.apple.mdnsresponder üzerindeki izinleri değiştirdim, ancak daha sonra yüklemeye çalışırken yukarıda belirtilen hatayı alırdım. Sahibimi ve izinleri yukarıda açıklandığı şekilde değiştirmek, internet bağlantımı geri almanın tek yoluydu. Teşekkürler!

Aynı şeyle şimdi karşı karşıya ve çözüldü. Dosyanın sahibinin çok çağırdığını düşündüm launchctl. Dosyayı normal kullanıcım olarak oluşturdum ve uygulamıştım sudo. Dolayısıyla hata. Kök, dosyanın sahibi olmadığı için, Hayır sudogerekli değildi. Onsuz koştum sudove iyi çalıştı.
Bibhas

14

Kaynaktan launchctl (1) manpage ‘s bilgi loadalt komutuyla:

Kullanıcı başına yapılandırma dosyalarının (LaunchAgents) bunları yükleyen kullanıcının sahibi olması gerektiğini unutmayın. Tüm sistem çapındaki ödemeler (LaunchDaemons) root aittir. Yapılandırma dosyaları grup veya dünya tarafından yazılabilir olmamalıdır. Bu kısıtlamalar, güvenlik nedenleriyle yerine getirilmiştir, çünkü başlatılan bir yapılandırma dosyasına yazılabilirliğin sağlanması, hangi çalıştırılabilir dosyanın başlatılacağını belirlemenizi sağlar.

launchctl birkaç “ Dubious …” mesajına sahiptir. Launchd (örneğin) 10.6.7 kodu onun üç tür mesajları alır launchctl.c(fonksiyonuna bakınız 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>

Bu mesajlardan kaçınmak için, bir yol adının (# 3) kök veya çağıran kullanıcının sahip olduğu (# 1) normal bir dosya veya dizin 1 (veya birine eş anlamlı) ve (# 2) “grup” veya “diğer” olmamalıdır ”Yazılabilir (yani chmod go-w).

1 Adlandırılmış yöneltme, blok / karakter özel aygıt düğümü, yerel etki alanı soketi, vb.


Dosyanız büyük olasılıkla yönetici kullanıcıya aittir, çünkü siz bu kullanıcı olarak giriş yaparken mesaj alamadınız.
Yol isminin diğer kullanıcılar için çalışmasını sağlamak için root aittir.

Bunu düzenlemek için şunları yapın:

sudo chown root /Library/LaunchAgent/foo.plist

1

Cevabınız için teşekkürler (sahibini root olarak değiştiriyoruz) - tek ihtiyacım olan buydu.

Bunu 'benden de' bir yayından biraz daha fazla yapmak için ... Buraya yoğun bir yoldan geldim: "Bu API yalnızca Aqua oturumunda çalışan bir işlem tarafından kullanılabilir" hatalarını bir fırlatma töreni için alıyordum. Bunun cevabını aramak beni Apple'ın “Aqua session” hatasını nasıl çözeceğimi açıklayan servis ve ajanda tekniğine yönlendirdi , ancak bu beni 'şüpheli mülkiyet' sorunlarına bıraktı. Buraya geldim, son sorunum çözüldü.

Belki de bunların hepsini bu tartışmaya eklemek bazı arama motorlarının bu sayfayı öncül sorunlardan birine bağlamasına neden olacak, böylece bir süre gelecek maceracılara zaman kazandıracaktır.


Not, bu bir cevaptan çok bir yorum olmalıdır.
studgeek

1
Yorum yapardım, ancak itibar puanım yeterince yüksek değildi. (Düşük bir üne sahip ancak 'yorum yapmayan biri' cevap verebilir 'gibi görünmüyor mu?)
Matt Strange

-2

~ / Library / LaunchAgent dosyasına ait ve root'a ait olmayan kullanıcı için, root kullanıcısından yüklediğinizden sahipliğini değiştirmek zorunda kalırsanız


-3

İnsanlar nasıl sudoçalıştığını bilmediğinde olan budur . Kullanıcınıza ait dosyalarda bulunan hizmetleri devre dışı bırakmak için sadece aramanız launchtlyeterlidir sudo.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.