У меня странная проблема на сервере debian lenny. Сервер является клиентом NIS для совместного использования пользователей / групп с другим сервером, и в файле sudoers помещается следующее:
%groupX ALL=(ALL) ALL
Чтобы у членов groupX были права sudo. Кроме того, у меня есть пользователь, который входит в группу:
uid=1234(user.name) gid=1234(user.name) groups=1234(user.name),1001(groupX),<snip>
Но все же, когда пользователь пытается выполнить sudo, он получает ошибку. Пользователи другой группы могут отлично выполнять sudo.
Такое случалось раньше, но потом этого было достаточно, чтобы удалить, синхронизировать и повторно добавить пользователя в группу. На этот раз это не сработало.
В /var/log/auth.log отмечена следующая ошибка по умолчанию:
Jul 6 11:08:35 servername sudo: user.name : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/u/user.name ; USER=root ; COMMAND=/bin/bash
Кто-нибудь знает, как это исправить?
Вероятно, нам поможет, если мы будем знать вывод auth.log. Однако похоже, что аутентификация сначала идет в NIS, как в Red Hat:
passwd: nisplus, files
shadow: nisplus, files
group: nisplus, files
Или в некоторых дистрибутивах:
passwd: nisplus, compat
shadow: nisplus, compat
group: nisplus, compat
Если вам нужно иметь пользователей sudo на этом сервере, вам нужно, чтобы локальные определения учета имели приоритет, например:
passwd: files, nisplus
shadow: files, nisplus
group: files, nisplus
Имейте в виду, что это может помешать пользователям получить доступ к ресурсам NIS, в зависимости от того, как настроены стеки аутентификации. Убедитесь, что ваша конфигурация pam не помешает вам авторизоваться в NIS после авторизации локально.
РЕДАКТИРОВАТЬ: Хорошо, рассмотрев, как вы можете использовать NIS с sudo, знаете ли вы, существует ли этот пользователь в локальной системе? Предполагая, что nsswitch просматривает локальные файлы, возможно, что он имеет приоритет перед пользователем в NIS.