exec.Command无法在调试模式下运行

时间:2018-06-21 09:53:24

标签: debugging go visual-studio-code exec root

我正在尝试使用exec命令在/ var和/ etc中创建目录,并且由于我需要root权限,所以我这样做:

path := "/var/log/xxx/yyy"
cmd := exec.Command("sudo", "mkdir", "-p", path)
err = cmd.Run()

我正在为golang项目使用Visual Studio代码,有趣的是,我发现这段代码在从终端执行时确实可以正常工作。但是,在调试模式下从Visual Studio代码运行时根本无法工作。

有人知道这是为什么吗?

1 个答案:

答案 0 :(得分:1)

我怀疑sudo无法从终端读取密码,因为调试的过程未连接到真实终端。多种选择:

  • /etc/sudoers中禁用密码提示:
%wheel ALL=(ALL) NOPASSWD: ALL
  • 使用sudo -A标志结束设置SUDO_ASKPASS环境来访问图形密码提示。例如:
cmd := exec.Command("sudo", "-A", "mkdir", "-p", path)
cmd.Env = append(os.Environ(),
    "SUDO_ASKPASS=/usr/bin/qt4-ssh-askpass")
err := cmd.Run()