sudoers-filens syntaxfel när sudo-kommandon körs
Summary: När du har konfigurerat en roll kan du inte köra sudo-kommandon och ett syntaxfel visas i sudoers-filen.
Symptoms
När du kör en "sudo" kan det misslyckas på en eller flera noder, till exempel:
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
Detta kan inträffa av olika anledningar:
1. Den användare eller grupp som läggs till i en roll kan inte matchas på berörda noder:
På noderna som uppvisar problemet kan du se att användaren eller gruppen som har lagts till inte kan matchas:
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
Eftersom användaren eller gruppen inte kan matchas kan noden inte hitta ett GID/UID för sudoers filen, och om man tittar på /usr/local/etc/sudoers Filen:
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 =
Observera att UID/GID inte har fyllts i, vilket resulterar i ett syntaktiskt fel.
2. Rollen som skapades innehåller ett bindestreck i namnet:
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
Det här felet finns till exempel på rad 124:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. Användaren eller gruppen har inget associerat UID eller GID.
Resolution
1. Om noder inte kan översätta ett användar- eller gruppnamn till ett UID/GID måste vi lägga till användaren/gruppen som anges av UID/GID istället.
Ta bort användar- eller gruppnamnet från rollkonfigurationen:
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
Hämta rätt UID/GID för användaren från en nod som kan utföra åtgärden:
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
Använd UID/GID i stället för gruppnamnet:
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
Obs! Samma sak kan göras för en användare genom att ersätta "add-gid" med "add-uid".
Konfigurationen av sudoers-filen bör nu korrekt återspegla 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
Dessutom bör sudo-kommandon fungera korrekt:
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. Byt namn på rollen så att den inte innehåller ett "-".
Byt namn på rollen så att den inte innehåller ett bindestreck:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Observera att det inte längre finns något syntaxfel:
cluster-1% % sudo date
Password:
3. Sudoers-filen kräver ett UID eller GID för att identifiera användare och grupper, vilket säkerställer att alla användare och grupper har ett associerat UID eller GID.