Ich habe ein Snap-Paket im Ubuntu 18.04-Paket installiert und möchte eine seiner Dateien mit dem Root-Konto bearbeiten. Zuerst bin ich mit zu Root gewechselt su
, aber als ich dann die Datei in Nano geöffnet habe, wird mir Folgendes angezeigt:
[ File '/snap/phpstorm/36/bin/phpstorm64.vmoptions' is unwritable ]
Dann habe ich Folgendes versucht:
root@elahe-VPCEA31FX:/home/elahe# sudoedit /snap/phpstorm/36/bin/phpstorm64.vmoptions
Nach dem obigen Befehl wurde die Datei in Nano geöffnet, aber nachdem ich Änderungen vorgenommen und mit Ctrl+ gespeichert hatte Ound nach dem Beenden mit Ctrl+ xerhielt ich diese Meldung:
sudoedit: unable to write to /snap/phpstorm/36/bin/phpstorm64.vmoptions: Read-only file system
sudoedit: contents of edit session left in /var/tmp/phpstorm64XXRCQzZi.vmoptions
Ich habe sogar versucht, die Berechtigungen der Datei mit diesem Befehl zu ändern:
root@elahe-VPCEA31FX:/home/elahe# chmod 755 /snap/phpstorm/36/bin/phpstorm64.vmoptions
und bekam dies:
chmod: changing permissions of '/snap/phpstorm/36/bin/phpstorm64.vmoptions': Read-only file system
Es ist wirklich erstaunlich, dass der Root-Benutzer eine Datei nicht bearbeiten kann! Ist das ein Fehler?
Antwort1
Die Snap-Dateien werden schreibgeschützt (ro) gemountet. Sie können dies mit dem Befehl „mount“ überprüfen.
mount |grep snap
/var/lib/snapd/snaps/vlc_158.snap on /snap/vlc/158 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core_4486.snap on /snap/core/4486 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core_4571.snap on /snap/core/4571 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/vlc_365.snap on /snap/vlc/365 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/vlc_190.snap on /snap/vlc/190 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core_4650.snap on /snap/core/4650 type squashfs (ro,nodev,relatime,x-gdu.hide)
Um Dateien in Squashfs zu ändern, müssen Sie es entpacken, die Dateien ändern und dann die Squashfs-Datei neu erstellen. Wenn ich beispielsweise Dateien in/var/lib/snapd/snaps/vlc_365.snap
sudo umount /snap/vlc/365
sudo unsquashfs /var/lib/snapd/snaps/vlc_365.snap
Ändern Sie darin alles, was Sie möchten squashfs-root
(dort werden alle Dateien entpackt) und packen Sie es anschließend erneut.
sudo mksquashfs squashfs-root vlc_365.snap
Kopieren Sie es zurück an seinen ursprünglichen Speicherort und mounten Sie es erneut.
sudo cp vlc_365.snap /var/lib/snapd/snaps/vlc_365.snap
sudo mount -t squashfs -o ro,nodev,relatime,x-gdu.hide /var/lib/snapd/snaps/vlc_365.snap /snap/vlc/365