Lösung 1:
Dieser kleine Einzeiler wird etwas herausspringen, wenn ein ro-Dateisystem vorhanden ist.
grep "[[:space:]]ro[[:space:],]" /proc/mounts
Vorausgesetzt, Sie haben normalerweise kein ro-Dateisystem wie eine CD im Laufwerk, reicht es für einige grundlegende Überwachungsaufgaben aus und erfordert keine Änderung des Dateisystems, um den aktuellen Status zu ermitteln. Es geht auch nicht von Ihrem Dateisystemtyp aus. Geben Sie es in grep -v iso9660 ein, wenn Sie Ihre CDs aus dem Datensatz heraushalten möchten.
Lösung 2:
Alte Frage, aber ich bin auf der Suche nach derselben Hilfe darauf gestoßen und es scheint, als hätte ich einen noch einfacheren Weg gefunden, ohne dass eine Datei erstellt werden muss.
[ -w /root-rw ] && echo "rw" || echo "ro"
rw
[ -w /root-ro ] && echo "rw" || echo "ro"
ro
Natürlich ist root-ro ein ro gemountetes fs und root-rw ist ein rw fs.
Lösung 3:
Wenn das Dateisystem gemountet ist, würde ich in ein temporäres Verzeichnis wechseln und versuchen, eine Datei zu erstellen. Der Rückgabecode sagt Ihnen, ob das Dateisystem Read-Only oder Read-Write ist, vorausgesetzt, dass das Dateisystem nicht voll ist (danke Willem).
Lösung 4:
Ich hatte gerade dieses Problem und das sind echte Pasten ...
Werfen Sie einen Blick auf /proc/mounts -
egrep " ro,|,ro " /proc/mounts
/dev/sda3 / ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0
/dev/sda5 /var ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0
FYI - Diese beiden Partitionen werden als rw gemountet angezeigt, wenn nur der Mount-Befehl verwendet wird.
Lösung 5:
Basierend auf der Antwort einer Flimmerfliege, beeinflusst durch einen Kommentar von WhiteKnight
Erstellen Sie eine Detektorfunktion im Handumdrehen.
eval "function is_readonly () {
$( grep -P "\sro[\s,]" /proc/mounts | awk '{print "if echo $1 | grep -q \""$2"\"; then return 0;fi"}' )
return 1;}";
verwenden Sie es, um festzustellen, ob sich ein Pfad auf einem schreibgeschützten fs befindet
is_readonly /path/to/file/on/read/only/fs && echo "sorry. can't delete that"
Und entsorgen Sie es, wenn Sie fertig sind
#dump temp function
unset -f is_readonly;