我正在创建一个小程序,需要对低于 1024 的网络端口进行特权访问,因此它使用 sudo 运行。
如果实用程序需要做的部分工作需要知道调用应用程序的用户是谁,我将需要一种方法来查询实际用户是谁;使用 OS/user
方法让用户指向“系统管理员”或其他根用户,因为它在 sudo 上下文中运行。
GoLang 有没有办法把运行应用程序的用户拉到 sudo 下? (Go 1.4.2,在 OS X 10.10.3 上运行)。
最佳答案
sudo 为此创建SUDO_UID
/SUDO_GID
和SUDO_USER
环境变量,其中包含用户id、组id 和用户名调用 sudo 的帐户。参见例如here
所以在 Go 中你可以用 os.Getenv() 读取这些环境变量.
您可能希望仅在以 root 身份运行时才信任这些变量,即如果 os.Geteuid()返回 0
关于go - 如何使用 Golang 查找以 root 身份执行程序的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733575/