Wenn ich /system
ein Nexus-Gerät ohne System-Root (keine Änderung an der Partition) verwende, kann ich dann Funktionen für ausführbare Dateien festlegen , ohne die ursprüngliche Kernel-Binärdatei zu ändern?
Ich möchte häufig Dateien ohne Einschränkungen von meinem Terminal aus verwalten (erforderlich CAP_DAC_READ_SEARCH
) . Ich möchte aber auch den Superuser nicht benutzen.
Die erforderlichen Dinge sind Werkzeuge zum Setzen von Caps entlang der Kernelunterstützung, um sie zu verwenden (es hängt nicht von anderen User-Space-Dingen ab) .
Das Problem ist, ich besitze kein solches Gerät. Ich kann also nicht sagen, ob es bei irgendetwas funktionieren würde Nexus 5X Nexus 6P Nexus 9 Pixel C
.
rooting
root-access
security
file-system
kernel
user2284570
quelle
quelle
/system/bin/ping
Befehl auf meinem Samsung-Gerät nicht richtig eingestellt ist, was darauf hindeutetCAP_NET_RAW
. Ich werde jedoch kein echtes Gerät rooten und weiß nicht, mit welchem Tool ich die relevanten Informationen anzeigen kann, sodass ich nicht überprüfen kann.Antworten:
Obwohl die Frage alt ist, wird sie weiterhin über den unbeantworteten Fragen (meinen Tags) angezeigt. Also ich denke ich sollte das beantworten :)
AOSP'S UNTERSTÜTZUNG FÜR FÄHIGKEITEN:
Die Frage bezieht sich speziell auf Google-Geräte. Ich habe noch nie ein Google-Gerät verwendet. Was ich jedoch mit Sicherheit sagen kann, ist, dass Linux- (Prozess-) Funktionen auf den meisten Geräten (wenn nicht allen) aktiviert sein müssen, auf denen nur Android 1.6 ausgeführt wird. Die Referenz finden Sie in
init
undsystem_server
, den beiden wichtigsten Komponenten von AOSP. In Android 4.2 wurde zum Beispiel eineinstalld
weitere Kernkomponente erstellt, die mit fehlenden Funktionen ausgeführt werden kann.Die Dateisystemfunktionen waren eine der wichtigsten Sicherheitsverbesserungen in Android 4.3, bei denen Binärdateien entfernt
set-uid
bzw.set-gid
aus diesen entfernt und Dateifunktionen festgelegt wurdenrun-as
. Dies führte zu revolutionären Veränderungen in der Android-Rooting-Reise.Unterstützung für Ambient - Funktionen wurde in Android 8 hinzugefügt , die schrecken die Verwendung von Datei - Funktionen:
Viele
init
Dienste hängen von ihnen ab, zstoraged
. B. meine eigenensshd
unddnscrypt-proxy
Dienste.KERNEL'S UNTERSTÜTZUNG FÜR FÄHIGKEITEN:
Im Kernel-Teil ist es nicht optional , einen Kernel ohne Fähigkeiten zu erstellen:
Und:
Die älteste gemeinsame Kernel-Version auf Android-Repositories ist 2.6.39, die auch Dateifunktionen unterstützt.
Die Unterstützung von Dateisystemfunktionen auf der Kernelseite muss von einigen OEMs verzögert worden sein , sie mussten jedoch umsteigen, da sonst die Funktionalität beeinträchtigt würde. Zum Beispiel wird
surfaceflinger
(Android's Surface Composer ) ohne Dateifunktionen seit Android 7.1 nicht mehr funktionieren.Magistrale Linux - Kernel 4.3 in in Sep'15 gepatcht wurde für Ambient (Prozess) Fähigkeiten, zurückportiert zu Android - Kernel 3.18 und 4.1 in 2016. So sie unbedingt ein Teil des Kernels ist.
FAZIT:
In Linux-Distributionen nutzen nur wenige Programme Linux-Funktionen. Zwar gibt es
pam_cap
, vor allem (oder alle?) Distros noch verwendetset-uid
aufsu
,sudo
,ping
,mount
,passwd
und so weiter. Unter Android sind die Funktionen jedoch tief in das Framework und die Kerndienste integriert. Um sie zu entfernen, müssten Hunderte oder möglicherweise Tausende von Zeilen in AOSP- und Kernel-Quellen bearbeitet werden. Es macht keinen Sinn, dass ein OEM (insbesondere Google, das AOSP und einen modifizierten Linux-Kernel für Android entwickelt hat) diese kostenlose Sicherheitsfunktion nicht nutzt, wenn sie im Android-Kernel verfügbar ist. Es handelt sich um eine reine OS-bezogene Funktion, die keine zusätzliche Hardwareunterstützung erfordert. Daher muss jedes Telefon eines beliebigen Herstellers über unterstützte Funktionen verfügen.FRAGEN:
Ja, das musst du sein.
Ich habe mit
capsh
,getcap
,setcap
,getpcaps
ablibcap
undnetcap
,pscap
auslibcap-ng
ohne Probleme. Ich bevorzuge jedoch Ambient-Funktionen. Diese sind einfach zu konfigurieren und hängen nicht von Dateisystemfunktionen wie Extended Attributes ab, wie dies bei Dateifunktionen der Fall ist. Sie können auch verwendet werdenlistxattr
,getxattr
,setxattr
undremovexattr
Werkzeuge ausxattr_syscall_wrapper
zu manipulierensecurity.capability
oder anderen xattr direkt.Aus Ihrem Kommentar:
Android's Ping hat weder
set-uid
nochCAP_NET_RAW
. Es wird ein spezieller Nicht-RAW- Socket erstellt,IPPROTO_ICMP
der - im Gegensatz zuIPPROTO_RAW
- keine Berechtigungen erfordert.WEITERE REFERENZEN:
Zusätzlich zu mehr als 10 Referenzen, die oben angegeben wurden, sind hier einige andere Teile des AOSP-Codes, der Linux-Fähigkeiten unterstützt und nutzt:
libc
,init
,trusty
(O)libcap
,libcap-ng
zygote
(gegabelt Anwendungen undsystem_server
)hostapd
,wpa_supplicant
,dnsmasq
,logd
,netd
(NetLink
Manager, private DNS),debuggerd
(Test),sdcard
Dämonperformanced
,incidentd
,mtpd
,traced_probes
(perfetto),racoon
(IPSec),wificond
eine Reihe von HAL Daemons einschließlichrild
.reboot
(init),dumpstate
,tcpdump
,strace
,iputils
(ping
,traceroute
etc.)adbd
verwendet diese Bibliothek, um Berechtigungen zu löschen.capability
class, um Domänen Funktionen zu gewähren / zu verweigern.Es kommt zu dem Schluss, dass Android in hohem Maße von Linux-Fähigkeiten abhängt, es ist keine wenig genutzte Funktion.
VERBUNDEN:
quelle