Se eu fizesse root sem sistema (nenhuma modificação foi feita para /system
particionar) um dispositivo Nexus, seria capaz de definir recursos em executáveis sem alterar o binário original do kernel?
Muitas vezes, quero gerenciar arquivos sem restrições do meu terminal (requer CAP_DAC_READ_SEARCH
) . No entanto, também quero não usar o superusuário.
As coisas necessárias são ferramentas para definir limites ao longo do suporte ao kernel para usá-las (não depende de outras coisas do espaço do usuário) .
O problema é que eu não possuo esse dispositivo. Portanto, não sei dizer se funcionaria em algum dos Nexus 5X Nexus 6P Nexus 9 Pixel C
.
rooting
root-access
security
file-system
kernel
user2284570
fonte
fonte
/system/bin/ping
comando não está configurado no meu dispositivo Samsung real, sugerindoCAP_NET_RAW
. No entanto, não vou torcer um dispositivo real e não sei qual ferramenta posso usar para ver as informações relevantes, portanto não posso verificar.Respostas:
Embora a pergunta seja antiga, ela continua aparecendo sobre as perguntas Não respondidas (minhas tags) . Então eu acho que devo responder isso :)
APOIO DA AOSP AOS CAPACIDADES:
A pergunta é especificamente sobre dispositivos do Google, nunca usei um dispositivo do Google. No entanto, o que posso dizer com certeza é que os recursos do Linux (processo) devem ter sido ativados na maioria dos dispositivos (se não todos) rodando tão baixo quanto o Android 1.6. A referência é encontrada em
init
esystem_server
, ambos os componentes principais do AOSP. No Android 4.2, por exemplo,installd
- outro componente principal - foi criado para rodar com recursos descartados.Os recursos do sistema de arquivos foram um dos principais aprimoramentos de segurança no Android 4.3, que removeram
set-uid
/set-gid
dos bináriosrun-as
, definindo os recursos de arquivo neles. Isso causou mudanças revolucionárias na jornada de root do Android.O suporte aos recursos Ambient foi adicionado no Android 8, o que desencoraja o uso dos recursos de arquivo:
Muitos
init
serviços dependem delesstoraged
, por exemplo , incluindo os meussshd
ednscrypt-proxy
serviços.SUPORTE DE KERNEL PARA CAPACIDADES:
Chegando à parte do kernel, construir o kernel sem recursos não é opcional:
E:
A versão mais antiga do kernel comum nos repositórios do Android é a 2.6.39, que também inclui suporte para recursos de arquivo.
O suporte para recursos do sistema de arquivos no lado do kernel deve ter sido atrasado por alguns OEMs, mas eles tiveram que mudar, porque, caso contrário, as funcionalidades quebrariam. Por exemplo,
surfaceflinger
o compositor de superfície do Android não funcionará sem os recursos de arquivo desde o Android 7.1.O kernel principal do Linux 4.3 foi corrigido em Sep'15 para os recursos Ambient (processo), portado para o kernel do Android 3.18 e 4.1 em 2016. Portanto, eles são necessariamente parte do kernel.
CONCLUSÃO:
Nas distribuições Linux, poucos programas utilizam os recursos do Linux. Embora não haja
pam_cap
, em sua maioria (ou todos?) Distros ainda usamset-uid
emsu
,sudo
,ping
,mount
,passwd
e assim por diante. Porém, no Android, os recursos estão profundamente integrados na estrutura e nos serviços principais. Removê-los exigiria a edição de centenas ou pode haver milhares de linhas no AOSP e na fonte do kernel. Não faz sentido que um OEM (particularmente o Google, que desenvolveu o AOSP e o kernel do Linux modificado para Android) não faça uso desse recurso de segurança gratuito quando estiver prontamente disponível no kernel do Android. É um recurso puro relacionado ao sistema operacional, não exige nenhum suporte extra de hardware. Portanto, qualquer telefone de qualquer fabricante deve ter recursos suportados.QUESTÕES:
Sim, você deve ser.
Tenho vindo a utilizar
capsh
,getcap
,setcap
,getpcaps
a partirlibcap
enetcap
,pscap
a partirlibcap-ng
sem quaisquer problemas. Mas eu prefiro os recursos Ambient, são fáceis de configurar e não dependem de nenhum recurso do sistema de arquivos, como Atributos Estendidos, como no caso dos recursos do arquivo. Você também pode usarlistxattr
,getxattr
,setxattr
eremovexattr
ferramentas dexattr_syscall_wrapper
manipularsecurity.capability
ou de qualquer outra xattr diretamente.Do seu comentário:
O ping do Android não tem
set-uid
nemCAP_NET_RAW
. Ele cria um soquete não-RAW especialIPPROTO_ICMP
que - ao contrárioIPPROTO_RAW
- não requer privilégios.REFERÊNCIAS ADICIONAIS:
Além das mais de 10 referências fornecidas acima, aqui estão algumas outras partes do código AOSP que suportam e fazem uso dos recursos do Linux:
libc
,init
,trusty
(OS)libcap
,libcap-ng
zygote
(aplicativos bifurcada esystem_server
),hostapd
,wpa_supplicant
,dnsmasq
,logd
,netd
(NetLink
gerente, DNS privado),debuggerd
(teste),sdcard
daemon,performanced
,incidentd
,mtpd
,traced_probes
(perfetto),racoon
(IPSec),wificond
, um número de daemons HAL inclusiverild
.reboot
(INIT),dumpstate
,tcpdump
,strace
,iputils
(ping
,traceroute
etc.)adbd
faz uso dessa biblioteca para eliminar privilégios.capability
classe para conceder / negar recursos aos domínios.Conclui que o Android depende muito dos recursos do Linux, não é um recurso pouco usado .
RELACIONADOS:
fonte