Сначала я думал, что могу использовать UidMapping и GidMapping в SysProcAttr, но это похоже, связано с пространствами имен.
Есть ли способ, который не требует вызова fork/exec/setuid вручную?
Рабочий код
(Спасибо @Dave и @JimB)
В поле Credential SysProcAttr может произойти волшебство.
Код: Выделить всё
cmd := exec.CommandContext(context.Background(), "whoami")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.SysProcAttr = &syscall.SysProcAttr{
Credential: &syscall.Credential{
Uid: uint32(myUID),
Gid: uint32(myGID),
},
}
if err := cmd.Start(); err != nil {
panic(err)
}
if err := cmd.Wait(); err != nil {
panic(err)
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... -cmd-start
Мобильная версия