Как я могу различить, когда пользователь является root, и когда пользователь sudo'd - PullRequest
0 голосов
/ 03 мая 2018

Я хотел бы написать некоторый код Qt для приложения KDE, который различает, когда пользователь является пользователем root, и когда пользователь использовал sudo для запроса повышенных привилегий, поэтому приложение может отображать разные сообщения для каждого варианта использования. Проверка на uid == 0 фиксирует оба случая, но как их различить?

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете прочитать SUDO_USER переменную окружения, используя QProcessEnvironment class :

QProcessEnvironment system_env = QProcessEnvironment::systemEnvironment();
qDebug() << "USER  : " << system_env.value("USER");
qDebug() << "SUDOER: " << system_env.value("SUDO_USER");

или #include <unistd.h> и используйте getlogin:

std::cout << "LOGGED IN USER: " << getlogin() << std::endl;
...