Risposte:
È necessario utilizzare il comando mount (8), disponibile immediatamente su tutti i sistemi Linux e UNIX.
Se si esegue mount
senza argomenti aggiuntivi, elencherà tutte le partizioni attualmente montate sul vostro sistema, tipo di file system e di qualsiasi opzioni, come il montaggio noexec
, rw
o nosuid
.
Per esempio:
% 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)
/proc/mounts
in preferenza mount
. Se /etc/mtab
non viene aggiornato (ad es. Perché /
è di sola lettura), l'output di mount
potrebbe non essere aggiornato. Inoltre, per alcune opzioni (non noexec
), mount
offre un output filtrato che può essere fuorviante per alcune combinazioni di versioni del kernel e del mount (ad esempio con le opzioni relative ad atime).
Supponendo che lo stai eseguendo su Linux, sì, va bene. Sarebbe un po 'più robusto verificare che noexec
sia tra le virgole o all'inizio o alla fine della sua colonna.
grep -Eq '^[^ ]+ /location [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts
Questo potrebbe essere più chiaro in awk:
awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'