Errore di sintassi del file Sudoers durante l'esecuzione di comandi sudo
Summary: Dopo aver configurato un ruolo, non è possibile eseguire i comandi sudo e viene visualizzato un errore di sintassi nel file sudoers.
Symptoms
Quando si esegue un "sudo", potrebbe non riuscire su uno o più nodi, ad esempio:
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
Ciò può verificarsi per vari motivi:
1. L'utente o il gruppo aggiunto a un ruolo non è risolvibile sui nodi interessati:
Nei nodi che presentano il problema, è possibile che l'utente o il gruppo aggiunto non sia risolvibile:
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
Poiché l'utente o il gruppo non è risolvibile, il nodo non è in grado di individuare un GID/UID per sudoers e guardando il file /usr/local/etc/sudoers file:
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 =
Si noti che l'UID/GID non è stato popolato e ciò genera un errore sintattico.
2. Il ruolo creato contiene un trattino nel nome:
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
Ad esempio, questo errore esiste nella riga 124:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. All'utente o al gruppo non è associato un UID o GID.
Resolution
1. Se i nodi non sono in grado di tradurre il nome di un utente o di un gruppo in un UID/GID, è necessario aggiungere l'utente/gruppo come specificato dall'UID/GID.
Rimuovere il nome dell'utente o del gruppo dalla configurazione del ruolo:
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
Ottenere l'UID/GID appropriato per l'utente da un nodo in grado di eseguire l'operazione:
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
Applicare l'UID/GID anziché il nome del gruppo:
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
Nota: Lo stesso vale per un utente, sostituendo "add-gid" con "add-uid".
La configurazione del file sudoer ora dovrebbe riflettere correttamente l'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
Inoltre, i comandi sudo dovrebbero funzionare correttamente:
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. Rinominare il ruolo in modo che non contenga il carattere '-'.
Rinominare il ruolo in modo che non contenga un trattino:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Si noti che non è più presente un errore di sintassi:
cluster-1% % sudo date
Password:
3. Il file sudoers richiede un UID o GID per identificare utenti e gruppi e verificare che tutti gli utenti e i gruppi dispongano di un UID o GID associato.