miércoles, 16 de septiembre de 2015

Algunos permisos especiales

Aunque normalmente vemos la máscara octal de permisos expresada como un número de tres dígitos, es más correcto técnicamente expresarla en cuatro dígitos ¿por qué? Porque, además de permisos de lectura, escritura y ejecución, hay algunas otras configuraciones de permisos menos usadas.

El primero de ellos es el setuid bit (octal 4000). Cuando lo aplicamos a un archivo ejecutable, cambia la ID efectiva de usuario (effective user ID) del usuario real (el usuario que realmente está utilizando el programa) por la del propietario del programa. Muy a menudo esto se aplica a unos pocos programas cuyo propietario es el superusuario. Cuando un usuario normal ejecuta un programa que está “setuid root”, el programa funciona con los privilegios efectivos del superusuario. Esto permite al programa acceder a archivos y directorios a los que un usuario normal tendría normalmente prohibido su acceso. Por supuesto, debido que esto plantea problemas de seguridad, el número de programas setuid debe reducirse al mínimo necesario.

El segundo permiso menos usado es el setgid bit (octal 2000) el cual, como el setuid bit, cambia el ID de grupo efectivo (effective group ID) del ID de grupo real (real group ID) por el del propietario del archivo. Si el setgid bit se aplica en un directorio, a los archivos nuevos, creados dentro del directorio, se les darán los permisos de grupo propietario que tiene el directorio en lugar de los permisos de grupo propietario del creador del archivo. Esto es útil en un directorio compartido cuando los miembros de un grupo común necesitan acceso a todos los archivos del directorio, independientemente del primer grupo propietario del archivo.

El tercero se llama el sticky bit (octal 1000). Esto es una reliquia del antiguo Unix, donde era posible marcar un archivo ejecutable como “no intercambiable”. En archivos, Linux ignora el sticky bit, pero si se aplica a un directorio, evita que los usuarios borren o renombren archivos a menos que el usuario sea el propietario del directorio, el propietario del archivo o el superusuario. Esto, a menudo, se usa para controlar el acceso a un directorio compartido, como /tmp.

Aquí hay algunos ejemplos de uso de chmod con notación simbólica para establecer estos permisos especiales. Primero asignaremos setuid a un programa:

chmod u+s program

A continuación, asignaremos setgid a un directorio:

chmod g+s dir

Finalmente, asignaremos el sticky bit a un directorio:

chmod +t dir

Cuando vemos la salida de ls, podemos determinar los permisos especiales. Aquí tenemos algunos ejemplos, primero un programa que tiene setuid:

-rwsr-xr-x

Un directorio que tiene el atributo setgid:

drwxrwsr-x

Un directorio con el sticky bit establecido:

drwxrwxrwt

No hay comentarios:

Publicar un comentario