Jeśli bezsystemowy root (bez modyfikacji /system
partycji) urządzenia Nexus, będę w stanie ustawić możliwości plików wykonywalnych bez zmiany oryginalnego pliku binarnego jądra?
Często chcę zarządzać plikami bez ograniczeń z mojego terminala (wymagają CAP_DAC_READ_SEARCH
) . Chcę też nie używać superużytkownika.
Wymagane są narzędzia do ustawiania limitów wraz z obsługą jądra do ich używania (nie zależy to od innych rzeczy w przestrzeni użytkownika) .
Problem polega na tym, że nie posiadam takiego urządzenia. Więc nie mogę powiedzieć, czy to zadziała na którymkolwiek Nexus 5X Nexus 6P Nexus 9 Pixel C
.
rooting
root-access
security
file-system
kernel
użytkownik2284570
źródło
źródło
/system/bin/ping
polecenie to nie jest setuid na moim prawdziwym urządzeniu Samsung, co sugerujeCAP_NET_RAW
. Jednak nie zrootuję prawdziwego urządzenia i nie wiem, którego narzędzia mogę użyć do wyświetlenia odpowiednich informacji, więc nie mogę sprawdzić.Odpowiedzi:
Chociaż pytanie jest stare, wciąż pojawia się nad pytaniami bez odpowiedzi (moje tagi) . Myślę więc, że powinienem na to odpowiedzieć :)
WSPARCIE AOSP DLA MOŻLIWOŚCI:
Pytanie dotyczy w szczególności urządzeń Google. Nigdy nie korzystałem z urządzenia Google. Mogę jednak powiedzieć na pewno, że funkcje Linux (proces) musiały być włączone na większości urządzeń (jeśli nie wszystkich) z tak niskim poziomem jak Android 1.6. Odniesienia można znaleźć w
init
isystem_server
, zarówno bardzo podstawowych elementach AOSP. Na przykład w Androidzie 4.2installd
- innym kluczowym składniku - działał z upuszczonymi możliwościami.Możliwości systemu plików były jednym z głównych Ulepszeń bezpieczeństwa w Androidzie 4.3, które usunęły
set-uid
/set-gid
z plików binarnych, takie jakrun-as
ustawienie na nich możliwości plików. Spowodowało to rewolucyjne zmiany w rootowaniu Androida.W systemie Android 8 dodano obsługę funkcji Ambient, która zniechęca do korzystania z funkcji plików:
Wiele
init
usług zależy od nich, np.storaged
Mojesshd
idnscrypt-proxy
usługi.WSPARCIE KERNELA DLA MOŻLIWOŚCI:
Jeśli chodzi o część jądra, budowanie jądra bez możliwości nie jest opcjonalne:
I:
Najstarsza popularna wersja jądra w repozytoriach Androida to 2.6.39, która obejmuje także obsługę plików.
Obsługa możliwości systemu plików po stronie jądra musiała być opóźniona przez niektórych producentów OEM, ale musieli się przełączyć, ponieważ w przeciwnym razie funkcje uległyby awarii. Na przykład
surfaceflinger
( kompozytor powierzchniowy Androida ) nie będzie działać bez możliwości obsługi plików od Androida 7.1.Główne jądro Linuksa 4.3 zostało załatane we wrześniu 15 dla funkcji Ambient (procesowych), w 2016 r. Zostało przeniesione do jądra Androida 3.18 i 4.1. Dlatego są one koniecznie częścią jądra.
WNIOSEK:
W dystrybucjach Linuksa bardzo niewiele programów korzysta z możliwości Linuksa. Choć nie jest
pam_cap
, w większości (lub wszystkich?) Dystrybucje nadal korzystaćset-uid
nasu
,sudo
,ping
,mount
,passwd
i tak dalej. Ale w Androidzie możliwości są głęboko zintegrowane z usługami szkieletowymi i podstawowymi. Ich usunięcie wymagałoby edycji setek lub może być tysięcy linii w AOSP i źródle jądra. Nie ma sensu, aby producent OEM (zwłaszcza Google, który opracował AOSP i zmodyfikował jądro Linuksa dla Androida), nie korzysta z tej bezpłatnej funkcji bezpieczeństwa, gdy jest łatwo dostępny w jądrze Androida. Jest to funkcja związana wyłącznie z systemem operacyjnym, nie wymaga dodatkowego wsparcia sprzętowego. Tak więc każdy telefon dowolnego producenta musi mieć obsługiwane funkcje.PYTANIA:
Tak, musisz być.
Używam
capsh
,getcap
,setcap
,getpcaps
zlibcap
, anetcap
,pscap
zelibcap-ng
bez żadnych problemów. Ale wolę możliwości Ambient, te są łatwe do skonfigurowania i nie zależą od żadnych funkcji systemu plików, takich jak Rozszerzone Atrybuty, jak w przypadku możliwości plików. Można również użyćlistxattr
,getxattr
,setxattr
iremovexattr
narzędzi zxattr_syscall_wrapper
manipulowaniasecurity.capability
lub inny xattr bezpośrednio.Z twojego komentarza:
Ping Androida nie ma
set-uid
aniCAP_NET_RAW
. Tworzy specjalne gniazdo inne niż RAW,IPPROTO_ICMP
które - w przeciwieństwie doIPPROTO_RAW
- nie wymaga żadnych uprawnień.DALSZE REFERENCJE:
Oprócz ponad 10 referencji podanych powyżej, oto kilka innych części kodu AOSP obsługujących i wykorzystujących możliwości Linuksa:
libc
,init
,trusty
(OS)libcap
,libcap-ng
zygote
(rozwidlone aplikacje isystem_server
),hostapd
,wpa_supplicant
,dnsmasq
,logd
,netd
(NetLink
kierownik, prywatne DNS),debuggerd
(test),sdcard
demon,performanced
,incidentd
,mtpd
,traced_probes
(perfetto),racoon
(IPSec)wificond
, liczba demonów HAL włącznierild
.reboot
(startowych),dumpstate
,tcpdump
,strace
,iputils
(ping
,traceroute
etc.)adbd
korzysta z tej biblioteki do usuwania uprawnień.capability
klasy do przyznawania / odmawiania możliwości domenom.Dochodzi do wniosku, że Android bardzo zależy od możliwości Linuksa, nie jest to mało używana funkcja.
ZWIĄZANE Z:
źródło