У меня есть приложение, которое может запускаться или не запускаться, пока пользователи попадают в общую учетную запись пользователя. Я хотел бы достоверно определить, кто является настоящим пользователем для своего рода ACL «системы чести». Я думаю, что есть какой-то способ, отслеживая родительский / групповой / сеансовый процесс, идентифицируя способ, которым делает команда pstree
, но я не уверен, как это сделать лучше или есть лучшие альтернативы.
Я пытался getlogin()
изначально. Это работает, если используется ./myapp
, но не с помощью 'cat input | . / myapp` (потому что «управляющий терминал» - это канал, принадлежащий общей учетной записи).
Я бы предпочел не доверять переменным среды, поскольку я не хочу, чтобы моя "система чести" была полностью разрушена просто unset
, когда информация все еще доступна в другом месте.
Я также хотел бы избежать принудительного поиска в базе данных паролей, поскольку это удаленный RPC (NIS или LDAP), и я почти уверен, что wtmp
уже содержит информацию, которая мне нужна.