У меня есть программа, работающая от имени пользователя root, и я вызываю другую программу для запуска (A).
Я хочу, чтобы A запускался как пользователь, вошедший в систему.Я использовал команду: su - 'username' -c A
,
или в Главной функции, я вызвал: setuid(current_uid_logged)
.
Но я не знаю, как получить пользователь-имя вошло в систему или uid в корневом процессе.
Любые попытки, которые я пробовал: getenv("USERNAME")
или getlogin()
всегда возвращают root
учетную запись.Я перепутал с getlogin()
, моя программа работает при запуске ядра и ожидает входа пользователя в систему (у меня есть поток, чтобы дождаться запуска процесса Finder (Mac OSX) для обнаружения входа пользователя), подождать 10 секунд и вызвать getlogin()
но иногда он возвращает root
, но может вернуть логин пользователя.Я думаю, что процесс Finder работает, когда пользователь вошел в систему.Но когда я вызываю приложение для запуска с помощью команды sudo
, getlogin()
всегда возвращает текущего пользователя, вошедшего в систему.
Как мне это сделать?