Schneller Weg, um / etc / fstab Einstellungen wiederherzustellen oder neu zu laden?

11

Ich arbeite mit einem Komplex /etc/fstabauf einem RHEL 6.x-basierten Server. Das System verfügt über eine Vielzahl von Mount-Optionen, die auf acht Partitionen verwendet werden, einschließlich mehrerer Bind-Mounts. Ich teste Optionen und deren Auswirkungen auf das Bild, an dem ich arbeite.

zB Optionen wie nodev, nosuid, noexec, nobarrierund mehrere XFS - Dateisystem Parameter vorhanden sind.

Obwohl ich weiß, dass es möglich ist, mit bestimmten Optionen erneut zu mounten, gibt es eine schnelle Möglichkeit, alle Mounts auf die persistenten Einstellungen zurückzusetzen, die fest codiert sind /etc/fstab?

Zum Beispiel sysctl -plädt die /etc/sysctl.confWerte und wendet sie an. Gibt es ein mountÄquivalent?


Bearbeiten:

Ein Beispiel für eine Konfiguration:

#
# /etc/fstab
#
UUID=e6ca80cd    /                       ext4    noatime,nobarrier        1 1
UUID=a327d315    /boot                   ext4    defaults                 1 2
UUID=333ada18    /home                   ext4    noatime,nobarrier,nodev  1 2
UUID=7835718b    /tmp                    ext4    nodev,nosuid,noexec      1 2
UUID=4dd2e9d4    /usr                    ext4    defaults                 1 2
UUID=c274f65f    /var                    ext4    noatime,nobarrier        1 2
UUID=5b5941e0    /var/log                ext4    defaults                 1 2
UUID=3645951a    /var/log/audit          ext4    defaults                 1 2
UUID=3213123c    /vol1                   xfs     noatime,logbufs=8,nobarrier 1 2
UUID=1ee1c070    swap                    swap    defaults                 0 0
# Bind mount for /tmp
/tmp             /var/tmp                none    bind                     0 0
tmpfs            /dev/shm                tmpfs   nodev,nosuid,noexec      0 0
devpts           /dev/pts                devpts  gid=5,mode=620           0 0
sysfs            /sys                    sysfs   defaults                 0 0
proc             /proc                   proc    defaults                 0 0

Natürlich kann ein Entwickler bittet um ausführen zu Berechtigungen , /tmpum eine Anwendung zu installieren ...

Ich stelle fest, dass die remountOption auf diesem System nicht funktioniert, ohne das Gerät und den (Neu-) Mountpunkt anzugeben . Dies ist ein sicherheitshärteter Server, daher können die Probleme, die ich sehe, SElinux-bezogen sein oder auf die Bindungs-Mounts zurückzuführen sein, oder vielleicht sogar auf das Vorhandensein negierter Optionen (noexec versus exec) ...

ewwhite
quelle
Versucht der Entwickler, ein Skript direkt von einer Shell oder einem Web (über httpd) auszuführen? Welche Fehlermeldung wird angezeigt, wenn Sie versuchen, ein Skript auszuführen?
Daniel t.
Stellen Sie sich das als typisches Anwendungsinstallationsprogramm eines Drittanbieters vor, das eine ausführbare Binärdatei oder Shell ausgibt /tmp. Oracle zum Beispiel.
ewwhite
Dies könnte ein SELINUX-Problem sein. Sie könnten versuchen ausearch -m AVC,USER_AVC -sv no, die Ausgabe auf tmpFehler zu überprüfen .
Daniel t.

Antworten:

9

Geben Sie dies in bash ein:

egrep -v '^#' /etc/fstab | while read dev dir type opts dump pass ; do
    echo "mount -o remount,${opts} ${dir}";
done

Auf meinem System erzeugt dies eine Ausgabe wie folgt:

mount -o remount,nodev,noexec,nosuid /proc
mount -o remount,relatime,errors=remount-ro /
mount -o remount,defaults /misc

Probieren Sie es auf Ihrem System aus. Wenn Ihnen die Ausgabe gefällt, verwenden Sie sie oder entfernen Sie einfach echodie doppelten Anführungszeichen aus dem obigen Befehl.

Ruief
quelle
Sie müssen wahrscheinlich auch dort hinzufügen $dev...
freiheit
4

Ich würde nur ein Skript verwenden, um es für die relevanten Dateisysteme zu tun

for fs in /home /var /whatever
do
    mount -o remount "$fs"
done

Möglicherweise müssen Sie -fdort auch eine eingeben, wenn eine oder mehrere fs beschäftigt sind, z

mount -f -o remount "$fs"
user9517
quelle
3

Aus der mountManpage :

Die Remount-Funktion folgt der Standardmethode, mit der der Mount-Befehl mit Optionen von fstab funktioniert. Dies bedeutet, dass der Befehl mount fstab (oder mtab) nur dann nicht liest, wenn ein Gerät und ein Verzeichnis vollständig angegeben sind.

  mount -o remount,rw /dev/foo /dir

Nach diesem Aufruf werden alle alten Mount-Optionen ersetzt und beliebige Inhalte von fstab werden ignoriert, mit Ausnahme der Option loop =, die intern vom Befehl mount generiert und verwaltet wird.

  mount -o remount,rw  /dir

So mount -o remount /mountpointsollten die Optionen wiederhergestellt werden in /etc/fstab:

mgorven@mamma:~% grep boot /etc/fstab
UUID=823c73dc-8f64-4f76-a120-968106ffdf5a /boot           ext4    relatime        0       2
mgorven@mamma:~% sudo mount -o remount,ro /boot
mgorven@mamma:~% mount | grep boot
/dev/sda4 on /boot type ext4 (ro,relatime)
mgorven@mamma:~% sudo mount -o remount /boot
mgorven@mamma:~% mount | grep boot
/dev/sda4 on /boot type ext4 (rw,relatime)
mgorven
quelle
Dies hat in meinem Fall nicht funktioniert, kann aber auf andere Faktoren im System zurückzuführen sein. Siehe aktualisierte fstab oben.
ewwhite
@ewwhite Ich kann das Problem nicht mit Ihren fstab-Optionen reproduzieren, also ist noch etwas los.
mgorven
0

Ändern Sie die Dynamik der Mount-Flags, ohne die Datei / etc / fstab zu durchlaufen und neu zu starten?

Können Sie nicht Folgendes tun (zum Beispiel):

 mount -o remount /usr

um die ursprünglichen Optionen aus der Datei / etc / fstab wiederherzustellen? Sie können die gemounteten Optionen mit dem Befehl mount ohne Argumente überprüfen.

mdpc
quelle
0

Es wird Ihnen schwer fallen, Dateisysteme wie / usr und / var erneut bereitzustellen, sobald das System betriebsbereit ist. Beispielsweise führt ein verzögertes erneutes Bereitstellen wahrscheinlich nur zu einem Erfolg, bietet jedoch nie die Möglichkeit, das angeforderte erneute Bereitstellen durchzuführen, da Dateihandles während der gesamten Lebensdauer des Systems offen bleiben.

Wenn dies ein Entwicklungsimage ist, wie es sich anhört, empfehle ich, das System für jeden Test sauber zu booten. Es ist langwierig, aber zumindest wissen Sie dann sicher, dass das System so läuft, wie es in der Produktion wäre, sodass Ihr Test zuverlässig ist.

Jeff Albert
quelle