LINUX.ORG.RU
ФорумAdmin

/proc/self/loginuid для чего нужен?!

 loginuid,


0

1

делаю один свой проект, с авторизацией через pam. по простому типа логин менеджер графический, нужно авторизоваться и сессию пользователю делать.

на этапе pam_open_session получаю ошибку типа:
pam_loginuid(login:session): Cannot open /proc/self/loginuid: Permission denied

при этом, в этот момент процесс у меня запущен под uid 0, и я проверяю там права на запись есть…

так же смотрел исходники pam_loginuid там обычный open(O_NOFOLLOW|O_RDWR) вот тут они:
https://github.com/linux-pam/linux-pam/blob/master/modules/pam_loginuid/pam_loginuid.c

я конечно могу выкинуть pam_loginuid, но хочу разобраться и как то же все системные сервисы эту проверку проходят….

★★★★★

Последнее исправление: anonymous2 (всего исправлений: 3)

Ответ на: комментарий от bigbit

selinux выключен, чтото нагуглил подобное за 2015 года, типа как то завязано на CAP_AUDIT_CONTROL и опции ядра CONFIG_HAVE_ARCH_AUDITSYSCALL но как то другие сервисы все отрабатывают нормально

anonymous2 ★★★★★
() автор топика
Ответ на: комментарий от anonymous2

Каким образом запускается ваш процесс и есть ли у него CAP_AUDIT_CONTROL и CAP_AUDIT_WRITE? И, если в ядре включено AUDIT_LOGINUID_IMMUTABLE, то в /proc/self/loginuid можно писать один раз, если ваш процесс запускается не «как другие сервисы», то у него уже будет задан loginuid.

mky ★★★★★
()

Для того, чтобы писать его в аудит-логи. Например, если системный администратор зашёл на машину, запустил sudo -s, оттуда запустил какой-то скрипт, а скрипт запустил программу, то программа сможет узнать, какой uid был у инициатора запуска для того, чтобы записать эту информацию в логи. Если я правильно помню, то идея всей этой штуки в том, что для процесса можно один раз установить loginuid, а затем его изменить уже никто (даже root) не может.

kmeaw ★★★
()
Ответ на: комментарий от mky

запускаю как сервис через systemd, и принудительно capabilities я не задавал. в loginuid у меня -1. AUDIT_LOGINUID_IMMUTABLE в конфиге ядра не нашел, 4.19.

anonymous2 ★★★★★
() автор топика
Последнее исправление: anonymous2 (всего исправлений: 1)
Ответ на: комментарий от kmeaw

да вы правы, это типа так:
echo $(id -u) > /proc/self/loginuid write error: Operation not permitted

anonymous2 ★★★★★
() автор топика
Ответ на: комментарий от mky

да да, разобрался, сделал fork перед pam_open_session, у меня было после.. я думал надо типа сначала проверку pam провести потом уже fork + user session.

ну хоть вопрос про loginuid длячегоипочему закрыл для себя. делаю такую штуку типа менеджера терминальных сессий, отдельно коннекторы на vnc и rdp, отдельно сессии на xvfb, коннекторы через shm ходят в xvfb. а сам менеждер через dbus всем управляет

anonymous2 ★★★★★
() автор топика
Последнее исправление: anonymous2 (всего исправлений: 4)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.