El permiso SUID

Hay veces que es necesario que un programa se ejecute con los privilegios de su propietario en lugar de con los privilegios del usuario que lo ejecuta. SUID es un acrónomio de Set User ID.

Un ejemplo es el comando passwd, el cual necesita tener privilegios de root ya que tiene que acceder a los ficheros /etc/passwd o /etc/shadow en modo escritura y sólo el root puede hacerlo. Si deseamos que un usuario pueda cambiar su password es necesario que este comando se ejecute con los privilegios de su propietario.

[pcm@sal]$ ls -lh /usr/bin/passwd
-rwsr-xr-x 1 root root 28K 2007-02-27 08:53 /usr/bin/passwd
[pcm@sal]$ 

Si observamos la salida anterior veremos algo que nos llama la atención. En lugar de tener una "x" en el permiso de ejecución del propietario tenemos una "s" lo cual nos indica que este programa se ejecutará con los privilegios de su propietario en lugar de con los del usuario que lo está ejecutando.

Aviso

Estos programas constituyen un peligro potencial en un sistema ya que si se hace un mal uso de ellos y el propietario tiene privilegios, root, el que lo ejecuta podrá hacer en el sistema todo lo que el propietario del programa tenga permitido.

Activación del permiso SUID

Como hemos visto cuando establecemos los permisos en octal utilizamos una terna de números. Para los permisos especiales utilizaremos cuatro números. El primero de ellos hará referencia al permiso especial y los otros tres a los permisos normales.

El SUID es el bit más significativo de los tres bits utilzados para los permisos especiales, con lo cual si hacemos:

[pcm@sal]$ chmod 4755 miprograma
[pcm@sal]$ 

Estaremos activando el permiso SUID y estableciendo los permisos 755 al ejecutable miprograma.

Importante

Este permiso funciona sólo con binarios y no con scripts (excepto con los de PERL).

El permiso SUID y los directorios

Este permiso no tiene efecto en los directorios.