Eu escrevi/ajustei um módulo de kernel personalizado e o instalei.
Funciona como esperado, mas notei que outros módulos do kernel no meu sistema são compactados com xz e têm permissões 0444, enquanto eu não compactei o meu e instalei com o bit executável definido (permissões 0555).
$ stat --format=%A /path/to/my-module.ko
-r-xr-xr-x
$ stat --format=%A /path/to/other-module.ko.xz
-r--r--r--
Isso tem alguma implicação - desempenho, segurança ou outros? Pretendo compactar o meu e definir as permissões para corresponder ao que outros módulos estão usando, mas não sei a motivação subjacente para a compactação e as permissões que estão usando.
Sobre permissões:
Não há necessidade de definir bit executável ou sinalizador de gravação no módulo. O arquivo do módulo deve ser legível e pronto.
insmod
,modinfo
,modprobe
ou qualquer outra coisa é necessário para ler o arquivo do módulo. Permissões de leitura para grupo ou outros podem ser necessárias para depurar o módulo viaobjdump
,nm
, ou sejaNão há nenhuma razão real para definir o bit executável para o módulo para ninguém.
Sobre compressão:
O kernel do Linux possui implementação de compactação XZ integrada. O kernel do Linux pode ler com sucesso (descompactar anteriormente) a
initrd
imagem, os módulos do kernel e até a si mesmo ( ovmlinuz
últimoz
no nome do arquivo do kernel informa que a imagem do kernel está compactada).Não sei qual distro você usa. Mas se você comprimiu os módulos do kernel, são as regras da sua distro. É claro que os módulos compactados têm menos tamanho em comparação com os módulos não compactados, mas se o módulo do kernel for compilado sem símbolos de depuração, a diferença de tamanho entre os módulos do kernel compactados e não compactados será pequena. Por outro lado, é melhor usar compactação e economizar espaço para outra coisa, em vez de gastá-lo apenas para armazenar uma grande quantidade de módulos, considerando que uma grande contagem não será necessária.