Wie überprüfe ich, ob eine Partition als 'noexec' gemountet ist?

13

Derzeit benutze ich grep '\s/location/\s.*noexec' /proc/mounts.
(Ist das ein richtiger Weg, dies zu überprüfen?)

Benutzer
quelle
1
Das ist in Ordnung, solange Sie nur an neueren Linux-Versionen arbeiten müssen.
Jordanien
1
Überprüfen Sie diese Q / A
dawud

Antworten:

12

Sie sollten den Befehl mount (8) verwenden, der auf allen Linux- und UNIX-Systemen sofort verfügbar ist.

Wenn Sie mountohne zusätzliche Argumente ausführen , werden alle derzeit auf Ihrem System gemounteten Partitionen, der Dateisystemtyp und etwaige Mount-Optionen aufgelistet, znoexec , rwoder nosuid.

Z.B:

% 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
quelle
5
Unter Linux empfehle ich /proc/mountsvorzuziehen mount. Wird /etc/mtabes nicht aktualisiert (z. B. weil /es schreibgeschützt ist), ist die Ausgabe von mountmöglicherweise nicht aktuell. Außerdem erhalten Sie für einige Optionen (nicht noexec) mounteine gefilterte Ausgabe, die für einige Kombinationen von Kernel- und Mount-Versionen irreführend sein kann (z. B. mit den atime-bezogenen Optionen).
Gilles 'SO - hör auf böse zu sein'
Um die Partition zu finden, wird die Datei oder das Verzeichnis in der Datei / goes / here | - df -P gemountet tail -1 | cut -d '' -f 1
brainLoop
4

Vorausgesetzt, dass Sie dies unter Linux ausführen, ist dies in Ordnung. Es wäre etwas robuster zu überprüfen, ob noexeces sich zwischen Kommas oder am Anfang oder Ende der Spalte befindet.

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

Dies könnte in awk klarer sein:

awk -v location="/location" '$2 == location {exit(!($4 ~ /(^|,)noexec($|,)/))} END {exit(2)}'
Gilles 'SO - hör auf böse zu sein'
quelle