Gibt es einen Hack, mit dem man Dateien in einem Read-Only-Dateisystem verändern kann?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Root-Partition   wird "read.only" gemounted? 

Ich vermute mal eher, dass Du nur Leserechte auf sie hast. Wenn Du die fstab änern willst, brauchst Du vermutlich Root-Rechte, oder Du musst Dir Schreib-Rechte vergeben. Probiere es mal hiermit: http://wiki.openelec.tv/index.php/Boot_Arguments

Die Seite wiki.openelec.tv solltest Du Dir merken.

Inzwischen bin ich ein wenig schlauer: Die /etc/fstab bearbeiten geht unter OpenElec nicht (und wenn man sich auf den Kopf stellt) - ist halt nur ein "embedded System".

Aber etwas anderes funktioniert - man muss sich per SSH anmelden und unter /storage/.config ein ausführbares Shellscript mit der Bezeichnung "autostart.sh" erstellen.

cd /storage/.config
nano autostart.sh

Dieses Script benötigt in der ersten Zeile folgendes Shebang:

#! /bin/sh

dann fügt man in der nächsten Zeile ein "sleep" ein

sleep 30;

Anschließend muss man im Script noch den Mountpunkt erstellen:

cd /media;
mkdir MOUNTVERZEICHNISNAME;

So und wenn man das geschafft hat, dann kann man am Ende des Shellscripts den Befehl zum Mounten einfügen

für ein ShareCenter von D-Link sieht die Zeile etwa so aus:

mount //<IPADRESS>/Volume_1 /media/Volume_1/ -t cifs -o noperm,iocharset=utf8,user=<USERNAME>,pass=<PASSWORD>,rw

Die Datei noch mit STRG+X speichern und ausführbar machen.

chmod +x autostart.sh

Beim nächsten reboot hatte ich dann mein Netzlaufwerk mit Schreibrechten eingebunden - normaler Weise werden in OpenElec Netzlaufwerke nur mit der Option "ro" eingebunden.

1

die root-Partition ist read-only gemountet ? Da muss schon ein schwerwiegender Fehler im Dateisystem vorliegen, wenn das System dann überhaupt hochfährt. Worum du dich trotzdem einloggen konntest, kann ich erst einmal nicht verstehen, denn da werden Daten nach /tmp und /var/log/ geschrieben und das ist bei read-only nicht möglich.

Hier kann ich nur den Rat geben, den PC mit einem Live-CD/DVD/USB-Datenträger hoch zu fahren, die Partition zu reparieren und dann auch die /etc/fstab u ändern.

Bei einem Dateisystemfehler wird auch das remount  nicht erfolgreich sein.

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

Openelec klingt nach so embedded Zeugs, vielleicht sind schreibzugriffe gar nicht vorgesehen...

0

Mmmh, ja das geht tatsächlich, ist aber ganz ganz schmutzig, und würde ich niemals auf einem Produktivsystem einsetzen.

Außerdem ist es ein Unterschied, ob die Hardware schreibgeschützt ist, oder nur das Dateisystem ro-gemountet wurde. In ersterem Falle kann man natürlich nichts machen. Und im letzteren Falle brauchst du zwingend root-Rechte.

Aber da du ja nach einem Hack fragtest, und dir klar sein muss, dass es wirklich sehr unschön ist, was du da vor hast:

Untersuche die Inodes der /etc/fstab und das zugrunde liegende Dateisystem (du must die Blockgröße und Inode-Größe kennen). Dafür reicht ls, stat und df völlig aus. Und ab jetzt wirds eklig: Nimm debugfs oder eine Alternative deiner Wahl, um die Inode einem logischen Block zuordnen zu können. Dann kannst du als root direkt darauf zugreifen und Strukturen verändern.

Da bei Dateien wie die /etc/fstab sehr klein sind, liegen die Daten bei vielen Dateisystemen direkt in der Inode, die du im ersten Schritt gefunden hast. Nach der Manipulation musst du nur noch die neue Dateigröße anpassen. Das Änderungsdatum wird dich vermutlich nicht interessieren.

Allerdings hängt da sehr viel vom eingesetzten Dateisystem und einer Million anderer Dinge ab. Es funktioniert zwar, ist aber wirklich dreckig!

PS: Ähm, "mount -o remount,rw" hast du aber schon probiert, oder? :)

Für Gewöhnlich wird ein root-Filesystem nicht read-only gemountet, sondern eigentlich meisst nur im Fehlerfall !

Es gibt natürlich auch (embedded) Systeme, wo das tatsächlich gernerell so ist, aber dann hat das auch immer einen driftigen Grund.

Und dann gibt es noch 2 Arten von Schreibschutz,  via Hardware, oder Software, bei ersterem geht natürlich nix, auch nicht mit Tricks...

Um was für ein System handelt es sich ?  Was für ein Dateisystem wird fürs rootfs verwendet ? Hast du Kontrolle über das System ?   Kann das System vieleicht fremd gebootet werden, z.B. von CD/DVD oder USB-Datenträger ?

Die Gegenfragen nur deswegen,  um den Kontext und die Notwendigkeit verstehen zu können, ohne die kaum qualifizierte Antwort möglich ist....

Schreibbar remounten falls es sich um ein ext2 oder so handelt ( http://linux.die.net/man/8/mount )

mount -o remount,rw /

Viel Spaß

PS: /etc/fstab ist ne binary ^^

0
@gerlochi

unter einem Binary versteht man Dateien, die alle Werte eines 8-Bit-Wortes enthalten können, also von 00-hex bis ff-hex. Im erweiterten Sinne ist ein Binary auch ein ausführbares Programm.
Die Datei /etc/fstab besteht nur aus ascii-Zeichen, die gehören zwar alle in den Wertebereich von 00Hex bis ffHex und trotzdem wird sie nicht so bezeichnet.

2