Syntaxisfout sudoers-bestand bij het uitvoeren van sudo-opdrachten
Summary: Na het configureren van een rol kunt u geen sudo-opdrachten uitvoeren en krijgt u een syntaxisfout te zien in het sudoers-bestand.
Symptoms
Bij het uitvoeren van een "sudo" opdracht, kan het mislukken op een of meerdere knooppunten, bijvoorbeeld:
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
Dit kan verschillende oorzaken hebben:
1. De gebruiker of groep die aan een rol is toegevoegd, kan niet worden opgelost op de betreffende knooppunten:
Op de knooppunten die het probleem vertonen, ziet u mogelijk dat de gebruiker of groep die is toegevoegd, niet kan worden opgelost:
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
Omdat de gebruiker of groep niet kan worden opgelost, kan het knooppunt geen GID/UID vinden voor de sudoers bestand, en kijkend naar de /usr/local/etc/sudoers Bestand:
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 =
Merk op dat de UID/GID niet is ingevuld, en dit resulteert in een syntactische fout.
2. De rol die is gemaakt, bevat een koppelteken in de naam:
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
Deze fout bestaat bijvoorbeeld op regel 124:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. De gebruiker of groep heeft geen bijbehorende UID of GID.
Resolution
1. Als knooppunten een gebruikers- of groepsnaam niet kunnen vertalen naar een UID/GID, moeten we in plaats daarvan de gebruiker/groep toevoegen zoals opgegeven door de UID/GID.
Verwijder de gebruikers- of groepsnaam uit de rolconfiguratie:
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
Verkrijg de juiste UID/GID voor de gebruiker van een knooppunt dat de bewerking kan uitvoeren:
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
Pas de UID/GID toe in plaats van de groepsnaam:
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
Opmerking: Hetzelfde kan worden gedaan voor een gebruiker, waarbij "add-gid" wordt vervangen door "add-uid".
De configuratie van het sudoers-bestand moet nu de uid/gid correct weergeven:
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
Ook moeten sudo-commando's goed werken:
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. Wijzig de naam van de rol zodat deze geen '-' bevat.
Wijzig de naam van de rol zodat deze geen koppelteken bevat:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Merk op dat er geen syntaxisfout meer is:
cluster-1% % sudo date
Password:
3. Het sudoers-bestand vereist een UID of GID om gebruikers en groepen te identificeren en ervoor te zorgen dat alle gebruikers en groepen een bijbehorende UID of GID hebben.