Mengapa aplikasi dapat membuat daemon on the fly tanpa izin sudo dan cara menghentikannya?

5

Pertama, saya berasal dari Linux jadi ada banyak hal yang membingungkan saya seperti daemon.

Saya menginstal VOX.app dan memiliki beberapa jenis agen dan proses terkait cloud yang dapat dimulai secara otomatis. Tidak ada opsi di VOX UI yang dapat menonaktifkannya. Saya mencoba yang berikut untuk menghapus daemon itu:

launchctl remove com.coppertino.VOXCloud
launchctl remove com.coppertino.VOXAgent

Perintah di atas sudah aneh karena saya tidak perlu menggunakan sudo. Bagian yang paling aneh adalah apa yang saya lakukan tampaknya tidak berguna karena setiap kali saya meluncurkan VOX.app, itu dapat membuatnya lagi dan lagi. Ini gila.

Jika ini adalah model keamanan macOS bagaimana saya bisa memahami banyak hal dan mungkin mengendalikannya?

sgon00
sumber
Ada banyak pertanyaan di sini. Situs ini berfungsi paling baik jika Anda mengajukan satu pertanyaan.
Graham Miln
1
Saya setuju - ini harus ditutup jika ada beberapa pertanyaan terkait yang diajukan. Graham memiliki jawaban keseluruhan yang luar biasa pertama, jadi saya telah mengedit semua pertanyaan spesifik dan membuat ini tentang model keamanan Apple. Silakan ajukan pertanyaan pada pertanyaan dengan pertanyaan khusus yang sangat sempit jika Anda memiliki versi aplikasi tertentu pada versi makro tertentu yang Anda inginkan membantu mencegahnya membuat startup. Mungkin ada langkah umum atau khusus untuk mengendalikannya
bmike

Jawaban:

5

Model keamanan umum adalah bahwa pengguna normal dapat menambahkan item startup apa pun ke wilayah mereka (perpustakaan pengguna untuk mereka) dan bukan untuk sistem, jadi jangan biarkan orang memiliki akun admin jika Anda tidak percaya mereka tidak menjalankan perangkat lunak yang menginstal item permulaan tingkat sistem.

Tidak ada cara mudah untuk menghentikan pengguna admin dari mengubah sistem. Anda dapat memberlakukan gatekeeper atau aplikasi yang ditandatangani, tetapi sebagian besar pengguna admin dapat melewati pengaturan itu sehingga yang terbaik, Anda memperlambat sedikit pengguna admin yang tidak berpendidikan.

Pekerjaan Per Pengguna dan Luas Komputer

Di macOS, launchd dapat mengelola proses latar belakang per pengguna dan komputer.

Pekerjaan per pengguna ada dalam sesi pengguna Anda. Mereka mulai dan berhenti saat Anda masuk dan keluar dari komputer. Jika pekerjaan terkait dengan tiket pekerjaan, Anda akan menemukannya dengan folder tersebut ~/Library/LaunchAgents dan ~/Library/LaunchDaemons

Pekerjaan di seluruh komputer mulai dan berhenti dengan komputer. Pekerjaan ini disimpan di /Library/LaunchAgents dan /Library/LaunchDaemons.

Pekerjaan di seluruh komputer yang dikelola oleh Apple disimpan di /System/Library/LaunchAgents dan /System/Library/LaunchDaemons.

Pekerjaan per pengguna tidak membutuhkan izin pengguna super. Jadi kamu tidak perlu sudo untuk menghentikan pekerjaan yang dipasang di tingkat pengguna oleh vox.app.

Menonaktifkan a launchd pekerjaan

Anda dapat menurunkan pekerjaan launchd untuk memblokirnya kembali:

Pemakaian: launchctl unload <service-path, service-path2, ...>

  • -w Selain itu menonaktifkan layanan sedemikian rupa sehingga operasi beban di masa depan akan menghasilkan layanan yang meluncurkan trek tetapi tidak dapat diluncurkan atau ditemukan dengan cara apa pun.
  • -S <session> Hanya membongkar layanan yang terkait dengan sesi yang ditentukan.
  • -D <domain> Bongkar file launchd.plist (5) dari domain yang ditentukan. Lihat diskusi mengenai flag yang sama ini ketika diberikan ke sub-perintah pemuatan untuk detail lebih lanjut.

Itu -w menyebabkan pembongkaran ditulis ke disk dan bertahan di seluruh sesi.

Untuk selengkapnya tentang menghentikan, membongkar, dan mengganti pekerjaan lihat:

Graham Miln
sumber
Terima kasih banyak untuk penjelasan detailnya. Saya mengerti lebih baik sekarang. Tapi saya masih belum bisa menonaktifkan com.coppertino.VOXAgent dan com.coppertino.VOXCloud secara permanen. Dua daemon dapat ditemukan oleh launchctl list | grep -i vox perintah dan mereka tidak ditampilkan di ~/Library/LaunchAgents/ dan saya tidak punya direktori ~/Library/LaunchDaemons. Saya bisa menggunakan launchctl remove untuk menghapusnya, tetapi bagian yang buruk adalah vox.app dapat membuat dua daemon secara otomatis setiap kali saya meluncurkannya. Jadi saya menghapusnya dan vox.app menciptakan mereka dan ulangi .. Apakah itu mungkin untuk berhenti vox.app menciptakan dua daemon?
sgon00
Gunakan jalur layanan dan -w untuk menurunkan pekerjaan. Itu akan menghentikan pekerjaan menjalankan masa depan. Siapa yang menerbitkan vox.app dan sudahkah Anda bertanya kepada pengembang tentang perilaku ini?
Graham Miln
Saya minta maaf untuk bertanya lagi. Bagaimana saya bisa menemukan jalannya? -w membutuhkan jalan sebagai argumen, tetapi saya tidak tahu apa jalan mereka. Saya tidak menemukannya di direktori mana pun: ~/Library/LaunchAgents, /Library/LaunchAgents, /Library/LaunchDaemons, /System/Library/LaunchAgents, /System/Library/LaunchDaemons, . Saya mencoba menggunakan launchctl list com.coppertino.VOXAgent yang tidak memberitahu saya jalannya juga. Saya mencoba menggunakan launchctl print com.coppertino.VOXAgent yang mengembalikan kesalahan Unrecognized target specifier. Saya mencoba google, tidak menemukan apa pun yang berguna bagaimana menemukan jalur daemon. Maaf
sgon00
Tolong, bisakah Anda ajukan pertanyaan baru untuk ini. Sebuah pertanyaan baru akan menarik jawaban yang lebih spesifik dan audiens yang lebih luas.
Graham Miln
1

Masalah umum ditangani dalam jawaban Graham Miln. Jawaban ini hanya sedikit tambahan dilakukan pada contoh aplikasi yang diberikan:

Versi singkat: macOS memiliki beberapa direktori khusus untuk perilaku semacam ini. Itu adalah jalur global dan jalur pengguna / Perpustakaan yang telah disebutkan dalam jawaban Graham. Tetapi jalur yang kurang terlihat dan karenanya kurang jelas adalah dalam setiap bundel Aplikasi.

Beberapa aplikasi terlalu pintar. Vox adalah contoh utama dari ini. Agen-agen ini tidak dijelaskan dengan baik tetapi sering dikeluhkan dan karenanya berpotensi, program, atau perangkat lunak yang tidak diinginkan

Aplikasi ini memicu serangkaian peristiwa saat disalin ke / Aplikasi dan lagi saat diluncurkan.

Di dalam bundel paket adalah LoginItems:

   /Volumes/VOX/VOX.app/Contents/Library/LoginItems
  ../Loop.app
  ../VOX Agent.app

Keduanya disalin / didaftarkan oleh DesktopServicesHelper sistem sendiri sebagai "item masuk pembantu aplikasi". "Pembantu" semacam ini sering ditemukan di aplikasi lain juga dan biasanya hanya menambah gangguan. Mereka mungkin diblokir terlebih dahulu dari mendaftar di tempat pertama oleh aplikasi kecil yang berguna, seperti BlockBlock .

Karena ini masih terkandung dalam bundel aplikasi Anda harus mencari atau menyediakan jalur ke dalam bundel aplikasi!

Pencarian untuk program / pembantu yang diluncurkan secara otomatis harus menyertakan / Aplikasi dan ~ / Aplikasi!

Gangguan lain kemudian ditemukan dalam bundel aplikasi :

 /Volumes/VOX/VOX.app/Contents/XPCServices 
 /Volumes/VOX/VOX.app/Contents/XPCServices/VOX\ Toolbox.xpc
 /Volumes/VOX/VOX.app/Contents/XPCServices/com.coppertino.Vox.GNTPClientService.xpc 

Salah satu cara untuk menonaktifkan proses per pengguna ini agar tidak mengganggu Anda dijelaskan dalam jawaban Graham, menggunakan launchctl.
Anda hanya perlu mencari di dalam / Aplikasi juga.
Metode lain adalah masuk ke bundel dan adil menghapus barang-barang ini. - Sebagian besar waktu aplikasi tersebut berjalan dengan baik tanpa mereka, hanya kehilangan fungsi masing-masing. Vox dulunya pemutar musik 'tanpa embel-embel' kecil yang menyenangkan. Itu bekerja untuk itu tanpa gangguan yang ada pada disk.
Kadang-kadang aplikasi yang dirancang lebih baik menawarkan Anda opsi untuk mencegah orang-orang jahat itu dalam dialog preferensi mereka.

Favorit pribadi: Dalam hal aplikasi dalam contoh yang diberikan, yang terbaik adalah menghapus seluruh aplikasi.

Untuk langsung menjawab pertanyaan utama

Mengapa aplikasi dapat membuat daemon on the fly tanpa izin sudo dan cara menghentikannya?

Karena pengguna meluncurkan aplikasi dengan hak istimewa dan daemonnya yang terkandung dalam bundel aplikasi itu, kadang-kadang dirancang dengan sangat menjengkelkan untuk kemudian mendaftarkan diri dengan cukup transparan sebagai "autostart" dalam konteks pengguna itu dan dengan hak-hak pengguna itu. Untuk membongkar atau membatalkan pendaftaran tidak ada sudo / hak administratif atau izin yang diperlukan. Jika pelaku duduk di bawah / Aplikasi maka penghapusan mungkin tergantung pada izin yang lebih tinggi.

LangLangC
sumber