Error de sintaxis del archivo sudoers cuando se ejecutan comandos sudo
Summary: Después de configurar una función, no puede ejecutar comandos sudo y aparece un error de sintaxis en el archivo sudoers.
Symptoms
Cuando se ejecuta un "sudo", puede fallar en uno o varios nodos, por ejemplo:
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
Esto puede ocurrir por varias razones:
1. El usuario o grupo agregado a una función no se puede resolver en los nodos afectados:
En los nodos que presentan el problema, es posible que vea que el usuario o el grupo que se agregó no se puede resolver:
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
Dado que el usuario o el grupo no se pueden resolver, el nodo no puede localizar un GID/UID para el sudoers archivo, y mirando el archivo /usr/local/etc/sudoers archivo:
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 =
Observe que el UID/GID no se completó, lo que genera un error sintáctico.
2. La función que se creó contiene un guion en el nombre:
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
Por ejemplo, este error existe en la línea 124:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. El usuario o grupo no tiene un UID o GID asociado.
Resolution
1. Si los nodos no pueden traducir un nombre de usuario o grupo a un UID/GID, debemos agregar el usuario o el grupo según lo especificado por el UID/GID en su lugar.
Elimine el nombre de usuario o grupo de la configuración de funciones:
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
Obtenga el UID/GID adecuado para el usuario desde un nodo que pueda realizar la operación:
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
Aplique el UID/GID en lugar del nombre de grupo:
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 mismo se puede hacer para un usuario, reemplazando "add-gid" por "add-uid".
La configuración del archivo sudoers ahora debería reflejar correctamente el 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
Además, los comandos sudo deben funcionar correctamente:
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. Cambie el nombre de la función para que no contenga un "-".
Cambie el nombre de la función para que no contenga guión:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Tenga en cuenta que ya no hay un error de sintaxis:
cluster-1% % sudo date
Password:
3. El archivo sudoers requiere un UID o GID para identificar usuarios y grupos, y asegúrese de que todos los usuarios y grupos tengan un UID o GID asociado.