Al tratar de ejecutar cualquier programa con elevación de privilegios en Ubuntú mediante el comando sudo es posible observar el problema que describimos en el título de este artículo

sudo: must be setuid root

 

CAUSA

Este es un problema raro pero no infrecuente y suele estar ocasionado por alguno de los siguientes motivos:

  1. Algo o alguien ha modificado los permisos del comando sudo haciéndolo inusable.

  2. Hemos establecido el punto de montaje de la carpeta /usr en un directorio aparte y en el fichero fstab hemos indicado que lo queremos montar con el parametro nosuid 

SOLUCIÓN. 

Iniciamos nuestra distro de Ubuntu mediante la consola de recuperación (recovery console) seleccionando para ello la opción adecuada en el menú de arranque GRUB

# Verificamos que los permisos que aparecen para el comando sudo son correctos para ello tecleamos el comando 

ls -l /usr/bin/sudo 

# El comando debe producir una salida similar a esta:

 -rwsr-xr-x 1 root root 156824 2011-09-12 07:06 /usr/bin/sudo

# Si los permisos o el propietario y grupo no fueran los reseñados en las linea anterior deberemos reasignarlos. Para reasignar el propietario y el grupo al superusuario root:

chown root:root /usr/bin/sudo

# Para proporcionar los permisos adecuados de ejecución.

chmod 4755 /usr/bin/sudo

# Finalmente reiniciamos el sistema mediante el comando:

reboot 

Si fuera el caso de que hemos especificado el parámetro nosuid para montar la carpeta /usr en el fichero fstab, deberemos eliminar ese parametro. Podemos comprobar si este es nuestro caso mediante el comando:

cat /etc/fstab

El problema es que la consola de recuperación monta el sistema de ficheros con permisos de “solo lectura”, es decir, que desde aquí, no vamos a poder modificar el fichero fstab. Para poderlo modificar necesitaremos arrancar el sistema mediante un Live CD, y montar el sistema de ficheros donde tenemos ubicado el directorio /etc que normalmente está en el directorio raiz. Los comandos para llevar a cabo el proceso desde una terminal serían el siguiente. 

# Para montar la partición donde está ubicado el directorio raiz. 

mount -o remount, rw / /mnt/sda 

Debemos asegurarnos de que el punto de montaje, en el ejemplo /mnt/sda, existe.

Solo nos queda editar el fichero fstab mediante nuestro editor de textos favorito y eliminar el parametro nosuid

Por último advertir de que montar el directorio /usr con el parametro nosuid puede traer otros efectos indeseados, como por ejemplo, no tener red o quedarnos sin sonido al no poder montar los drivers para estos dispositivos o bien recibir el siguiente mensaje de error al iniciar el entorno gráfico: 

Warning, cannot open consolekit unable to open session. The permission of the setuid helper is not correct.