![Ubuntu 18.04 では、ルート アカウントを使用してもシステム ファイル /snap/phpstorm... を編集できません](https://rvso.com/image/1157723/Ubuntu%2018.04%20%E3%81%A7%E3%81%AF%E3%80%81%E3%83%AB%E3%83%BC%E3%83%88%20%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%82%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%20%2Fsnap%2Fphpstorm...%20%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%20.png)
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