基本上我想要的是运行 vscode 而不授予它读取我的主目录的权限。
所以我创建了一个新用户并从https://code.visualstudio.com/#alt-downloadsvscode
下载了.tar.gz
文件
现在我正在尝试以我的code
身份vscode
登录,如下所示:
~$ su - vscode -c "/home/vscode/code-stable-x64-1638855856/VSCode-linux-x64/bin/code --verbose"
Password:
[8347:1214/125108.021461:ERROR:browser_main_loop.cc(1402)] Unable to open X display.
The futex facility returned an unexpected error code.
/dev/fd/3: No such file or directory
Server response:
我也尝试使用ssh -Y vscode@localhost
然后code
从内部开始,这很有效,但我想尽可能避免使用 ssh。
你需要
$DISPLAY
变量,~/.Xauthority
文件的访问权限/tmp/.X11-unix
目录中共享套接字请注意,一旦您与不同的客户端共享您的 X 服务器,它基本上与以您自己的用户身份运行程序相同,安全方面:客户端可以观察键盘、截屏、合成按键,而我不会如果 X11 协议中一些较少使用的功能(加载纹理?字体?)可能被滥用为远程文件阅读器,您会感到惊讶。不过,不是 X11 协议方面的专家。
由于隔离非常弱,无论如何,您也可以在限制对主目录的访问方面不那么复杂:容器。
Linux 有命名空间,docker、kubernetes、snap 等技术都依赖于它。您可以做的是以普通用户的身份启动一个进程,并为该进程提供用户和文件系统环境的完整视图 - 一个没有您的主目录的视图。
Podman 是这些技术之一,它在 debian、IIRC 上可用。安装它应该尽可能简单:
然后,您应该能够运行容器:
要运行图形化的东西,你需要允许上面提到的事情,并告诉 SELinux 你已经完成了你承诺的事情:
看看你是如何突然在一个你自己启动的容器中成为 root 的——作为非 root!
我们现在可以将 vscode 安装到这个容器中,
~/sourcecode
像/sourcecode
在容器中一样共享您的文件夹,并将其用作 vscode 的用户数据目录:你是怎么做这些步骤的?正确设置 $DISPLAY 变量,授予对 ~/.Xauthority 文件的访问权限,共享 /tmp/.X11-unix 目录中的套接字
我是 ubuntu 新手,不知道这意味着什么或如何做到这一点。我安装了代码,昨天我能够打开它,今天我不能。当我输入代码 --verbose 时,它显示“无法打开 X 显示器。futex 工具返回了意外的错误代码。/dev/fd/3:没有这样的文件或目录”,这就是我在这里结束的方式。我在 ubuntu 20.04