Mengapa saya mendapatkan kesalahan "kepemilikan file yang meragukan" ketika Agen Peluncuran menjalankan file .plist saya?

54

Saya memiliki Agen Peluncuran dikonfigurasi untuk menjalankan file Plist misalnya: /Library/LaunchAgent/foo.plist. Di dalam .plist ini, sudah diatur untuk dijalankan selama LoginWindowdan Aqua.

Ketika saya mencoba untuk meluncurkan komputer saya dan masuk ke layar login, daftar ini harus dijalankan tetapi malah memberikan kesalahan berikut (di konsol):

launchctl: Kepemilikan yang meragukan pada file (melewatkan): /Library/LaunchAgents/foo.plist

Ketika saya mencoba masuk ke akun non-admin, itu memberikan pesan kesalahan yang sama persis. Ketika saya mencoba masuk dengan akun admin, itu berfungsi dengan baik.

Saya akan jujur, saya tidak tahu banyak tentang hak istimewa dan izin Mac OS X.

Untuk membuat file, saya membukanya emacs, dengan sudodi akun admin (mis. Dengan menggunakan superintah karena akun lain tidak memiliki hak sudo) dan kemudian menyimpannya.

Akun mana yang harus saya gunakan untuk membuat file sehingga berfungsi untuk semua pengguna?
Apakah saya perlu menggunakan perintah sudo?
Apakah saya perlu mengubah izin file (misalnya penggunaan chmod)?
Apakah ada cara mudah untuk mengambil file yang ada dan mengubah kepemilikannya daripada harus membuat ulang file?
Bisakah seseorang tolong jelaskan mengapa kesalahan ini terjadi?

Masuk akal
sumber
Apa yang diberikan oleh ls -l untuk
/Library/LaunchAgent/foo.plist
1
@ Mark: ini memberikan yang berikut:-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
Senseful
Dimungkinkan juga untuk memaksa memuat ( -F).
kenorb

Jawaban:

51

Jika sebuah plist dimiliki oleh root dan dapat ditulis oleh pengguna selain root, itu adalah masalah keamanan.

Anda dapat mengubah pemilik untuk di-root sudo chown root <filename>, dan mengubah izin dengan sudo chmod 644 <filename>(4 untuk akses baca, 2 untuk akses tulis, 1 untuk akses eksekusi, ditambahkan. Angka pertama adalah untuk pemilik, yang kedua untuk grup, yang ketiga untuk grup semua orang.)

Michiel de Mare
sumber
Ini bekerja. Saya hanya bingung mengapa saya harus mengubah pemilik untuk melakukan root. Apakah root pengguna yang digunakan untuk LaunchAgents?
Masuk akal
1
Ya saya pikir begitu.
Michiel de Mare
1
Saya tahu ini posting yang lebih lama, tapi ini jawaban yang bagus! Saya mengubah izin pada /system/library/launchdaemons/com.apple.mdnsresponder untuk mencoba perbaikan yang direkomendasikan Apple, tetapi saya akan mendapatkan kesalahan yang disebutkan di atas ketika mencoba memuatnya setelah itu. Mengubah pemilik dan izin seperti dijelaskan di atas adalah satu-satunya cara untuk mendapatkan kembali koneksi internet saya. Terima kasih!
Menghadapi hal yang sama sekarang dan diselesaikan. Saya pikir pemilik file banyak memohon launchctl. Saya membuat file sebagai pengguna normal dan sedang mengeksekusinya sudo. Karena itu kesalahannya. Karena root bukan pemilik file, No sudotidak diperlukan. Saya berlari tanpa sudodan itu bekerja dengan baik.
Bibhas
14

Dari launchctl (1) deskripsi manual dari loadsub- perintah :

Perhatikan bahwa file konfigurasi per pengguna (LaunchAgents) harus dimiliki oleh pengguna yang memuatnya. Semua daemon seluruh sistem (LaunchDaemon) harus dimiliki oleh root. File konfigurasi tidak boleh ditulis kelompok atau dunia. Pembatasan ini ada untuk alasan keamanan, karena memungkinkan kemampuan menulis untuk file konfigurasi launchd memungkinkan seseorang untuk menentukan yang dapat dieksekusi akan diluncurkan.

launchctl memiliki beberapa pesan “Dubious…”. The launchd kode untuk 10.6.7 (misalnya) memiliki tiga pesan tersebut dalam nya launchctl.c(lihat fungsi 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>

Untuk menghindari pesan-pesan ini, nama path harus (# 3) file biasa atau direktori 1 (atau symlink ke satu) yang (# 1) dimiliki oleh root atau pengguna yang memohon dan (# 2) bukan "grup" atau "lainnya" ”Dapat ditulisi (yaitu chmod go-w).

1 Tidak ada pipa bernama, simpul perangkat khusus blok / karakter, soket domain lokal, dll.


File Anda mungkin dimiliki oleh pengguna admin karena Anda mengatakan bahwa Anda tidak mendapatkan pesan saat masuk sebagai pengguna itu (pathname dimiliki oleh pengguna yang memanggil dalam kasus itu).
Untuk membuat nama path berfungsi untuk pengguna lain, itu harus dimiliki oleh root.

Untuk mengatur ini, lakukan:

sudo chown root /Library/LaunchAgent/foo.plist
Chris Johnsen
sumber
1

Terima kasih atas jawabannya (mengubah pemilik menjadi root) - itu saja yang saya butuhkan.

Untuk membuat ini lebih dari sekadar 'saya juga' pos ... Saya sampai di sini melalui jalur berbelit-belit: Saya mendapatkan "API ini hanya dapat digunakan oleh proses yang berjalan dalam sesi Aqua" kesalahan untuk launchdaemon. Mencari jawaban untuk itu mengarahkan saya ke teknik Apple tentang daemon dan agen yang menjelaskan cara mengatasi kesalahan 'sesi Aqua', tetapi itu membuat saya memiliki masalah 'kepemilikan yang meragukan'. Begitulah cara saya sampai di sini, di mana masalah terakhir saya terselesaikan.

Mungkin menambahkan semua itu ke diskusi ini akan menyebabkan beberapa mesin pencari menautkan halaman ini ke salah satu masalah pendahuluan, sehingga menghemat waktu beberapa petualang di masa depan.

Matt Strange
sumber
Catatan, ini harus berupa komentar daripada jawaban.
studgeek
1
Saya akan berkomentar, tetapi poin reputasi saya tidak cukup tinggi. (Bukankah kelihatannya mundur bahwa seseorang dapat 'menjawab' dengan reputasi rendah tetapi tidak berkomentar?)
Matt Strange
-2

untuk file di ~ / Library / LaunchAgent yang dimiliki oleh pengguna dan bukan root jangan sudo, jika Anda harus mengubah kepemilikan karena Anda memuatnya dari pengguna root

radha
sumber
-3

Inilah yang terjadi ketika orang tidak tahu cara sudokerjanya. Untuk menonaktifkan layanan yang ada di file yang dimiliki oleh pengguna Anda hanya memanggil launchtltanpa sudo.

Maximo Pech
sumber