Android veya iOS gibi neden izin yok?


26

Linux'ta GIMP veya LibreOffice gibi bir program kurduğumda hiçbir zaman izinlerden bahsetmedim. Ubuntu'ya bir program yükleyerek, açıkça bu programa sürücümün herhangi bir yerinde okuma / yazma ve internete tam erişim izni veriyor mu?

Teorik olarak, GIMP sudo tipi bir şifre gerektirmeden sürücümdeki herhangi bir dizini okuyabilir veya silebilir mi?

Sadece teknik olarak mümkün olup olmadığını merak ediyorum, mümkün olup olmadığını değil. Tabii ki, muhtemel olmadığını biliyorum.


26

10
Çünkü Linux'un güvenlik modeli, bunu yapmayı düşünmeden önceye dayanıyor. Aslında İnternet'ten önce gelir - en büyük tehdidin aynı bilgisayarı kullanan diğer insanlar olduğu zaman.
26.08.2018

2
Kısmen * nix kullanan insanların çoğunun programları "yükleme "diği için, ya onları kaynaktan derler ya da kendileri yazarlar. Öyleyse, yazdığınız her küçük kabuk senaryosu için "izinler" rigamarolünden geçmek zorunda kaldığınızı hayal edin: Bu zaman kaybı olmaz mıydı?
jamesqf

4
“Bu kod açık kaynak, gözden geçirebilir ve kendiniz derleyebilirsiniz!” Gibi bir akıl yürütme emri almıyorum. Tüm bu ifadeler doğrudur, ancak bu, koştuğum her kod satırını gözden geçirebileceğim anlamına gelmez. Yaptığım ya da bir insan ekibinin yaptığı ya da tüm dünyanın yaptığı gibi, hiçbir şekilde Bilgisayarınızı olumsuz yönde etkileyen kötü amaçlı veya kötü kodları göreceksiniz. Ancak katılım için teşekkürler, bunun nasıl büyük bir acıya dönüşebileceğini görüyorum ve şimdi bunun yollarını keşfettim.
istifçi

Yanıtlar:


31

Burada iki şey var:

  • Bir programı standart yollarla yüklediğinizde (Ubuntu'da apt / apt-get gibi sistem yükleyici) genellikle tüm kullanıcılar için uygun olan bir dizine kurulur (/ usr / bin ...). Bu dizinin yazılı olması için imtiyazlar gerekir, bu yüzden yükleme sırasında özel imtiyazlara ihtiyacınız vardır.

  • Programı kullandığınızda, kullanıcı kimliğinizle çalışır ve yalnızca kimliğinizle yürütülen programların okunmasına veya yazılmasına izin verilen yerleri okuyabilir veya yazabilir. Gimp söz konusu olduğunda, örneğin, fırçalar gibi standart kaynakları düzenleyemediğinizi ve paylaşılanlar içinde olduklarını /usr/share/gimp/ve önce bunları kopyalamanız gerektiğini keşfedeceksiniz . Bu aynı zamanda Edit>Preferences>Foldersçoğu klasörün çiftler halinde geldiği yerde, salt okunur bir sistem ve yazılabilen bir kullanıcının da olduğunu gösterir.


17
Program kurulduktan sonra, nasıl kurulduğunun önemi yoktur. Bu da ((diğer bir deyişle, kim) kullanıyor çalıştırır kullanıcı adını altında önemli olduğunu belirtip tek şey, diğer tüm programlar aynı kullanıcı tarafından çalıştırılan Sonra aynı erişim haklarını varsayar..
xenoid

3
@xenoid Program root aittir ve setuid bit açıkken yüklenmemişse. Bu durumda, program başkası tarafından kullanılmasına rağmen kök olarak çalışır.
Monty Harder

2
Evet, 18 tanesi de: mount / umount / ping / sudo ...
xenoid

2
@ xenoid, bence önemli olan şey bir paketin kurulmasının açıkça sizden bir setuid ikili dosyası kurmak için izin istemediğidir. Bunun yerine, paketteki her şey yüklenir ve ayrıcalıklı programlar varsa, başka bir yolla "bilmek" zorunda kalırsınız. Paketin belgelere uyduğundan ve başka şekilde güvenli olduğundan emin olmak için paketleyiciye tamamen güveniyorsunuz, paket yöneticisi yardımcı programı orada size yardımcı olacak hiçbir şey yapmıyor.
ilkkachu

3
Evet, bu yüzden yeni bir şey yok, bu yüzden havuzlar var ... Setuid bit ve yüklü yazılımlar olmadan bile birçok diğer kötü şeyler yapabilir rm -rf ~/. Diğer kaynaklardan kurulum yapıyorsanız, dikkatli olmanız gerekir (veya bir kod incelemesinden sonra kaynaktan yükleyin).
kenoid

23

Ubuntu'ya bir program yükleyerek açıkça bu programa sürücümün herhangi bir yerinde okuma / yazma ve internete tam erişim izni veriyor.

Evet, sudoya da eşdeğeri kullanıyorsanız, yükleyiciye sürücünüzün herhangi bir yerinde okuma / yazma izni veriyor. Bu çoğunlukla aynı şey. Yükleyicinin ayarlayabileceği, setuid adı verilen ve programın kurulumdan sonra da tam izinlerinin alınmasını sağlayacak bir bayrak vardır.

Yükleyiciyi yok saysak bile ve program ayarlanmadıysa (programların ayarlı kullanımı çok nadirdir), programı çalıştırdığınızda hesabınızın erişebileceği herhangi bir şeye tam erişime sahiptir. Örneğin, çevrimiçi bankacılığa giriş yaptıysanız, tüm fonlarınızı Nijerya'ya varsayımsal olarak gönderebilir.

Android veya iOS gibi neden izin yok?

Güvenlik modeli - yani güvenlik sisteminin tasarlanma şekli - Linux'ta çok eski. 1960'lara dayanan Unix'ten devralındı. O zamanlar İnternet yoktu ve bir bölümdeki çoğu insan aynı bilgisayarı kullanıyordu. Programlarınızın çoğu, güvenilen büyük şirketlerden geldi. Bu nedenle güvenlik sistemi, kullanıcıları çalıştırdıkları programlardan korumak için değil, kullanıcıları birbirlerinden korumak için tasarlanmıştır.

Günümüzde oldukça modası geçmiş. Android Linux'a dayanır, ancak her kullanıcı için değil, her uygulama için ayrı bir "kullanıcı hesabı" oluşturarak çalışır. İOS'un ne kullandığını bilmiyorum. Flatpak gibi çalışmalar şu anda aynı şeyi Linux masaüstüne getirmeye çalışıyor.


2
Bu aslında, ayrıcalıklı olmayan bir kullanıcı olarak potansiyel olarak sömürülebilen kod çalıştırmanın ve işletim sisteminde ayrıcalık yükselmesi güvenlik açığı bulunmamasını umut eden bir argümandır. Veya Docker.
Willtech

@ immibis Android, Linux çekirdeğini ve harici bir FS'yi kullanır. Diğer hiçbir benzerliği afaik paylaşmaz. Linux ve UNIX benzeri (veya GNU / Linux) ile birleştirme. (En azından FreeBSD'yi "Linux"
demedin

1
@ wizzwizz4 Linux bir çekirdektir, Android Linux adlı çekirdeği kullanır, amacın ne olduğundan emin değilim.
27.08.2018

@Willtech Teknik olarak bir güvenlik önlemi olarak çalışıyor, ancak oldukça rahatsız edici. Genellikle istediğiniz uygulamalar sonuçta dosyalarınıza erişmek mümkün. Ancak sadece erişmelerini söylediğiniz dosyalar.
user253751 28:18

@ immibis İzinler çekirdek içerisinde uygulanmadığından, Android'in izin modelini içeren bir sisteme dayandığını ima etmek yanıltıcıdır. (IIirc, çekirdek olsa da bazı izinleri uygular ..)
wizzwizz4

9

İstediğiniz şey Flatpack uygulamaları tarafından sağlanmaktadır. Bunlar, iOS, Android veya Windows Mağazası uygulamalarının karşılığıdır.

Bunları kullanmadım, bu yüzden GUI'yi uygulayıp uygulamadıklarını bilmiyorum, yüklendiğinde her uygulamanın gerektirdiği izinleri görmek için.

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

Her flatpak uygulaması, meta veri adı verilen bir bildirim içerir. Bu dosya, kimliği (uygulama kimliği) ve hangi çalışma zamanını kullandığı gibi uygulamanın ayrıntılarını açıklar. Ayrıca, uygulamanın gerektirdiği izinleri de listeler.

Varsayılan olarak, kurulduktan sonra, bir uygulama istediği tüm izinleri alır. Bununla birlikte, flatpak çalıştırmayı her çağırdığınızda veya genel olarak uygulama başına temelinde flatpak geçersiz kılma kullanarak izinleri geçersiz kılabilirsiniz (ayrıntılar için flatpak çalışması ve flatpak geçersiz kılma man sayfalarına bakın). Uygulama izinlerinin kullanımı şu anda arabirimde bir şekilde gizlenmiştir, ancak uzun vadeli plan yükleme sırasında izinleri göstermek ve bunları geçersiz kılmayı kolaylaştırmaktır.

Ayrıca, GUI'de böyle bir özellik sağlayıp sağlamadığını bilmek için Ubuntu'nun alternatifi Snappy'yi de kullanmadım.


Flatpaks'ların Ubuntu'daki ev klasörüme okuma / yazma izni var mı?
istifçi

1
Bağlantıyı okuyarak görünüyor: a) Uygulamaların yalnızca kullanıcının bir dosyayı aç / kaydet penceresinde seçtiği dosyalara erişebildiği yerlerde akılda tutulması gereken bir çözüm var. B) varsayılan, ana dizininize tam erişim sağlamaktı. .
kaynakjedi

2
Web uygulamaları, çoğu durumda sinir bozucu olsa da, bu soruna çok daha standart bir çözümdür. Herhangi bir popüler web tarayıcısı çok yönlü ve tamamen test edilmiş bir sanal alandır.
sudo

6

Bu teknik olarak mümkündür ve çözeltiler dahil apparmor, selinuxve firejailhatta tam kaplar gibi LXCya da tam bir sanal makine (örneğin VirtualBox, kvmya da vmware). Ağ opensnitchiçin OSX'ten littlesnitchprogramın bir klonu vardır .

Kullanıcı tarafından verilen izinlere sahip yaygın bir güvenlik modeli bulunmamasının nedenleri, geleneksel olarak PC'nizde ne çalıştırdığınıza dikkat etmenizdir. Mobil sistem uygulamalarında olanların% 90'ı PC'lerde kötü amaçlı yazılım olarak kabul edilir.

PC'de facebook, google analytics ve reklam ağlarını kötü amaçlı yazılım olarak bağlamak gibi davranışları sınıflandıracak reklam yazılımları (örneğin, reklam yazılımı veya Spybot D&D) vardır. Mobil ekosistem, bu konulara gelince bir bilgisayar yeniden başlatması gibi. Herkes reklam yazılımı paketler, çünkü kolay ve analitik ekler, çünkü meraklıdır. Yan etkileri mahremiyet ve güvenlik azalır. Güvenlik bölümü, sanal alan modeli tarafından hesaba katılır, gizlilik bölümü hala açık bir sorundur.

Bunu PC’de uzun süre kullanmamanın bir başka nedeni de, bir sandbox’ın karmaşıklığıdır; bu, her ikisi de eski PC'ler için bir süre önce çok yavaş olabileceği ve daha az avantajı olan bir şey için daha fazla mühendislik gerektirdiği anlamına gelir.

Günümüzde, sandboxing'i snap ve flatpak gibi yeni paket biçimlerinde kullanma girişimleri görüyoruz ve tarayıcılar da uzantıları için kullanıyor. Chromium başlangıçtan beri bir izin modeli kullanır ve Firefox tüm web uzantıları için bir tane kullanır (57'den beri yükleyebileceğiniz yalnızca uzantılar). Bu oldukça mantıklı, çünkü insanlar, bilinmeyen yazarların tarayıcı uzantılarını, hiç duymadıkları kişilerin uygulamaları gibi, ziyaret ettikleri bir web sitesinden daha tehlikeli olmadıklarını düşünerek, onları korumak için herhangi bir sanal alan olmadığı zaman ölümcül bir yanlış anlama olduğunu düşünüyorlar.


4

Android bir "pazar" güvenlik modeli kullanıyor: farklı uygulamalar farklı (yarı güvenilir) satıcılardan geliyor ve korumalı kaynaklardan ve birbirlerinden izole edilmelidir. Çoğu uygulama kâr amacı gütmeden dağıtılır: satılır (ödemeli yazılım), ücretli reklam gösterme veya verilerini üçüncü taraflara satarak kullanıcılardan para kazanmalarını sağlar. Yakalanmasalar bile yasadışı veri erişimine katılım konusunda yüksek motivasyon vardır.

Debian, Red Hat ve benzeri "klasik" Linux dağıtımlarındaki çoğu uygulama kaynak biçiminde dağıtılır: açık kaynak uygulamaları yeterli çekiş kazandıktan sonra, dağıtım uzmanları tarafından dahil edilmek üzere manuel olarak seçilir. Yasadışı veri erişimini gerçekleştirmek için çok az motivasyon vardır - potansiyel kazançlar çabaları haklı çıkarmaz.

Android'in gelişmiş güvenlik modelinin iOS'un mobil pazarlarda kolayca üstesinden gelmesinin neden bu kadar çekiş kazandığını gösteren nedenlerden biri olduğunu belirtmekte fayda var. Modern masaüstü Linux dağıtımları yalnızca "farklı" değildir, - güvenlik ve dağıtım modelleri açısından aslında zamanın gerisinde kalmaktadırlar.

Linux dağıtımlarından bazıları, yazılım dağıtım sistemlerinde iyileştirmelerle geliyor: merkezi üçüncü parti yazılım depoları (AUR), üçüncü parti yazılım dağıtımı için özel paket biçimleri (AppImage, Snappy, Flatpack), ikincil depo sistemleri (Docker). Ne yazık ki, bu gelişmeler zamanla çok az çekiş kazanıyor: AppImage 2004'te icat edildi, AUR'nin ilk sürümü 2005'te piyasaya sürüldü, ancak modern Linux dağıtımlarının hiçbiri> 10 yıl sonra resmen kabul etmedi.


3

Linux'ta GIMP veya LibreOffice gibi bir program kurduğumda hiçbir zaman izinlerden bahsetmedim.

Bu uygulamalar, normalde sizin ve çoğu kullanıcının değiştiremeyeceği dosya sisteminin ayrıcalıklı bir bölümüne kurulur.

Masaüstü kullanım için ayarlanan genel dağıtımlarda, ilk kurulum sırasında kurulan tek kullanıcı genellikle yönetici haklarına sahip olur. Normalde istenecek tek şey, yazılımı yüklemek için kendi giriş şifresidir, her zaman değil.

Kurulduktan sonra, yazılım varsayılan olarak normal kullanıcılar tarafından çalıştırılabilir olacak şekilde ayarlanacak ve veri dosyalarının okunmasına izin verecektir. Gereken tek şey bu.

Ubuntu'ya bir program yükleyerek, açıkça bu programa sürücümün herhangi bir yerinde okuma / yazma ve internete tam erişim izni veriyor mu?

Program değil. Olan şey şu ki, kullanıcı hesabı farklı gruplara ait ve farklı gruplar farklı kaynaklara erişim veriyor.

Linux'taki güvenlik modeli, kullanıcı hesabınızın belirli haklara sahip olması ve hesabınızın ait olduğu grupların belirli haklara sahip olmasıdır. Hakkı için herhangi bir dosya sisteminin bir parçası normalde kullanıcılara verilmemiş olan kök ayrıcalıkları gerektirir. Sudo kullanıyor olsanız bile, tüm hakları alamazsınız.

Normal kullanıcı hesapları genellikle internet gibi ihtiyaç duyduğu kaynaklara erişebilir.

Teorik olarak, GIMP sudo tipi bir şifre gerektirmeden sürücümdeki herhangi bir dizini okuyabilir veya silebilir mi?

Kullanıcı olarak erişim haklarına sahip olduğunuz herhangi bir dizin veya dosya, genellikle haklarınızı devraldığı için başlattığınız uygulama tarafından erişilebilir. Normalde giriş yapan bir kullanıcı varsayılan olarak, kritik sistem dosyalarının veya paylaşılan dosyaların çoğunu değiştirme hakkına sahip değildir.

Sadece teknik olarak mümkün olup olmadığını merak ediyorum, mümkün olup olmadığını değil. Tabii ki, muhtemel olmadığını biliyorum.

Kullanıcıların çoğunun, uygulamaları iyi belirlenmiş olan depolardan uyguladığını ve düşmanca kod riskinin düşük olduğunu unutmayın.

Muhtemelen Linux izinleri ile başa çıkmak için bazı ek okuma öneririm.

Android güvenlik modeli, yalnızca işletim sisteminin temelindeki güvenlik modeli hakkında hiçbir şey anlamayan, ancak bilgisayarlar hakkında hiçbir şey anlamayan kullanıcıların gereksinimlerini karşılayacak şekilde gelişmektedir .

Açıkçası daha çok sevdiğim Linux modeli, kullanıcıların (ve özellikle yöneticilerin) sistem üzerindeki güvenlik üzerinde daha fazla kontrol kullanmalarına izin verecek şekilde tasarlandı (izin verilen izinler dahilinde).

Bir kullanıcı açısından en iyi şekilde tam otomatik ve yarı otomatik veya manuel kontrol arasındaki fark olarak tanımlandığını düşünüyorum. Modern tüketiciler tam oto istiyor. Linux yarı otomatik ve el kitabına sahiptir. Çoğu Linux kullanıcısı bugünlerde güvenlik modeli hakkında hiçbir zaman bilgi sahibi olmaya ihtiyaç duymaz, ancak ihtiyacınız veya istemeniz durumunda kontrol oradadır.


2

Bazı programları kurduğunuzda, bunları kendi kullanıcı alanınıza kurabilirsiniz (örneğin, ana dizininizin içinde bulunur) ve sistem genelinde değil. Bu nedenle, süper kullanıcı ayrıcalıkları istenmez, çünkü bir kullanıcının kendi kullanımı için bir program yüklemelerine gerek yoktur. Thusly yüklü bir program gerçekten olurdu değil değil bir ayrıcalık tırmanması devamsızlık izni "sahibi olmayan olmayan grup üyeleri bunu okuyabilir" verilen erişim dosyaları muktedir.


Program ana dizinde kurulu ise, ana dizinde herhangi bir yeri okuyabilir ve yazabilir mi?
istif aracı

2
İzinlerinizle çalışır, böylece erişebildiğiniz her şeye erişebilir.
DopeGhoti

1
Tek bir kullanıcı makinesinde, yalnızca kullanıcı erişimi, kök erişiminden daha güvenli değildir. Her iki durumda da, önemli olan her şey muhtemelen kullanıcı tarafından erişilebilir.
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.