我正在尝试使用exec命令在/ var和/ etc中创建目录,并且由于我需要root权限,所以我这样做:
path := "/var/log/xxx/yyy"
cmd := exec.Command("sudo", "mkdir", "-p", path)
err = cmd.Run()
我正在为golang项目使用Visual Studio代码,有趣的是,我发现这段代码在从终端执行时确实可以正常工作。但是,在调试模式下从Visual Studio代码运行时根本无法工作。
有人知道这是为什么吗?
答案 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()