Никогда не говори никогда, но я думаю, что это возможно невозможно любым unix-переносимым способом.Вызов setuid (2) (и друзей) завершается успешно, только если текущий uid совпадает с целевым (по модулю некоторых тонкостей относительно эффективных и реальных uid) или если текущий uid равен 0 (т. Е. Root).То есть вы не можете перейти с одного пользователя без полномочий root на другой.
Наличие пароля не помогает.Пароль используется для начальной аутентификации в системе, будь то через login
, ssh
или через какой-либо диалог входа в систему с графическим интерфейсом, но пароль касается только этих программ, а несистема как таковая.Иными словами, kernel не заботится о вашем пароле, и вам нужно поговорить с kernel , если вы хотите изменить uid.
Таким образом, вы, вероятно, поэтому обязаны рассмотреть косвенные маршруты, такие как упомянутые Питером Г.
(Да, некоторые Unix могут иметь способ сделать это, но это зависит от платформы).
Я знаю, что я не добавляю здесь никаких положительных советов, только, возможно, экономящий время отрицательный совет: «здесь нечего видеть;двигаться прямо вдоль ... '