O que dizem as fontes
Como todos os outros, meu /System/Library/Sandbox/rootless.conf
arquivo contém as seguintes entradas:
$ cat /System/Library/Sandbox/rootless.conf
[…]
/System
[…]
* /System/Library/Extensions
/System/Library/Extensions/*
[…]
Todas as fontes sobre o assunto que encontrei (exemplo 1 2 3 ) parecem sugerir que, de acordo com as regras de rootless.conf
, essas entradas serão aplicadas no momento da inicialização e podem ser interpretadas da seguinte maneira:
Dentro da
/System
hierarquia , nenhum processo pode gravar em nenhum arquivo ou pasta, exceto quando uma regra mais específica concede esse acesso;por dentro
/System/Library/Extensions
, qualquer processo com privilégios de root pode criar novos arquivos e subpastas;no entanto, nenhum processo é permitido modificar ou excluir quaisquer arquivos ou subpastas existentes dentro
/System/Library/Extensions
.
O que eu realmente observo
No entanto, quando examinei o conteúdo real /System/Library/Extensions
, descobri para minha surpresa vários arquivos e pastas que, apesar de o SIP estar ativo, são perfeitamente editáveis e excluídos:
$ csrutil status
System Integrity Protection status: enabled.
$ ls -lAO /System/Library/Extensions | tail -16
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 corecrypto.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 exfat.kext
drwxr-xr-x 3 root wheel - 102 19 Aug 2013 hp_Inkjet9_io_enabler.kext
drwxr-xr-x 3 root wheel - 102 27 Apr 2013 hp_fax_io.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 iPodDriver.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 mcxalr.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 msdosfs.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 ntfs.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 pmtelemetry.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 pthread.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 smbfs.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 triggers.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 udf.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 vecLib.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 webcontentfilter.kext
drwxr-xr-x@ 3 root wheel restricted 102 20 Apr 2016 webdav_fs.kext
Observe que hp_Inkjet9_io_enabler.kext
e hp_fax_io.kext
são extensões de kernel de terceiros que já estavam presentes no momento em que atualizei para o El Capitan (o que fiz em maio de 2016).
Quando pesquiso a lista de exceções de SIP em /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
, também não vejo as extensões de terceiros listadas lá:
$ defaults read /System/Library/Sandbox/Compatibility.bundle/Contents/Info.plist CFBundleVersion
12.0
$ grep Extensions /System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths
/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleRTL815XComposite109.kext
/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleRTL815XEthernet109.kext
Encontrei mais de uma dúzia de extensões de kernel que também não possuem o restricted
sinalizador e o com.apple.rootless
atributo; todas as extensões afetadas do kernel parecem ser extensões de terceiros que eu instalei ao longo da última década e aparentemente sobreviveram à atualização para o El Capitan.
O que me faz pensar nos seguintes enigmas:
O que eu adoraria saber
Q1 Bandeiras ausentes
Como é que nenhuma extensão de kernel de terceiros - e de fato nenhum arquivo que eu criei manualmente /System/Library/Extensions
- recebe um restricted
sinalizador ou com.apple.rootless
atributo, mesmo que a rootless.conf
regra pareça exigir o contrário?
Por exemplo, uma ls -dlO
cadeia ao longo do caminho hp_fax_io.kext
revela:
$ ruby -rpathname -e 'puts Pathname.new("/System/Library/Extensions/hp_fax_io.kext").enum_for(:ascend).to_a' | xargs ls -dlO
drwxr-xr-x 39 root wheel - 1394 19 Jan 11:36 /
drwxr-xr-x@ 4 root wheel restricted 136 19 Jan 11:29 /System
drwxr-xr-x 80 root wheel restricted 2720 10 Jan 19:19 /System/Library
drwxr-xr-x 297 root wheel sunlnk 10098 22 Jan 00:57 /System/Library/Extensions
drwxr-xr-x 3 root wheel - 102 27 Apr 2013 /System/Library/Extensions/hp_fax_io.kext
Lembro-me também de que, na época em que fiz o upgrade de Yosemite, o instalador do El Capitan decidiu mudar basicamente tudo e a avó para a quarentena do SIP em muitos casos.
Q2 Hora da execução
Se eu fosse:
inicialize em um volume de recuperação,
depois adicione
rootless.conf
(no volume original) uma linha:/usr/local/*
e, em seguida, reinicie novamente no volume original,
o macOS apagaria todos os arquivos /usr/local/
com restricted
sinalizadores na próxima reinicialização?
Caso contrário, isso me leva à minha pergunta final:
Q3 Finalidade real
Que finalidade rootless.conf
realmente serve?
fonte