问题产生
我遇到的情况是在安装网易云音乐Linux版和PicGo图床的时候,打开无反应,后来使用命令行运行,出现了下面的报错信息:
picgo:
[8898:0420/011642.495795:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_PicGo-s7aX7M/chrome-sandbox is owned by root and has mode 4755.
1
部分解决
后来网易云音乐的问题成功解决了,只要将给出的chrome-sandbox文件给予root用户并赋予4755权限,然后重新打开安装即可。
sudo chown root <path_to_marktext_dir>/chrome-sandbox && sudo chmod 4755 <path_to_marktext_dir>/chrome-sandbox
1
其中<path_to_marktext_dir>
即报错信息中给出的chrome-sandbox文件位置,在上面的报错信息中为/tmp/.mount_PicGo-s7aX7M/chrome-sandbox
。
但这并不能解决PicGo的问题,因为PicGo的AppImage如果执行不成功,会自动将chrome-sandbox文件删除,并且第二次产生的文件夹名称会发生改变,因为完全无法进行授权操作。
后来去找了很多资料,确定该问题为使用Electron给软件打包时产生的错误,是Linux内核的user_namespaces没有自动打开的问题。
解决方案
解决的办法有四种,我最推荐第四种解决方法,一劳永逸。
- 启用用户名称空间:
sudo sysctl kernel.unprivileged_userns_clone=1
,但每次开机都要运行该命令。 - 给报错信息给出的文件授权:
sudo chown root /chrome-sandbox && sudo chmod 4755 /chrome-sandbox
,即解决网易云音乐该问题时的操作,但不适用于picgo。 - 运行的时候加上免沙箱命令:
--no-sandbox
- 开机时自启动用户名称空间:
echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/userns.conf
该命令只适用于Debian/Ubuntu系列Linux发行版,未测试其他发行版。
文章来源: