Takze ta ruzova otvorenost Androidu, moznost si ho umlatit do svojej podoby nam pomalicky vyprchava. Aby nakoniec nebol Android uzavrenejsi nez IOS. Osobne si ale myslim ze sa bude dat najist moznost ako rootnut Android 5, ale uz to nebude univerzalne riesenie ale skor len pre par vybranych modelov, pretoze bude do toho treba investovat viac energie. Pravdepodobne bude snaha rootnut najrozsirenejsie modely a znacky a ostatne okrajove ostanu uzamknute.
Jenže prodejce bude v haj*lu, pokud se tomu software telefonu bude aktivně bránit, nebo to prostě jen nedovolí snadno provést.
Takže co dál? Koupit, zkusit přeinstalovat, v případě nezdaru vrátit a tento postup opakovat, dokud na trhu nenajdu vhoný telefon bez bloatwaru, balastu od výrobce, spywaru ... ?
Tímto způsobem za chvilku nebude co koupit.
Už teď je veliký problém najít telefon, který má výměnný akumulátor rozumné kapacity (telefon na 1 den provozu fakt nechci), vhodné konektory, slušné provedení (ne moc tenký a málo odolný) atd.. v kombinaci s dalšími parametry. Ideál neexistuje. Pouze mraky nepřijatelných kompromisů.
Zkuste licenční ujednáni (článek 2):
http://www.apache.org/licenses/LICENSE-2.0
Případně informace o licenci:
https://source.android.com/source/licenses.html
Ono rozhodnutí nelze volně aplikovat na telefony. Soud by nejprve musel posoudit, zda se jedná o dominantní postavení výrobce - do toho vstupuje i fakt, zda má zákazník možnost pořídit obdobné zařízení od jiného výrobce. A výrobců prodávajících telefony s možností odemknutí bootloaderu je zatím tuším dost.
P.S. Nebo snad někdo zažil, aby po koupi Macu mu Apple vrátil peníze za licenci k OS X?
Jenže, "Adiministrator" není "root". Nejblíže oprávnění roota je ve windows uživatel "SYSTEM" a světe div se, ten běžný správce počítače nedostane (při běžném použití).
Nevím, zda ho nelze získat pomocí menší úpravy přihlašovací obrazovky (Vista+), nebo jestli tak nelze získat "pouze" oprávnění Administrators. Viz díra utilman.exe. Ale to už opravdu hodně odbíhám od tématu.
Ono je to trochu komplikovanější. Na Unixech máte oprávnění k volání API řešené stylem root může všechno. Uživatelé k citlivějším API nemají přístup, a pouze volají utility s nastaveným setuid. BTW vím že i Linux se kupodivu vyvíjí, takže je to dneska trochu složitější.
Ve Windows NT máme odjakživa na prvním místě privileges, například SeCreatePagefilePrivilege, SeDebugPrivilege, SeShutdownPrivilege, SeTcbPrivilege (aka Act as part of the operating systém). Uživatelé pak mají přiřazené tyhle privileges. A pseudo-account LocalSystem (SYSTEM) je má nastavené jinak než členové skupiny Administrators. K tomu je tam Mandatory Integrity Control, což je implementace MAC; ale to by bylo mimo rámec příspěvku.
Tak jste hezky popsal stav před patnácti lety, dnes je většina systémových volání řešena přes PolicyKit nebo něco podobného a privileges (zvané capabilities) Linux také umí poměrně dlouho. Je také dost zásadní rozdíl, že v Linuxu se setuid používá na malé binárky dělající specifickou činnost, což při používání API moc dobře nejde.
Mimochodem je sice pěkné, že Windows umí privileges, ale když polovina procesů, co něco důležitého dělá, stejně běží pod SYSTEM (a má tak pořád všechna privileges), tak to nemá moc smysl. V Unixech naproti tomu odjakživa služby, pokud to jde, mají práva roota jen pro nastavení potřebného při spuštění (např. otevření privilegovaných portů), které zahodí a běží pod velmi omezeným účtem.
PolicyKit řeší akce, nikoliv API. Ovšem dokud máte X11, je jakákoliv podobná snaha jako lepit náplast na otevřenou zlomeninu :)
Ad polovina procesů, co něco důležitého dělá, stejně běží pod SYSTEM - to záleží na tom co daný servis dělá. Některé vystačí s účty Local Service a Network Service, další běží pod konkrétním účtem, jiné běží jako Local System.
BTW o službách na Unixech mi ani nemluvte. Jde o klubko skriptů, navíc na každém Unixu jiné. Chybí jakékoliv API, a je prakticky nemožné z kódu zjistit, jestli služba běží, případně ji spustit nebo zastavit. Světlou výjimkou je Solaris Service Management Facility. Ten bohužel ale nepoužívají ani všechny služby na Solarisu.
A ty akce se spouští čím? Magií?
Xka toho zrovna moc nedělají, takže není zase takový problém, že běží pod rootem. Nakonec Windowsí obdoba csrss také běží pod SYSTEM ;-)
Měl jsem na mysli služby jako Application Information, Offline Files, Printer Spooler, Themes nebo Windows Search. Jistě extrémně důležité služby, které nutně potřebují mít neustálý přístup ke všemu.
Ad ty akce se spouští čím? - ještě jednou: PolicyKit neřeší permissions k API. Poskytuje vyspělejší alternativu k su.
Ad Xka toho zrovna moc nedělají, takže není zase takový problém, že běží pod rootem - ještě jednou: aplikace běžící v X11 session může vidět X11 events určené libovolné jiné aplikaci, a může libovolné aplikaci poslat X11 event. Takže když se vám zobrazí dotaz "chcete nainstalovat nepodepsaný SW?", libovolná aplikace běžící v dané X11 session tomu dialogu může poslat událost stisku tlačítka "Yes". Když dostanete dotaz na heslo roota, libovolná aplikace běžící v dané session může vidět, co na klávesnici napíšete. A podobně může libovolná aplikace běžící v dané X11 session poslat události stisku kláves procesu běžícímu v jiném kontextu, například terminálu běžícímu pod rootem.
To že X11 běží pod rootem s tím nemá moc společného. Jde o izolaci aplikací na desktopu.
Ad služby jako Application Information, Offline Files, Printer Spooler, Themes nebo Windows Search... nutně potřebují mít neustálý přístup ke všemu - například Application Information se stará o UAC. Nejspíš vytváří ten secure deskop, stará se o přepínání na něj a podle všeho i o přepínání kontextů uživatele. Windows Search je služba běžící pro všechny uživatele, která naslouchá všem změnám na FS. Indexuje i soubory šifrované přes EFS, které může přečíst jen uživatel. Proto se musí přepínat do kontextu daného uživatele. Printer Spooler podle všeho i instaluje a spravuje drivery tiskáren, zakládá virtuální printer porty. Atd., atd.
To že X11 běží pod rootem s tím nemá moc společného. Jde o izolaci aplikací na desktopu.
Izolace aplikací je úplně stejná jako ve Windows. Každý uživatel má vlastní X11 session a aplikace nemohou odposlouchávat události z jiné session.
Ad služby jako Application Information, Offline Files, Printer Spooler, Themes nebo Windows Search... nutně potřebují mít neustálý přístup ke všemu - například Application Information se stará o UAC. Nejspíš vytváří ten secure deskop, stará se o přepínání na něj a podle všeho i o přepínání kontextů uživatele. Windows Search je služba běžící pro všechny uživatele, která naslouchá všem změnám na FS. Indexuje i soubory šifrované přes EFS, které může přečíst jen uživatel. Proto se musí přepínat do kontextu daného uživatele. Printer Spooler podle všeho i instaluje a spravuje drivery tiskáren, zakládá virtuální printer porty. Atd., atd.
Což všechno by mohly řešit ty permissions na API, kdyby se opravdu používaly.
Ad izolace aplikací je úplně stejná jako ve Windows - to ani náhodou. Ve Windows procesy s nižším IL nevidí window messsages procesů s vyšším IO, a nemohou jim ani posílat window messages (s pár záměrnými výjimkami). Takže když na vás blikne UAC screen s dotazem jestli chcete nainstalovat nepodepsaný SW, nebo jestli chcete něco udělat pod adminem, žádná uživatelská aplikace nemůže poslat událost stisku tlačítka "Yes". Podobně když máte v session restricted usera otevřený cmd.exe s oprávněním admina, nemůžou aplikace posílat tomu oknu události stisků kláves.
Ad každý uživatel má vlastní X11 session - dokud v té session nespustíte něco v kontextu jiného uživatele, například nějaké admin tools.
Ad všechno by mohly řešit ty permissions na API - vždyť to také řeší. Local System má vybrané privileges.
Jenže, "Adiministrator" není "root". Nejblíže oprávnění roota je ve windows uživatel "SYSTEM" a světe div se, ten běžný správce počítače nedostane (při běžném použití).
Nevím, zda ho nelze získat pomocí menší úpravy přihlašovací obrazovky (Vista+), nebo jestli tak nelze získat "pouze" oprávnění Administrators. Viz díra utilman.exe. Ale to už opravdu hodně odbíhám od tématu.
Tak kdysi na Win NT bylo mozne si upravit registry a vytvorit tam sluzbu tak, ze se po zalogovani automaticky otevrelo okno cmd.exe, ktere bezelo pod uzivatelem system. Stejne by asi sel spustit napriklad Free Commander. Predpokladam, ze tnhle trik by porad jeste mohl fungovat. Takze pokud se nekdo citi nedocenen tim, ze nesmi pouzit vissi ucet, nez Administrator, tak moznosti tu jsou.
Tyhle stesky jsou pod každou novou verzí Androida a jsou úplně bezpředmětné. Uzavřený není Android, ale jeho konkrétní instalace na konkrétním zařízení. Google umožňuje na svých zařízeních velmi snadno odemknout bootloader a pak rootnutí brání jen to, zda někdo připraví nové jádro nebo patch, který upraví nastavení SELinuxu. U ostatních telefonů to je stejné a záleží jen vůli výrobce. Verze systému na to vliv nemá.