1
AoEiuV020JP 2023-12-27 11:13:35 +08:00
不太理解,确实如你所说 sudo 运行的程序当前用户就是 root ,这有什么问题吗?
考虑 xy problem , 非要判断的话可以通过 shell 进程或者 x 进程 UID 判断当前有那些用户是登录状态, |
2
liumory 2023-12-27 12:03:14 +08:00
sudo -E 可以保留当前用户的环境变量。那么是否可以通过环境变量记录当前的用户名,然后再通过 sudo -E 传递给 root 。
export USER_INFO=·whoami·;sudo -E your_program |
3
AoEiuV020JP 2023-12-27 12:13:16 +08:00
|
4
ppllss OP @AoEiuV020JP @liumory
就是想通过 sudo 这样的命令 sudo ./myService 但是程序获取到的 user.Current() 是 root 想获取到当前用户的信息,可行吗? |
5
AoEiuV020JP 2023-12-27 15:19:29 +08:00 1
@ppllss #4 按 3 楼的办法说不定可以,但习惯上你的程序如果必须 root 权限运行又必须对特定用户有影响,那就应该直接把用户当成参数传进去,不要想歪门邪道去获取非执行者的身份,
参考 passwd 命令,默认是修改当前用户的密码, sudo passwd 那就是修改 root 用户的密码,而不是修改执行 sudo 前的用户的密码, 要用 roof 权限修改特定用户的密码,那就是 sudo passwd <username>, 把要操作的对象当作参数传入,这就是最普通合适的做法, |
6
AoEiuV020JP 2023-12-27 15:20:36 +08:00
@AoEiuV020JP #5 尖括号被吞了,
要用 roof 权限修改特定用户的密码,那就是 sudo passwd 《 username 》, 把要操作的对象当作参数传入,这就是最普通合适的做法, |
7
AoEiuV020JP 2023-12-27 15:23:55 +08:00
@AoEiuV020JP #6 擦,居然是 v2ex-script 的 bug ,我还以为 v 站吞尖括号了,
|
8
AoEiuV020JP 2023-12-27 15:37:48 +08:00
|
9
ppllss OP @AoEiuV020JP 谢谢了
|
10
julyclyde 361 天前
不是应该用 SUDO_USER 吗?
|