Si j'ai rooté sans système (aucune modification sur la /system
partition) un appareil Nexus, serais-je capable de définir des capacités sur les exécutables sans changer le binaire du noyau d'origine?
Je souhaite souvent gérer des fichiers sans restrictions depuis mon terminal (obligatoire CAP_DAC_READ_SEARCH
) . Cependant, je souhaite également ne pas utiliser le superutilisateur.
Les éléments requis sont des outils pour définir des plafonds le long du support du noyau pour les utiliser (il ne dépend pas d'autres choses de l'espace utilisateur) .
Le problème est que je ne possède pas un tel appareil. Je ne peux donc pas dire si cela fonctionnerait sur l'un ou l'autre Nexus 5X Nexus 6P Nexus 9 Pixel C
.
rooting
root-access
security
file-system
kernel
user2284570
la source
la source
/system/bin/ping
commande n'est pas configurée sur mon véritable appareil Samsung, ce qui suggèreCAP_NET_RAW
. Cependant, je ne rooterai pas un véritable appareil et je ne sais pas quel outil je peux utiliser pour voir les informations pertinentes, donc je ne peux pas vérifier.Réponses:
Bien que la question soit ancienne, elle continue d'apparaître au-dessus des questions sans réponse (mes balises) . Je pense donc que je devrais répondre à cette question :)
SOUTIEN DE L'AOSP AUX CAPACITÉS:
La question concerne spécifiquement les appareils Google, je n'ai jamais utilisé d'appareil Google. Cependant, ce que je peux dire avec certitude, c'est que les capacités Linux (processus) doivent avoir été activées sur la plupart des appareils (sinon tous) fonctionnant aussi bas que Android 1.6. La référence se trouve dans
init
etsystem_server
, les deux composants très principaux de l'AOSP. Dans Android 4.2, par exemple,installd
- un autre composant de base - a été conçu pour fonctionner avec des capacités abandonnées.Les capacités du système de fichiers ont été l'une des principales améliorations de la sécurité d'Android 4.3 qui ont supprimé
set-uid
/set-gid
des fichiers binaires commerun-as
, en définissant des capacités de fichier sur eux. Cela a provoqué des changements révolutionnaires dans le parcours d'enracinement d'Android.La prise en charge des capacités ambiantes a été ajoutée dans Android 8, ce qui décourage l'utilisation des capacités de fichiers:
De nombreux
init
services en dépendent, par exemplestoraged
, le miensshd
et mesdnscrypt-proxy
services.LE SOUTIEN DE KERNEL AUX CAPACITÉS:
En ce qui concerne la partie noyau, la construction du noyau sans capacités n'est pas facultative:
Et:
La version la plus ancienne du noyau commun sur les référentiels Android est 2.6.39 qui inclut également la prise en charge des capacités de fichier.
La prise en charge des capacités du système de fichiers côté noyau a dû être retardée par certains OEM, mais ils ont dû changer, car sinon les fonctionnalités se briseraient. Par exemple
surfaceflinger
(le composeur de surface d'Android ) ne fonctionnera pas sans capacités de fichier depuis Android 7.1.Le noyau Linux principal 4.3 a été corrigé en septembre 2015 pour les capacités ambiantes (processus), rétroporté vers les noyaux Android 3.18 et 4.1 en 2016. Ils font donc nécessairement partie du noyau.
CONCLUSION:
Sur les distributions Linux, très peu de programmes utilisent les capacités de Linux. Bien qu'il y ait
pam_cap
, pour la plupart (ou tous?) Distros utilisent encoreset-uid
sursu
,sudo
,ping
,mount
,passwd
et ainsi de suite. Mais sur Android, les capacités sont profondément intégrées dans le cadre et les services de base. Pour les supprimer, il faudrait éditer des centaines ou des milliers de lignes dans AOSP et la source du noyau. Cela n'a aucun sens qu'un OEM (en particulier Google, qui a développé AOSP et modifié le noyau Linux pour Android) n'utilise pas cette fonctionnalité de sécurité gratuite lorsqu'elle est facilement disponible dans le noyau Android. Il s'agit d'une fonctionnalité purement liée au système d'exploitation, qui ne nécessite aucun support matériel supplémentaire. Ainsi, tout téléphone de n'importe quel fabricant doit avoir des capacités prises en charge.DES QUESTIONS:
Oui, tu dois l'être.
J'utilise
capsh
,getcap
,setcap
, àgetpcaps
partirlibcap
etnetcap
, àpscap
partirlibcap-ng
sans aucun problème. Mais je préfère les capacités ambiantes, celles-ci sont faciles à configurer et ne dépendent d'aucune fonctionnalité du système de fichiers comme les attributs étendus comme dans le cas des capacités de fichier. Vous pouvez également utiliserlistxattr
,getxattr
,setxattr
et desremovexattr
outils dexattr_syscall_wrapper
manipulersecurity.capability
ou de toute autre xattr directement.De votre commentaire:
Le ping d'Android n'a
set-uid
niCAP_NET_RAW
. Il crée un socket spécial non-RAWIPPROTO_ICMP
qui - contrairement àIPPROTO_RAW
- ne nécessite aucun privilège.AUTRES RÉFÉRENCES:
En plus de plus de 10 références données ci-dessus, voici quelques autres parties du code AOSP prenant en charge et utilisant les capacités Linux:
libc
,init
,trusty
(OS)libcap
,libcap-ng
zygote
(applications fourchues etsystem_server
),hostapd
,wpa_supplicant
,dnsmasq
,logd
,netd
(NetLink
gestionnaire, DNS privé),debuggerd
(test),sdcard
démon,performanced
,incidentd
,mtpd
,traced_probes
(perfetto),racoon
(IPSec),wificond
un certain nombre de daemons HAL y comprisrild
.reboot
(init),dumpstate
,tcpdump
,strace
,iputils
(ping
,traceroute
etc.)adbd
utilise cette bibliothèque pour supprimer les privilèges.capability
classe pour accorder / refuser des capacités aux domaines.Il conclut qu'Android dépend fortement des capacités de Linux, ce n'est pas une fonctionnalité peu utilisée .
EN RELATION:
la source