go - 如何使用 Golang 查找以 root 身份执行程序的用户?

标签 go sudo

我正在创建一个小程序,需要对低于 1024 的网络端口进行特权访问,因此它使用 sudo 运行。

如果实用程序需要做的部分工作需要知道调用应用程序的用户是谁,我将需要一种方法来查询实际用户是谁;使用 OS/user 方法让用户指向“系统管理员”或其他根用户,因为它在 sudo 上下文中运行。

GoLang 有没有办法把运行应用程序的用户拉到 sudo 下? (Go 1.4.2,在 OS X 10.10.3 上运行)。

最佳答案

sudo 为此创建SUDO_UID/SUDO_GIDSUDO_USER 环境变量,其中包含用户id、组id 和用户名调用 sudo 的帐户。参见例如here

所以在 Go 中你可以用 os.Getenv() 读取这些环境变量.

您可能希望仅在以 root 身份运行时才信任这些变量,即如果 os.Geteuid()返回 0

关于go - 如何使用 Golang 查找以 root 身份执行程序的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733575/

相关文章:

docker - Docker编写$ GOPATH/go.mod存在但不应该

mongodb - 从处理程序中插入MongoDB文档

bash - 如何 sudo su;然后运行命令

linux - 如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?

php - 使用 shell_exec ('passwd' ) 更改用户密码

linux - Cassandra 不会在 Linux 中作为服务启动

go - Q : Getting Build Error "Invalid Import Path"

go - 在 Go 中,如何将 []myByte 转换为 []byte?

Go Routines 有时有效,有时会出现关闭 channel 错误

mysql - 系统范围的权限问题