Por que a opção exec não está listada em / proc / mounts?

3

Meu entendimento é /proc/mounts deve listar todas as opções de montagem para um sistema de arquivos, incluindo os padrões do kernel, então fiquei surpreso ao ver que exec (entre outros) não está listado aqui?

Por exemplo, meus sistemas de arquivos raiz e inicial no fstab:

/dev/mapper/vg0-xen_root  /      ext4  noatime,errors=remount-ro  0  1
/dev/mapper/vg1-xen_home  /home  ext4  defaults                   0  2

e como eles aparecem em / proc / mounts:

/dev/mapper/vg0-xen_root /     ext4 rw,noatime,errors=remount-ro,user_xattr,barrier=1,data=ordered 0 0
/dev/mapper/vg1-xen_home /home ext4 rw,relatime,user_xattr,barrier=1,data=ordered                  0 0


Os padrões independentes do sistema de arquivos documentados em man mount :

defaults
    Use default options: rw, suid, dev, exec, auto, nouser, and async.


Por que alguns padrões (por exemplo, rw ) estão listados, mas outros (por exemplo, exec ) não são? Existe uma maneira de obter o conjunto completo de opções de montagem associadas a um sistema de arquivos?

    
por Dylan Cali 25.08.2014 / 14:03

3 respostas

1

Os arquivos em /proc são gerados pelo kernel, não pelo utilitário mount . O kernel omite as opções que estão em sua configuração padrão do kernel. Os padrões do utilitário mount nem sempre correspondem aos padrões do kernel. Você pode verificar os padrões da versão do seu kernel no código-fonte, em fs/proc_namespace.c . Por exemplo, a partir da versão 3.15, noexec é exibido se aplicável; nada é exibido no caso sem noexec (ou seja, exec ).

    
por 26.08.2014 / 04:06
3

O motivo provavelmente é que exec é o oposto de noexec e é noexec listado. Portanto, se noexec estiver ausente, o usuário saberá que exec está em vigor. Isso é semelhante a dev / nodev . Parece que a exceção é rw , que está listada mesmo estando na lista padrão.

Nota: enquanto a página man mount (8) diz que defaults é uma lista fixa de opções padrão, o fstab

    
por 25.08.2014 / 14:14
2

man mount tem uma boa lista. Mas sistema de arquivos induvidual pode definir seus próprios sinalizadores - > Existe uma lista separada para cada sistema de arquivos. Mas existem bandeiras comuns e elas estão listadas na página de montagem.

exec é um sinalizador padrão. A lista dos flags de montagem padrão também está na montagem man (AFAIK no kernel sys_mount () syscall não existe tal coisa). Mas se você não permitir, use noexec .

    
por 25.08.2014 / 14:16