Ubuntu 18.04 では、ルート アカウントを使用してもシステム ファイル /snap/phpstorm... を編集できません

Ubuntu 18.04 では、ルート アカウントを使用してもシステム ファイル /snap/phpstorm... を編集できません

Ubuntu 18.04 パッケージに snap パッケージをインストールし、root アカウントを使用してそのファイルの 1 つを編集したいと考えています。最初に で root に切り替えましたsuが、nano でファイルを開くと、次のメッセージが表示されます。

 [ File '/snap/phpstorm/36/bin/phpstorm64.vmoptions' is unwritable ]

それから私はこれを試しました:

root@elahe-VPCEA31FX:/home/elahe# sudoedit  /snap/phpstorm/36/bin/phpstorm64.vmoptions

上記のコマンドを実行すると、ファイルは nano で開かれましたが、変更を加えてCtrl+で保存し、 +Oで終了すると、次のメッセージが表示されました。Ctrlx

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

次のコマンドでファイルの権限を変更しようとしました:

root@elahe-VPCEA31FX:/home/elahe# chmod 755  /snap/phpstorm/36/bin/phpstorm64.vmoptions

そしてこれを得ました:

chmod: changing permissions of '/snap/phpstorm/36/bin/phpstorm64.vmoptions': Read-only file system

ルートユーザーがファイルを編集できないというのは本当に驚きです。これはバグでしょうか?

答え1

スナップ ファイルは読み取り専用 (ro) としてマウントされており、mount コマンドを使用してこれを確認できます。

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)

squashfs内のファイルを変更するには、squashfsをunsquashし、ファイルを変更してからsquashfsファイルを再作成する必要があります。たとえば、/var/lib/snapd/snaps/vlc_365.snap

sudo umount /snap/vlc/365
sudo unsquashfs /var/lib/snapd/snaps/vlc_365.snap

必要なものをすべて変更しsquashfs-root(すべてのファイルが解凍される場所)、再パックします。

sudo mksquashfs squashfs-root vlc_365.snap

元の場所にコピーして再度マウントします。

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

関連情報