У меня есть несколько хостов Ubuntu Linux, которым необходимо подключиться к Active Directory для управления пользователями (к сожалению, здесь не было действительного сервера LDAP ...), и настроил Winbind для обработки аутентификации, и моя запись в группе %sudoers
работает хорошо:
## Allow AD members of the service group restricted user access to that account
%sudoers ALL=(ALL:ALL) NOPASSWD:ALL
Я разрешил аутентификацию по паролю в конфигурации ssh и добавил следующую запись в мой файл sudoers для учетной записи:
%service ALL=(service:service) NOPASSWD:ALL
Это даже не находит группа, хотя группа sudoers
и группы service
находятся на одном уровне в дереве каталогов на сервере AD. Когда я делаю это:
%domain.local\\service ALL=(ALL:ALL) NOPASSWD:ALL
... члены группы service
могут войти в систему и имеют полные права sudo, включая root, что недопустимо и уже включено в группу sudoers
и запись. В качестве альтернативы, когда я делаю это:
%domain.local\\service ALL=(service:service) NOPASSWD:ALL
... участники не могут выполнять sudo для любого пользователя. Что касается пользователя службы, то здесь есть запись / etc / passwd для пользователя service
:
service:x:1001:16777230::/opt/service:/bin/bash
Согласно Страница руководства Sudoers эта последняя запись, вероятно, должна работать, но для по какой-то причине это не так. Кроме того, %service
также, вероятно, должно охватывать как локальное членство, так и членство, предоставляемое AD, но, похоже, это не так. Когда я создаю этого пользователя, так как на сервере каталогов уже есть группа с именем service
, вот как я создаю учетную запись пользователя service
:
useradd -d /opt/service -g service service
Вот вывод sudo -l
для член группы:
[user.test@server ~]$ sudo -l
Matching Defaults entries for user.test on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User user.test may run the following commands on this host:
(service : service) NOPASSWD: /opt/service
Что мне здесь не хватает?
Я нашел решение. Мы должны были установить оболочку входа в систему и путь к sudoers записи для service
дом пользователя как так:
%domain.local\\service ALL=(service) NOPASSWD:/bin/bash, /opt/service/*
Теперь мы можем ввести следующее для становления service
пользователь:
$ sudo -i -u service
$ whoami
service
$ pwd
/opt/service