Come verificare se una partizione è montata come 'noexec'?


14

Attualmente sto usando grep '\s/location/\s.*noexec' /proc/mounts.
(È un modo giusto di controllare questo?)


1
Va bene finché devi lavorare solo su versioni più recenti di Linux.
Giordania,

1
Controlla questo Q / A
dawud,

Risposte:


13

È necessario utilizzare il comando mount (8), disponibile immediatamente su tutti i sistemi Linux e UNIX.

Se si esegue mountsenza argomenti aggiuntivi, elencherà tutte le partizioni attualmente montate sul vostro sistema, tipo di file system e di qualsiasi opzioni, come il montaggio noexec, rwo 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)

5
Su Linux, ti consiglio di utilizzare /proc/mountsin preferenza mount. Se /etc/mtabnon viene aggiornato (ad es. Perché /è di sola lettura), l'output di mountpotrebbe non essere aggiornato. Inoltre, per alcune opzioni (non noexec), mountoffre 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).
Gilles 'SO- smetti di essere malvagio' il

Per trovare la partizione su cui monta il file o la directory - df -P file / going / here | coda -1 | cut -d '' -f 1
brainLoop

4

Supponendo che lo stai eseguendo su Linux, sì, va bene. Sarebbe un po 'più robusto verificare che noexecsia 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)}'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.