即使使用 Ubuntu 18.04 中的 root 帐户也无法编辑系统文件 /snap/phpstorm...

即使使用 Ubuntu 18.04 中的 root 帐户也无法编辑系统文件 /snap/phpstorm...

我在 Ubuntu 18.04 软件包中安装了一个 snap 软件包,我想使用 root 帐户编辑​​其中一个文件。首先,我使用 切换到 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

太神奇了,root 用户竟然无法编辑文件!这是 bug 吗?

答案1

snap 文件以只读 (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 文件。例如,如果我想修改/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

相关内容