Синтаксическая ошибка файла sudoers при выполнении команд sudo
Summary: После настройки роли вы не сможете выполнять команды sudo и в файле sudoers появится синтаксическая ошибка.
Symptoms
При запуске команды "sudo" может завершиться сбоем на одном или нескольких узлах, например:
cluster-1# isi_for_array -s sudo date
cluster-1: Fri Sep 12 16:58:29 CDT 2014
cluster-2: Fri Sep 12 16:58:30 CDT 2014
cluster-3: sudo: >>> /usr/local/etc/sudoers: syntax error near line 124 <<<
cluster-3: sudo: parse error in /usr/local/etc/sudoers near line 124
cluster-3: sudo: no valid sudoers sources found, quitting
cluster-3: sudo: unable to initialize policy pluginCause
Это может произойти по разным причинам:
1. Пользователь или группа, добавленные в роль, не могут быть разрешены на затронутых узлах:
На узлах, где возникла проблема, может наблюдаться, что добавленный пользователь или группа не поддаются разрешению:
cluster-1# isi_for_array -n3 'isi auth users view domain\\group'
cluster-3: Failed to find group for 'GROUP:domain\group': No such group
Так как имя пользователя или группы не может быть определено, узел не может найти GID/UID для sudoers file, и глядя на файл /usr/local/etc/sudoers .
cluster-1# isi_for_array -s "egrep -i 'user_alias.*newrole' /usr/local/etc/sudoers"
cluster-1: User_Alias NEWROLE = %#1000010
cluster-2: User_Alias NEWROLE = %#1000010
cluster-3: User_Alias NEWROLE =
Обратите внимание, что UID/GID не заполнены, что приводит к синтаксической ошибке.
2. Созданная роль содержит дефис в имени:
cluster-1# isi auth roles view test-role
Name: test-role
Description: -
Members: DOMAIN\user
Privileges
ID : ISI_PRIV_LOGIN_SSH
Read Only : True
ID : ISI_PRIV_AUTH
Read Only : False
cluster-1% sudo date
sudo: >>> /usr/local/etc/sudoers: syntax error near line 124 <<<
sudo: parse error in /usr/local/etc/sudoers near line 124
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
Например, эта ошибка существует в строке 124:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. С пользователем или группой не связан идентификатор UID или GID.
Resolution
1. Если узлы не могут преобразовать имя пользователя или группы в UID/GID, вместо этого необходимо добавить пользователя или группу, как указано в UID/GID.
Удалите имя пользователя или группы из конфигурации роли:
cluster-1# isi auth roles modify --role=newrole --remove-group=domain\\group
cluster-1# isi auth roles view newrole
Name: newrole
Description: -
Members: -
Privileges
ID : ISI_PRIV_LOGIN_SSH
Read Only : True
ID : ISI_PRIV_SMB
Read Only : False
Получите надлежащий идентификатор UID/GID для пользователя с узла, который может выполнять операцию:
cluster-1# isi auth groups view domain\\group
Name: DOMAIN\group
DN: CN=group,CN=Users,DC=domain,DC=com
SID: S-1-5-21-463481935-3723234361-2963677383-1144
GID: 1000010
Domain: DOMAIN
Sam Account Name: group
Provider: lsa-activedirectory-provider:DOMAIN.COM
Generated GID: Yes
Применяйте идентификатор UID/GID, а не имя группы:
cluster-1# isi auth roles modify --role=newrole --add-gid=1000010
cluster-1# isi auth roles view newrole
Name: newrole
Description: -
Members: DOMAIN\group
Privileges
ID : ISI_PRIV_LOGIN_SSH
Read Only : True
ID : ISI_PRIV_SMB
Read Only : False
Примечание. То же самое можно сделать для пользователя, заменив «add-gid» на «add-uid».
Теперь конфигурация файла sudoers должна правильно отражать uid/gid:
cluster-1# isi_for_array -s "egrep -i 'alias.*newrole' /usr/local/etc/sudoers"
cluster-1: User_Alias NEWROLE = %#1000010
cluster-2: User_Alias NEWROLE = %#1000010
cluster-3: User_Alias NEWROLE = %#1000010
Кроме того, команды sudo должны работать правильно:
cluster-1# isi_for_array -s sudo date
cluster-1: Fri Sep 12 17:20:14 CDT 2014
cluster-2: Fri Sep 12 17:20:14 CDT 2014
cluster-3: Fri Sep 12 17:20:14 CDT 2014
2. Переименуйте роль, чтобы в ней не было символа «-».
Переименуйте роль, чтобы в ней не было дефиса:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Обратите внимание, что синтаксическая ошибка больше не возникает:
cluster-1% % sudo date
Password:
3. Файлу sudoers требуется идентификатор UID или GID для идентификации пользователей и групп. Убедитесь, что со всеми пользователями и группами связан идентификатор UID или GID.