Saya memiliki Agen Peluncuran dikonfigurasi untuk menjalankan file Plist misalnya: /Library/LaunchAgent/foo.plist
. Di dalam .plist ini, sudah diatur untuk dijalankan selama LoginWindow
dan 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 sudo
di akun admin (mis. Dengan menggunakan su
perintah 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?
sumber
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
-F
).Jawaban:
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 dengansudo 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.)sumber
launchctl
. Saya membuat file sebagai pengguna normal dan sedang mengeksekusinyasudo
. Karena itu kesalahannya. Karena root bukan pemilik file, Nosudo
tidak diperlukan. Saya berlari tanpasudo
dan itu bekerja dengan baik.Dari launchctl (1) deskripsi manual dari
load
sub- perintah :launchctl memiliki beberapa pesan “Dubious…”. The launchd kode untuk 10.6.7 (misalnya) memiliki tiga pesan tersebut dalam nya
launchctl.c
(lihat fungsipath_goodness_check
).Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
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:
sumber
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.
sumber
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
sumber
Inilah yang terjadi ketika orang tidak tahu cara
sudo
kerjanya. Untuk menonaktifkan layanan yang ada di file yang dimiliki oleh pengguna Anda hanya memanggillaunchtl
tanpasudo
.sumber