Permisos especiales en Linux

De La Wiki de KiVi

Permisos especiales en Linux: setuid, segid y sticky bit

En LInux hay tres tipos de permisos especiales que pueden ser asignados a directorios y/o ficheros ejecutabes: setuid ( set user information), setgid ( set group information) y sticky.

setuid

El setuid (Set User ID) es un permiso especial que se puede aplicar a un archivo en sistemas operativos tipo Unix/Linux. Cuando un archivo tiene el setuid activado, cualquier usuario que ejecute ese archivo obtendrá temporalmente los mismos privilegios que el usuario propietario del archivo.

Por ejemplo, si un archivo tiene el setuid activado y es propiedad del usuario «root» (que tiene privilegios de administrador en el sistema), entonces cualquier usuario que ejecute ese archivo temporalmente tendrá privilegios de administrador, aunque su propio usuario normalmente no tenga esos privilegios. Ejemplos comunes son: passwd, sudo y su.

Es importante tener en cuenta que el setuid puede ser una característica peligrosa si no se usa adecuadamente, ya que puede permitir que los usuarios obtengan acceso no autorizado a recursos del sistema o realicen acciones peligrosas. Por esta razón, es importante usar el setuid con precaución y solo en situaciones específicas en las que se requieran ciertos privilegios de manera temporal.

Para aplicar el setuid a un archivo en sistemas Unix/Linux, se utiliza el comando «chmod» (change mode). El formato del comando para establecer el setuid en un archivo es el siguiente:

chmod u+s archivo

Donde «u» se refiere al propietario del archivo y «s» indica que se está estableciendo el bit setuid. El símbolo «+» indica que se está añadiendo el permiso, y «archivo» es el nombre del archivo al que se está aplicando el setuid. Obviamente para quitarlo se cambia el «+» por «-«.

chmod u-s archivo

SETGID

Cuando un archivo tiene el setgid activado, cualquier usuario que ejecute ese archivo obtendrá temporalmente los mismos permisos que el grupo propietario del archivo o directorio.

Por ejemplo, si un archivo tiene el setgid activado y es propiedad del grupo «usuarios» (que tiene ciertos permisos en el sistema), entonces cualquier usuario que ejecute ese archivo temporalmente tendrá los mismos permisos que el grupo «usuarios», aunque su propio grupo no tenga esos permisos.

Esto lo podemos llevar a la práctica creando un directorio compartido a solo un grupo de usuarios y queremos que todo fichero o directorio que estos usuarios creen hereden las propiedades pera el resto de grupo. Un ejemplo:

mkdir -p /srv/Datos                                    #Para crear el directorio
chown -R admin:Grupo1 /srv/Datos/      # para cambiar los propietarios.
chmod -R 770 /srv/Datos/                        #Para que solo el usuario y el grupo tengan acceso
chmod -R g+s /srv/Datos/                        #Para activar el setgid

Como en el caso anterior, para revocarlo se utiliza el símbolo «-«.

chmod -R g-s /srv/Datos/

Sticky bit

El sticky bit es otro permiso especial que se puede aplicar a archivos y directorios en sistemas operativos tipo Unix/Linux. Cuando el sticky bit está activado en un directorio, solo el propietario del archivo o del directorio y el superusuario tienen permiso para eliminar o cambiar el nombre de archivos dentro de ese directorio.

Por ejemplo, si un directorio tiene el sticky bit activado, un usuario que no sea el propietario del archivo o del directorio solo podrá eliminar o cambiar el nombre de los archivos que él mismo haya creado dentro de ese directorio. Los archivos creados por otros usuarios solo podrán ser eliminados o cambiados de nombre por el propietario del archivo o del directorio.

Un ejemplo común del uso del sticky bit en un directorio es en el directorio /tmp. En la mayoría de las distribuciones de Linux, el directorio /tmp se configura con el sticky bit activado para evitar que los usuarios eliminen archivos de otros usuarios.

Al activar el sticky bit en el directorio /tmp, se asegura que los archivos que se crean en ese directorio solo puedan ser eliminados por el propietario del archivo o por el superusuario. Esto es importante para evitar que los usuarios eliminen archivos importantes o datos de otros usuarios por accidente o de manera malintencionada.