¿Cómo verificar si una partición está montada como 'noexec'?

14

Actualmente, estoy usando grep '\s/location/\s.*noexec' /proc/mounts.
(¿Es esa una forma correcta de verificar esto?)

usuario
fuente
1
Eso está bien siempre que solo necesite trabajar en versiones más nuevas de Linux.
jordanm
1
Verifique este Q / A
dawud

Respuestas:

13

Debe usar el comando mount (8), que está disponible de fábrica en todos los sistemas Linux y UNIX.

Si se ejecuta mountsin ningún argumento adicional, aparecerá una lista de todos montados el momento particiones en su sistema, el tipo de sistema de archivos y cualquier opciones de montaje, como por ejemplo noexec, rwo nosuid.

P.ej:

% 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
fuente
55
En Linux, recomiendo usar /proc/mountscon preferencia a mount. Si /etc/mtabno se actualiza (p. Ej., Porque /es de solo lectura), la salida de mountpuede no estar actualizada. Además, para algunas opciones (no noexec), mountle ofrece una salida filtrada que puede ser engañosa para algunas combinaciones de versiones del núcleo y el montaje (por ejemplo, con las opciones relacionadas con atime).
Gilles 'SO- deja de ser malvado'
Para encontrar la partición en la que se monta el archivo o directorio - df -P file / goes / here | cola -1 | cut -d '' -f 1
brainLoop
4

Suponiendo que esté ejecutando esto en Linux, sí, está bien. Sería un poco más robusto comprobar que noexecestá entre comas o al principio o al final de su columna.

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

Esto podría ser más claro en awk:

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