Выполнить программу с рутом во время выполнения

0

У меня есть программа C++, которая требует прав root для выполнения некоторых функций. Если я запустил свой скомпилированный код в режиме su, например

linux-c5b6:/home/suman #

Он удовлетворяет моему требованию, но во время выполнения я хочу проверить, имеет ли мой процесс привилегии root или нет. Если нет, тогда пользователь получит пароль su и запустит мой код для получения правильных результатов.

Теги:

2 ответа

2

Системный вызов geteuid (2) вернет действительный идентификатор пользователя, запускающего вашу программу:

if (geteuid() == 0) {
    // running as root
} else {
    // not running as root
}

Вместо того, чтобы программа запрашивала у пользователя пароль root, я бы рекомендовал, чтобы он вышел с сообщением об ошибке и попросил пользователя повторно запустить программу с помощью sudo.

  • 0
    Вы правы, но я уже пробовал это, но я видел SW, где во время запуска он проверяет, имеет ли он привилегию su или нет, если нет, то принимает пароль su от пользователя и запускает программу в режиме su. Я хочу реализовать то же самое.
  • 0
    Я знаю, я просто думаю, что это вообще очень плохая идея. Система предоставляет богатую основу для предоставления пользователям расширенных привилегий. Лучше использовать это, чем пытаться изобрести это плохо.
0

Вы можете проверить текущую переменную оболочки оболочки UID, только root будет UID = 0

Или, еще лучше, запросите текущего пользователя и проверьте свой UID напрямую, используя функции библиотеки системных паролей.

  • 0
    Можете ли вы предоставить мне еще несколько концепций / код?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню