【问题标题】:Running VS Code with the root privileges not work anymore in ubuntu linux在 ubuntu linux 中以 root 权限运行 VS Code 不再起作用
【发布时间】:2021-06-11 00:31:47
【问题描述】:

我在 ubuntu linux 中使用 Visual Studio 代码和这个命令 以 root 权限运行 VS Code(不推荐)

sudo code --user-data-dir="~/.vscode-root"

我总是在命令行中使用它,因为正常的 Visual Studio 代码不允许我保存我的代码更新。 但是今天

sudo code --user-data-dir="~/.vscode-root" 

当我尝试在命令行中运行此代码时,它不再工作,它不再打开 Visual Studio 代码。 单击 vscode 图标正常运行,但它不允许我保存任何内容,它要求我以 sudo 身份重试,我这样做但它什么也不做,我无法以这种方式以 sudo 身份输入。 有关如何解决此问题的任何建议? 提前致谢

【问题讨论】:

  • 这是您问题的错误解决方案。正确的解决方案是将您的源代码移动到您的普通非 root 帐户具有读/写访问权限的文件夹中,这样您就无需提升访问权限来保存或更新您的代码。
  • 感谢您的回答,我应该在 ubuntu linux 的哪个部分保存我的项目?文件?
  • /usr 文件夹下的某个位置。 Root 只能用于限制系统操作以防止对您的系统进行意外或恶意更改,而不能用于其他任何操作。你应该找到一本关于 *nix (Unix/Linux) 的很好的教程或书籍,它教授操作系统的基础知识——谷歌搜索应该能够为你找到一个。 (供将来参考,此站点用于编程(代码)相关问题。无法以 root 身份启动应用程序不是编程问题。更适合此问题的站点是Ask Ubuntu。还有Super User .)
  • 非常感谢,我不喜欢 ubuntu 中的 vscode,它要求我成为 root 以保存我的更新,我应该尝试移动文件夹 proyect 或不使用 IDE ,我非常喜欢使用命令行,谢谢!!!!

标签: ubuntu visual-studio-code


【解决方案1】:

最佳方式(推荐):

就用这个: sudo code "your-directory" --user-data-dir='.' --no-sandbox

例如打开/etc/nginx/nginx.conf使用

sudo code /etc/nginx/nginx.conf --user-data-dir='.' --no-sandbox

vscode 将在您打开终端的位置创建文件,因为: --user-data-dir='.'

另一种方式(不推荐):

使用sudo chmod -R 777

但它会为所有人提供您项目目录的完全访问权限 机器上的用户

您可以在项目目录上使用 chown 来只为自己拥有它

cd /location
sudo chown your_username your_project_directory

示例:

假设我的/var/opt 位置有一个名为project1 的目录,而我的用户名为tom。

cd /var/opt
sudo chown tom project1

【讨论】:

  • 谢谢,遇到了同样的问题,“sudo code /lol --user-data-dir='。” --no-sandbox" 为我工作
【解决方案2】:

我遇到了同样的问题

sudo code myfile 在 2021 年 7 月/8 月的某个时间停止工作

我使用 VS Code 作为我的标准代码/文本编辑器,其中包括编辑需要 root 权限才能编辑的不同系统配置文件。

解决此问题的一种简单方法是在终端的配置文件中添加一个别名。 (~/.bashrc 如果你有 bash 作为你的 shell)

我称别名为“sucode”

alias sucode='sudo code $1 --user-data-dir='"'"'/root/.config/Code - OSS/'"'"' --no-sandbox'

保存文件并重新启动您的 shell (source ~/.bashrc),从现在开始,当您需要使用 root 权限编辑文本文件时,您输入 sucode myfile 而不是 sudo code myfile

请注意 VS Code 的根帐户用户数据文件夹的路径。

在我的 Arch 系统中,VS Code 存储其用户数据的文件夹称为“Code - OSS”,对于 root 帐户,此文件夹的完整路径是:

/root/.config/Code - OSS/

最好检查一下您安装的 VS Code 是否具有相同的路径。如果没有,您必须相应地修改 alias-command。

在我看来,将 user-data-dir 指定为点文件夹(“.”)并不是一个好主意,因为这样 VS Code 会弄乱每个文件夹,而当您调用 VS Code 时,您恰好在该文件夹中,有几十个根拥有的文件夹。

【讨论】:

    【解决方案3】:

    就个人而言,如果我必须编辑任何需要管理员权限的内容,我通常会使用 Vim 而不是 VSCode。

    除了安全方面,我完全同意 glob 关于使用 /root/.config/Code 而不是 '.' 的答案。或者,在其他地方为此创建一个目录...

    正如暗示的那样,有些人想以 Visual Studio Code 超级用户的身份编辑 nginx/Apache 文件或 Linux 配置文件,例如 /etc/hosts。 如果您要使用'.',它将以分散的方式在工作目录(/etc 或 /etc/nginx 等)内创建整个“代码”目录结构。那至少有 15 个目录,包括 Backups、CachedExtensions、Code Cache 以及文件。这在 /etc 或任何其他需要管理访问权限的目录中是不需要的。它不仅混乱,而且是一个潜在的安全问题。

    【讨论】:

      【解决方案4】:

      要绕过vscode can only run as the default user in wsl的问题,可以使用ssh。方法如下:

      1。确保在 wsl 中启用了 sshd

      基本上sudo service ssh start,但您可能需要编辑/etc/ssh/sshd_config 中的默认端口以避免与windows ssh 冲突,并确保它在启动时自动启动以避免手动启动

      2。配置 ssh 配置文件

      配置一个作为首选用户连接到 wsl 的 ssh 配置文件,通常是 root:

      C:\Users\%USERNAME%\.ssh\config

      # the profile name
      Host wsl-ubuntu--root 
      # wsl host name configured in /etc/wsl.conf
        HostName wsl-ubuntu
        # your preferred user name to run wsl as, typically root
        User root
        # port configured in /etc/ssh/sshd_config
        Port 2222
        # publickey configured here as a typical case
        PreferredAuthentications publickey
        PubkeyAuthentication yes
      

      3。如下创建/usr/local/bin/sucode

      #!/bin/sh
      ssh_profile=wsl-ubuntu--root
      code="/mnt/c/Program Files/Microsoft VS Code/bin/code"
      [ -f $1 ] && "$code" --file-uri "vscode-remote://ssh-remote+$ssh_profile$(realpath $1)"
      [ -d $1 ] && "$code" --folder-uri "vscode-remote://ssh-remote+$ssh_profile$(realpath $1)"
      

      并确保其拥有正确的所有权和权限。

      4。终于

      sucode dir[/file]

      【讨论】:

        猜你喜欢
        • 2011-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 2016-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多