Mengapa tidak ada izin seperti Android atau iOS?

26

Ketika saya menginstal program seperti GIMP atau LibreOffice di Linux saya tidak pernah ditanya tentang izin. Dengan menginstal program di Ubuntu, apakah saya secara eksplisit memberikan izin penuh kepada program itu untuk membaca / menulis di mana saja di drive saya dan akses penuh ke internet?

Secara teoritis, dapatkah GIMP membaca atau menghapus direktori apa pun di drive saya, tidak memerlukan kata sandi tipe sudo?

Saya hanya ingin tahu apakah secara teknis memungkinkan, tidak apakah itu mungkin atau tidak. Tentu saja, saya tahu itu tidak mungkin.

stackinator
sumber
26
XKCD
Andrea Lazzarotto
10
Karena model keamanan Linux berasal dari sebelum ada yang berpikir untuk melakukan itu. Sebenarnya itu berasal dari sebelum Internet - ketika ancaman terbesar Anda adalah orang lain yang menggunakan komputer yang sama.
user253751
2
Sebagian karena banyak orang yang menggunakan * nix tidak "menginstal" program, mereka mengkompilasinya dari sumber, atau menulisnya sendiri. Jadi bayangkan jika Anda harus melalui rigamarole "izin" untuk setiap skrip shell sederhana yang Anda tulis: bukankah itu akan membuang-buang waktu?
jamesqf
4
Saya tidak membeli alasan ini, "kode ini open source, Anda dapat memeriksanya, dan mengompilasinya sendiri!". Semua pernyataan ini benar tetapi itu tidak berarti saya akan dapat meninjau setiap baris kode yang saya jalankan, dan bahkan jika saya lakukan, atau tim orang melakukannya, atau seluruh dunia melakukannya, itu sama sekali tidak berarti Anda akan melihat kode jahat atau buruk yang berdampak negatif pada komputer Anda. Tapi terima kasih atas masukannya, saya melihat bagaimana itu bisa menjadi rasa sakit yang besar dan saya telah menemukan cara mengatasinya sekarang.
stackinator

Jawaban:

31

Ada dua hal di sini:

  • ketika Anda menginstal sebuah program dengan cara standar (installer sistem seperti apt / apt-get di Ubuntu) biasanya diinstal di beberapa direktori di mana ia tersedia untuk semua pengguna (/ usr / bin ...). Direktori ini memerlukan hak istimewa untuk ditulis sehingga Anda memerlukan hak istimewa selama instalasi.

  • ketika Anda menggunakan program, program ini berjalan dengan id pengguna Anda dan hanya bisa membaca atau menulis jika program yang dijalankan dengan id Anda diizinkan untuk membaca atau menulis. Dalam kasus Gimp, Anda akan menemukan misalnya bahwa Anda tidak dapat mengedit sumber daya standar seperti kuas karena mereka ada di bersama /usr/share/gimp/dan bahwa Anda harus menyalinnya terlebih dahulu. Ini juga menunjukkan di Edit>Preferences>Foldersmana sebagian besar folder berpasangan, satu sistem yang hanya baca dan satu pengguna yang dapat ditulis.

xenoid
sumber
17
Setelah program diinstal, bagaimana program itu diinstal menjadi tidak relevan. Satu-satunya hal yang diperhitungkan adalah di mana userid dijalankan ((dengan kata lain, siapa yang menggunakannya). Kemudian ia mengasumsikan hak akses yang sama dengan semua program lain yang dijalankan oleh pengguna yang sama.
xenoid
3
@xenoid Kecuali jika program diinstal dimiliki oleh root dan dengan setuid bit on Dalam hal ini, program berjalan sebagai root, meskipun digunakan oleh orang lain.
Monty Harder
2
Ya, semuanya 18 di antaranya: mount / umount / ping / sudo ...
xenoid
2
@xenoid, saya pikir sedikit penting ada menginstal paket tidak secara eksplisit meminta Anda untuk menginstal binari setuid. Sebaliknya, apa pun yang ada dalam paket terinstal, dan Anda hanya perlu "tahu" cara lain jika ada program istimewa yang terlibat. Anda benar-benar bergantung pada pembuat paket untuk memastikan paket cocok dengan dokumentasi dan jika tidak aman dll, utilitas manajer paket tidak melakukan apa pun untuk membantu Anda di sana.
ilkkachu
3
Ya, jadi tidak ada yang baru, ini sebabnya ada repositori ... Bahkan tanpa bit setuid dan perangkat lunak yang diinstal dapat melakukan banyak hal buruk lainnya seperti rm -rf ~/. Jika Anda menginstal dari sumber lain, Anda harus berhati-hati (atau menginstal dari sumber, setelah inspeksi kode).
xenoid
23

Dengan menginstal program di Ubuntu, apakah saya secara eksplisit memberikan izin penuh untuk membaca / menulis di mana saja di drive saya dan akses penuh ke internet?

Ya, jika Anda menggunakan sudoatau yang setara, Anda memberi installer izin penuh untuk membaca / menulis di mana saja di drive Anda. Ini kebanyakan hal yang sama. Ada juga flag yang bisa diatur oleh installer, yang disebut setuid, yang akan membuat program memiliki izin penuh setelah menginstal juga.

Bahkan jika kita mengabaikan penginstal dan jika program tidak setuid (sangat jarang bagi program untuk menggunakan setuid), ketika Anda menjalankan program itu memiliki akses penuh ke apa pun yang dapat diakses oleh akun Anda. Misalnya, jika Anda masuk ke perbankan online Anda, itu bisa secara hipotetis mengirim semua dana Anda ke Nigeria.

Mengapa tidak ada izin seperti Android atau iOS?

Model keamanan - yang berarti cara sistem keamanan dirancang - di Linux sudah sangat tua. Itu diwarisi dari Unix, yang tanggal kembali ke tahun 1960-an. Saat itu, tidak ada internet, dan kebanyakan orang di departemen menggunakan komputer yang sama. Sebagian besar program Anda berasal dari perusahaan besar yang dipercaya. Jadi sistem keamanan dirancang untuk melindungi pengguna dari satu sama lain, bukan untuk melindungi pengguna dari program yang mereka jalankan.

Saat ini sudah cukup usang. Android berbasis Linux, tetapi bekerja dengan membuat "akun pengguna" yang terpisah untuk setiap aplikasi, bukan untuk setiap pengguna. Saya tidak tahu apa yang digunakan iOS. Upaya-upaya seperti Flatpak saat ini mencoba untuk membawa hal yang sama ke desktop Linux.

pengguna253751
sumber
2
Ini sebenarnya adalah salah satu argumen untuk menjalankan kode yang berpotensi dapat dieksploitasi sebagai pengguna yang tidak memiliki hak istimewa yang terpisah dan berharap tidak ada kerentanan peningkatan hak istimewa dalam OS. Atau Docker.
Willtech
@immibis Android menggunakan kernel Linux dan ext FS. Itu tidak berbagi kesamaan lainnya afaik. Jangan mengonfigurasi Linux dan suka-UNIX (atau GNU / Linux). (Setidaknya Anda tidak memanggil FreeBSD "Linux" ..)
wizzwizz4
1
@ wizzwizz4 Linux adalah sebuah kernel, Android menggunakan kernel yang disebut Linux, saya tidak yakin apa maksud Anda.
user253751
@ Willtech Secara teknis memang berfungsi sebagai langkah keamanan, tapi itu cukup merepotkan. Anda biasanya ingin aplikasi dapat mengakses file Anda. Tetapi hanya file yang Anda minta mereka akses.
user253751
@immibis Izin tidak diterapkan di kernel, sehingga menyesatkan untuk menyatakan bahwa Android didasarkan pada sistem yang menyertakan model izin. (IIirc kernel memberlakukan beberapa izin ..)
wizzwizz4
9

Apa yang Anda inginkan disediakan oleh aplikasi Flatpack. Ini sangat setara dengan aplikasi iOS, Android, atau Windows Store.

Saya belum menggunakannya, jadi saya tidak tahu apakah mereka sudah mengimplementasikan GUI, untuk melihat izin yang diperlukan oleh setiap aplikasi saat diinstal.

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

Setiap aplikasi flatpak berisi manifes, yang disebut metadata. File ini menjelaskan detail aplikasi, seperti identitasnya (app-id) dan runtime apa yang digunakannya. Ini juga mencantumkan izin yang diperlukan aplikasi.

Secara default, setelah diinstal, aplikasi mendapat semua izin yang diminta. Namun, Anda dapat mengesampingkan izin setiap kali Anda memanggil flatpak run atau global berdasarkan per-aplikasi dengan menggunakan flatpak override (lihat manual untuk flatpak-run dan flatpak-override untuk detailnya). Penanganan izin aplikasi saat ini agak tersembunyi di antarmuka, tetapi rencana jangka panjang adalah untuk menunjukkan izin selama instalasi dan membuatnya lebih mudah untuk menimpanya.

Saya juga belum menggunakan alternatif Ubuntu, Snappy, untuk mengetahui apakah ia menyediakan fitur seperti itu yang terlihat di GUI.

sourcejedi
sumber
Apakah flatpaks memiliki izin baca / tulis ke folder rumah saya di Ubuntu?
stackinator
1
Membaca tautan, sepertinya a) mereka memiliki solusi elegan dalam pikiran di mana aplikasi hanya mendapatkan akses ke file yang telah dipilih pengguna dalam file buka / simpan jendela dll, b) defaultnya adalah untuk memberikan akses penuh ke direktori home Anda .
sourcejedi
2
Aplikasi web adalah solusi yang jauh lebih standar untuk masalah ini, meskipun dalam banyak kasus tidak efisien. Peramban web populer apa pun adalah kotak pasir yang sangat serbaguna dan teruji tuntas.
sudo
6

Secara teknis dimungkinkan dan solusinya termasuk apparmor, selinuxdan firejailatau bahkan kontainer penuh seperti LXCatau mesin virtual penuh (misalnya VirtualBox, kvmatau vmware). Untuk jaringan ada opensnitchyang merupakan tiruan dari littlesnitchprogram dari OSX.

Alasan mengapa tidak ada model keamanan yang tersebar luas dengan izin yang diberikan oleh pengguna adalah bahwa secara tradisional Anda berhati-hati dengan apa yang Anda jalankan di komputer. 90% dari apa yang ada di appstores sistem seluler akan dianggap sebagai malware di PC.

Ada pemindai untuk adware (yaitu adaware atau Spybot D&D) yang akan mengklasifikasikan perilaku seperti menghubungkan facebook, google analytics, dan jaringan periklanan sebagai malware di PC. Ekosistem seluler seperti seluruh reboot komputasi ketika menyangkut hal-hal ini. Semua orang membundel adware, hanya karena mudah dan menambah analitik, hanya karena dia penasaran. Efek sampingnya adalah menurunnya privasi dan keamanan. Bagian keamanan dicatat oleh model kotak pasir, bagian privasi masih merupakan masalah terbuka.

Alasan lain untuk tidak memiliki ini pada PC untuk waktu yang lama adalah kompleksitas kotak pasir, yang berarti bahwa keduanya mungkin terlalu lambat untuk PC yang lebih tua beberapa waktu lalu dan membutuhkan lebih banyak rekayasa untuk sesuatu yang memiliki sedikit keuntungan saat itu.

Hari ini kita melihat upaya untuk menggunakan sandboxing dalam format paket baru seperti snap dan flatpak dan browser menggunakannya untuk ekstensi mereka juga. Chromium menggunakan model izin sejak awal dan Firefox menggunakan satu model untuk semua ekstensi web (karena hanya 57 ekstensi yang dapat Anda pasang). Ini cukup masuk akal, karena orang memasang ekstensi browser dari penulis yang tidak dikenal seperti aplikasi dari orang yang tidak pernah mereka dengar, menganggap mereka tidak lebih berbahaya daripada situs web yang mereka kunjungi, yang merupakan kesalahpahaman fatal ketika tidak ada kotak pasir untuk melindunginya.

allo
sumber
4

Android menggunakan model keamanan "pasar": aplikasi yang berbeda datang dari vendor yang berbeda (semi-tepercaya), dan harus diisolasi dari sumber daya yang dilindungi dan satu sama lain. Sebagian besar aplikasi didistribusikan berdasarkan laba: mereka dijual (payware), menunjukkan iklan berbayar, atau "memonetisasi" pengguna mereka dengan menjual data mereka ke pihak ketiga. Ada motivasi yang tinggi untuk terlibat dalam akses data terlarang, bahkan jika mereka tertangkap.

Sebagian besar aplikasi di Debian, Red Hat, dan distribusi Linux "klasik" yang serupa didistribusikan dalam bentuk sumber: setelah aplikasi open source mendapatkan daya tarik yang cukup, ia dipilih secara manual untuk dimasukkan oleh pengelola distribusi. Ada sedikit motivasi untuk melakukan akses data ilegal, - potensi keuntungan tidak membenarkan upaya.

Perlu dicatat, bahwa model keamanan Android yang canggih adalah salah satu alasannya, mengapa ia memperoleh banyak daya tarik, dengan mudah mengatasi iOS di pasar seluler. Distro Linux desktop modern tidak hanya "berbeda", - mereka sebenarnya jauh di belakang kali dalam hal keamanan dan model distribusi mereka.

Beberapa distribusi Linux hadir dengan perbaikan pada sistem distribusi perangkat lunak mereka: repositori perangkat lunak pihak ketiga terpusat (AUR), format paket khusus untuk mendistribusikan perangkat lunak pihak ketiga (AppImage, Snappy, Flatpack), sistem penyimpanan sekunder (Docker). Sayangnya, perbaikan-perbaikan itu mendapatkan daya tarik yang sangat sedikit dengan waktu: AppImage telah ditemukan pada tahun 2004, versi pertama AUR dirilis pada tahun 2005, namun tidak ada distribusi Linux modern yang secara resmi mengadopsi fitur-fitur mereka setelah> 10 tahun.

pengguna1643723
sumber
3

Ketika saya menginstal program seperti GIMP atau LibreOffice di Linux saya tidak pernah ditanya tentang izin.

Aplikasi ini diinstal di bagian istimewa dari sistem file yang biasanya Anda dan sebagian besar pengguna tidak memiliki akses untuk berubah.

Pada distro utama yang diatur untuk penggunaan desktop, pengguna tunggal yang awalnya mengatur ketika menginstal biasanya akan memiliki hak admin. Yang biasanya diminta adalah kata sandi login mereka sendiri untuk menginstal perangkat lunak, dan tidak selalu seperti itu.

Setelah terinstal perangkat lunak, secara default, akan diatur agar dapat dieksekusi oleh pengguna normal dan memungkinkan file data untuk dibaca. Itu saja yang dibutuhkan.

Dengan menginstal program di Ubuntu, apakah saya secara eksplisit memberikan izin penuh kepada program itu untuk membaca / menulis di mana saja di drive saya dan akses penuh ke internet?

Bukan programnya. Apa yang terjadi adalah bahwa akun pengguna milik kelompok yang berbeda dan kelompok yang berbeda memberikan akses ke sumber daya yang berbeda.

Model keamanan di Linux adalah bahwa akun pengguna Anda memiliki hak tertentu, dan grup yang dimiliki akun Anda memiliki hak khusus. Untuk hak ke bagian mana pun dari sistem file membutuhkan hak akses root, yang biasanya tidak diberikan kepada pengguna. Bahkan ketika Anda menggunakan sudo Anda tidak mendapatkan semua hak.

Akun pengguna normal biasanya memiliki akses ke sumber daya yang mereka harapkan butuhkan, seperti internet.

Secara teoritis, dapatkah GIMP membaca atau menghapus direktori apa pun di drive saya, tidak memerlukan kata sandi tipe sudo?

Direktori atau file apa pun yang Anda, sebagai pengguna, memiliki hak akses dapat diakses oleh aplikasi yang Anda luncurkan karena biasanya mewarisi hak-hak Anda. Pengguna yang masuk secara normal biasanya tidak memiliki hak untuk mengubah sebagian besar file sistem kritis atau file bersama.

Saya hanya ingin tahu apakah secara teknis memungkinkan, tidak apakah itu mungkin atau tidak. Tentu saja, saya tahu itu tidak mungkin.

Perlu diingat bahwa sebagian besar pengguna biasanya menginstal aplikasi dari repositori yang dijaga dengan baik dan risiko kode permusuhan rendah.

Saya mungkin akan menyarankan beberapa bacaan tambahan untuk memahami izin Linux.

Model keamanan Android berkembang untuk menyesuaikan dengan kebutuhan pengguna yang tidak hanya umumnya tidak mengerti apa-apa tentang model keamanan OS yang mendasarinya tetapi juga hampir tidak mengerti apa - apa tentang komputer.

Model Linux (yang saya suka lebih banyak) dirancang untuk memungkinkan pengguna (dan administrator khususnya) untuk melakukan kontrol lebih besar atas keamanan pada sistem (dalam batas-batas jika izin mereka diizinkan).

Saya pikir dari sudut pandang pengguna, paling baik digambarkan sebagai perbedaan antara kontrol otomatis penuh dan semi otomatis atau manual. Konsumen modern menginginkan otomatis penuh. Linux memiliki semi-otomatis dan manual. Sebagian besar pengguna Linux tidak perlu tahu tentang model keamanan hari ini, tetapi kontrol ada jika Anda membutuhkan atau menginginkannya.

StephenG
sumber
2

Ketika Anda menginstal beberapa program, Anda dapat menginstalnya di dalam ruang pengguna Anda sendiri (yaitu mandiri dalam direktori home Anda) dan tidak di seluruh sistem. Dengan demikian, Anda tidak dimintai hak pengguna super karena Anda tidak perlu menginstal program untuk penggunaan sendiri oleh pengguna. Suatu program yang diinstal dengan demikian memang tidak akan dapat mengakses file yang tidak diberikan izin "non-pemilik yang bukan anggota grup dapat membaca ini" tanpa adanya peningkatan hak istimewa.

DopeGhoti
sumber
Jika program diinstal di direktori home saya, bisakah ia membaca dan menulis di mana saja di dalam direktori home?
stackinator
2
Ini berjalan dengan izin Anda, sehingga dapat mengakses apa pun yang dapat Anda akses.
DopeGhoti
1
Pada mesin pengguna tunggal, akses hanya pengguna tidak jauh lebih aman daripada akses root. Apa pun itu, semua yang penting mungkin dapat diakses oleh pengguna Anda.
sudo