Из моего моноприложения, работающего под Linux, я хочу запустить еще одно от имени пользователя root
. На данный момент я использую Process.Start
, работает gksudo
.
Это решение работает достаточно хорошо при одном условии - установлено gksudo
.
Мне нужен механизм повышения привилегий для моносборки (не обязательно как другого процесса), который не зависит от конкретного приложения, зависящего от рабочего стола, такого как gksudo
или kdesu
, и не основан на консоли (как старый добрый sudo
).
На самом деле я считаю, что мне нужен способ PAM-ify моего приложения.
Решение не обязательно должно быть совместимым с Windows, но было бы приятным бонусом.
Я видел много возможных ответов на мою проблему, но ни один из них не решил все проблемы.
Очень хорошим подходом был https://stackoverflow.com/a/16276287/882200, но он требует, чтобы сборка запускался как root, что невозможно.
Это вдохновило меня попробовать новый подход. я пробовал бегать
Process.Start("whoami", "otheruser", password, "");
Вывод должен быть otheruser
, но это не так.
Обратите внимание, что я оставляю домен (последний параметр) пустым (это нормально?) и заполняю пароль в соответствии с этот пример.
Это решение не самое лучшее — оно требует, чтобы я предоставил средства для получения пароля, но оно приемлемо, хотя и не работает.
Лучшим вариантом для меня было бы заставить мою среду выбрать правильный способ получения пароля - либо во всплывающем окне Qt/GTK, либо в консоли.
Последнее, о чем следует помнить, — для запуска приложения с правами root я хотел бы иметь возможность указать пароль sudoer, а не обязательно пароль root (в соответствии с конфигурацией sudoers
).