Como verificar se uma partição está montada como 'noexec'?

14

Atualmente estou usando grep '\s/location/\s.*noexec' /proc/mounts.
(Essa é a maneira correta de verificar isso?)

do utilizador
fonte
1
Tudo bem, desde que você só precise trabalhar em versões mais recentes do Linux.
Jordanm 17/09
1
Verifique este Q / A
dawud

Respostas:

13

Você deve usar o comando mount (8), disponível imediatamente em todos os sistemas Linux e UNIX.

Se você executar mountsem quaisquer argumentos adicionais, ele irá listar todos montados atualmente partições no seu sistema, tipo de sistema de arquivo e qualquer opções, tais como montagem noexec, rwou nosuid.

Por exemplo:

% mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
/dev/sda1 on /boot type ext4 (rw,relatime,data=ordered)
/dev/mapper/basement-root on / type ext4 (rw,relatime,data=ordered)
zygis
fonte
5
No Linux, eu recomendo usar /proc/mountspreferencialmente mount. Se /etc/mtabnão for atualizado (por exemplo, porque /é somente leitura), a saída de mountpode não estar atualizada. Além disso, para algumas opções (não noexec), mountfornece saída filtrada que pode ser enganosa para algumas combinações de versões do kernel e mount (por exemplo, com as opções relacionadas ao atime).
Gilles 'SO- stop be evil'
Para encontrar a partição na qual o arquivo ou diretório monta - df -P file / goes / here | cauda -1 | cortar -d'' -f 1
brainLoop
4

Supondo que você esteja executando isso no Linux, sim, tudo bem. Seria um pouco mais robusto verificar isso noexecentre vírgulas ou no início ou no final de sua coluna.

grep -Eq '^[^ ]+ /location [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts

Isso pode ser mais claro no awk:

awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'
Gilles 'SO- parar de ser mau'
fonte