Setuid при использовании exec.Cmd.Start() [дубликат]Linux

Ответить
Anonymous
 Setuid при использовании exec.Cmd.Start() [дубликат]

Сообщение Anonymous »

Можно ли настроить Cmd для установки UID+GID процесса, запущенного с помощью exec.Cmd.Start()? Я ищу поведение, похожее на libuv_spawn, где я могу установить UV_PROCESS_SET{UID,GID} и передать их в качестве параметров.
Сначала я думал, что могу использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»