Вызовите двоичный файл su
(например, через system()
или комбинацию fork()
и одну из функций exec
), который знает обо всех тонкостях изменения учетных данных, как в общем случае в Unix, так и в вашемконкретная ОС.Терминал является общим и продолжает принадлежать исходному пользователю.
Некоторые из этих сложностей, которые не обрабатываются простым вызовом setuid()
, представляют собой группы, отключение учетной записи и ограничения ресурсов.
Если этопросто для прикола setuid()
с предшествующими setgid()
и initgroups()
вам, вероятно, будет достаточно.