cabecera d-xl

La Shell de Linux


Los permisos de Linux, es una parte fundamental en su aprendizaje, ya que involucra el acceso, la seguridad, la accesibilidad y la comodidad de los usuarios para ejecutar sus tareas de acuerdo al nivel de acceso que éste posee en el sistema. Es importante por esto aprender como funciona y cual es la importancia del comando chmod, así como saber también las posibles consecuencias de un mal uso o de una no-aplicación de este último.

Nuestro sistema nos proporciona un mecanismo conocido como permisos para proteger ficheros de usuarios del sistema, de la manipulación de otros usuarios, ya que Linux como sabemos es multiusuario. Los permisos están divididos en tres tipos:

  • Permisos de lectura, representado por la letra "r".
  • Permisos de escritura, representado por la letra "w".
  • Permisos de ejecución, representado por la letra "x".

A sus vez estos permisos pueden ser fijados para tres clases de usuarios:

  • Dueño del archivo: u.
  • Grupo al que pertenece el archivo: g.
  • El resto de usuarios: o.

Aquí vemos un ejemplo en cuanto a permisos de un fichero: root@badclustering$ ls -l /home/ drwxr-xr-x 27 juanito juanito 3456 Jan 10 13:03 juanito permisos prop. grupo fecha nombre del fichero.

Hay que tener en cuenta que los permisos de los archivos dependen de los permisos del directorio en el que se encuentra, ya que si no tenemos acceso al directorio , no podemos tener acceso a los archivos que éste contiene.

EL COMANDO CHMOD

El comando chmod es el que te va a permitir manipular todos los permisos a tu gusto, consta de 3 operadores , veamos cuales son:

  • "+" para agregar permisos.
  • "-" para quitar permisos.
  • "=" para asignar permisos.

Por ejemplo, podríamos establecer para asignar permisos de ejecución a un fichero: chmod +x fichero.

En este caso estamos dándole permisos de ejecución, tanto para el usuario propietario, el grupo y para el resto de usuarios.

Pero que sucede , si yo solo quiero que el propietario del sistema tenga permisos de ejecución del fichero, y no todos los demás como lo acabo de hacer anteriormente?

Pues para eso le indicamos asi:

$chmod u+x fichero

Análogamente lo puedes hacer para darle permisos al grupo o al resto con las letras g y o respectivamente.

DEFINIENDO PERMISOS CON EL SISTEMA OCTAL

Existe otro método para definir permisos. Este sistema se llama : "sistema octal". En este sistema los números representan permisos. Por ejemplo: 0001, 0100, 0400, 1000, etcétera.

Estos se basan en la suma de los 3 valores : los de lectura, escritura y ejecución:

ejecución -> valor 1
escritura -> valor 2
lectura -> valor 4

La combinación de estos, nos da números del cero al siete, de esta manera:

0 = sin permisos.
1 = ejecución.
2 = escritura.
3 = escritura y ejecución.
4 = lectura.
5 = lectura y ejecución.
6 = lectura y escritura.
7 = lectura, escritura y ejecución.

Veamos un ejemplo:

$chmod 755 fichero

Esto quiere decir que al propietario le estamos dando los permisos de lectura, escritura y ejecución. Para el grupo los permisos de lectura y ejecución, igualmente para el resto de usuarios, ya que ambos tienen el permiso 5.

PERMISOS ESPECIALES

Existen además de los permisos ya mencionados otros permisos, que los necesitarás en alguna oportunidad, y que es necesario que sepas. Son los permisos de SUID, SGID y el sticky bit.

4000 Establece el número de identificación de usuario al ejecutarse SUID.
2000 Establece el número de identificación de grupo al ejecutarse SGID.
1000 Establece el bit adhesivo (sticky bit).

SUID y SGID

Existen ocasiones que los usuarios necesitan ejecutar algún programa que requiere de privilegios. Un ejemplo de esto es el uso del programa passwd para cambiar la contraseña. Sería un error darle a los usuarios los privilegios necesarios para que puedan ejecutar esta clase de programas ya que el usuario podría cambiarse de grupo o crear una cuenta con privilegios de root. Para que esto no suceda, se implemento en Unix, un sistema por el cual un programa que cuente con SUID o SGID puede ser ejecutado con los privilegios del dueño y/o grupo del programa. Para que quede más claro se tiene que saber que cada usuario esta identificado por el sistema con un número de identificación tanto para él, como para el grupo. Este número se denomina UID (user ID) para el caso de los usuarios y GID para el caso de los grupos. Por ejemplo, un usuario podría tener un UID 100 y un GID 500. En el caso del root, este tiene UID 0 y GID 0. Lo que se efectúa con el sistema SUID es una adquisición temporal de un UID o GID distinto al propio cuando se está ejecutando el programa. Cuando un programa cambia de UID se denomina SUID (se establece UID) y cuando cambia de GID se denomina SGID (se establece GID) Un programa puede ser SUID y SGID al mismo tiempo. Para darse cuenta si un programa es SUID o SGID basta con hacer un listado largo con el comando ls -l y se verá que donde tendría que estar una x, que asigna permisos de ejecución, va a estar una letra s.

Si tienes curiosidad por que programas utilizan el SUID puedes comenzar a buscarlos:

$find / -perm +4000

Algunos archivos con este tipo de permisos pueden resultar ser un problema de seguridad. Para solventar en cierta medida este punto podríamos cambiar los permisos de los programas afectos por este tipo de permisos que no lo necesiten. Sería sencillamente ejecutando: chmod -s archivo. También podríamos eliminar aquellos programas con este tipo de permiso que sean útiles. Podríamos también asegurarnos que no se puede escribir en los script de SUID e instalar alguna herramienta que verifique los archivos suid del sistema como pueda ser COPS.

EL STICKY BIT

Este es un bit que tiene un significado para los directorios. Cuando este bit está activo, hace que un usuario sólo pueda borrar los ficheros que son de su propiedad en dicho directorio. Esto es particularmente útil en el directorio /tmp. El sticky bit se activa como:

$ chmod +t directorio


Contacto