Syntaxfehler der Datei sudoers beim Ausführen von sudo-Befehlen
Summary: Nach der Konfiguration einer Rolle können Sie keine sudo-Befehle ausführen und es wird ein Syntaxfehler in der sudoers-Datei angezeigt.
Symptoms
Beim Ausführen eines "sudo" kann er auf einem oder mehreren Nodes fehlschlagen, z. B.:
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
Dies kann aus verschiedenen Gründen auftreten:
1. Der Nutzer oder die Gruppe, die einer Rolle hinzugefügt wurde, kann auf betroffenen Nodes nicht aufgelöst werden:
Auf den Nodes, auf denen das Problem auftritt, wird möglicherweise angezeigt, dass der hinzugefügte Nutzer oder die hinzugefügte Gruppe nicht aufgelöst werden kann:
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
Da der Nutzer oder die Gruppe nicht aufgelöst werden kann, kann der Node keine GID/UID für die sudoers Datei und einen Blick auf die /usr/local/etc/sudoers wird:
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 =
Beachten Sie, dass die UID/GID nicht ausgefüllt wurde, was zu einem syntaktischen Fehler führt.
2. Der Name der erstellten Rolle enthält einen Bindestrich:
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
Dieser Fehler ist z. B. in Zeile 124 vorhanden:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. Dem Nutzer oder der Gruppe ist keine UID oder GID zugeordnet.
Resolution
1. Wenn Nodes einen Nutzer- oder Gruppennamen nicht in eine UID/GID übersetzen können, müssen wir stattdessen den Nutzer/die Gruppe gemäß UID/GID hinzufügen.
Entfernen Sie den Nutzer- oder Gruppennamen aus der Rollenkonfiguration:
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
Rufen Sie die richtige UID/GID für den Nutzer von einem Node ab, der den Vorgang ausführen kann:
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
Wenden Sie die UID/GID anstelle des Gruppennamens an:
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
Hinweis: Dasselbe kann für einen Benutzer getan werden, indem "add-gid" durch "add-uid" ersetzt wird.
Die sudoers-Dateikonfiguration sollte jetzt ordnungsgemäß die uid/gid widerspiegeln:
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
Außerdem sollten sudo-Befehle ordnungsgemäß funktionieren:
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. Benennen Sie die Rolle so um, dass sie kein "-" enthält.
Benennen Sie die Rolle so um, dass sie keinen Bindestrich enthält:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Beachten Sie, dass kein Syntaxfehler mehr vorliegt:
cluster-1% % sudo date
Password:
3. Die sudoers-Datei erfordert eine UID oder GID, um Nutzer und Gruppen zu identifizieren und sicherzustellen, dass alle Nutzer und Gruppen über eine zugeordnete UID oder GID verfügen.