Actuellement, j'utilise grep '\s/location/\s.*noexec' /proc/mounts
.
(Est-ce une bonne façon de vérifier cela?)
Actuellement, j'utilise grep '\s/location/\s.*noexec' /proc/mounts
.
(Est-ce une bonne façon de vérifier cela?)
Réponses:
Vous devez utiliser la commande mount (8), qui est disponible dès le départ sur tous les systèmes Linux et UNIX.
Si vous exécutez mount
sans arguments supplémentaires, il liste toutes les partitions actuellement montés sur votre système, le type de système de fichiers et monter toutes les options, telles que noexec
, rw
ou nosuid
.
Par exemple:
% 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
de préférence mount
. Si /etc/mtab
n'est pas mis à jour (par exemple parce qu'il /
est en lecture seule), la sortie de mount
peut ne pas être à jour. En outre, pour certaines options (non noexec
), mount
vous donne une sortie filtrée qui peut être trompeuse pour certaines combinaisons de versions du noyau et du montage (par exemple avec les options liées à atime).
En supposant que vous exécutez cela sur Linux, oui, c'est très bien. Il serait un peu plus robuste de vérifier qu'il se noexec
trouve entre des virgules ou au début ou à la fin de sa colonne.
grep -Eq '^[^ ]+ /location [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts
Cela pourrait être plus clair dans awk:
awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'