domingo, 2 de septiembre de 2012

Linux - Permisos

En todo sistema es necesario manejar los permisos de los ficheros y directorios, obviamente Linux no es la excepción. Los permisos que maneja Linux son los clásicos de Unix (Leer-Escribir-Ejecutar). Para saber los permisos de un directorio/fichero simplemente ejecutamos el comando “ls -l” y nos mostraría algo parecido a esto:

-rwxr-xr-x 1 user1 grupo1 128931 ago 28 2012 gpl.txt
Los primeros 10 caracteres (de izquierda a derecha) son los caracteres de permisos, lo que podemos visualizar en ellas son 5 letras y un signo
  • - : Significa que no posee la propiedad.
  • l : Significa que es un enlace simbólico
  • d : Se refiere a que es un directorio y no un fichero.
  • r : Posee la propiedad Read.
  • w : Posee la propiedad Write.
  • x : Posee la propiedad eXecute
Estos 10 caracteres los podemos dividir en 4 segmentos,
  • Carácter 1: esta entrada nos indica si es un fichero o un directorio. En caso de ser un fichero, aparece el carácter “-”, en de que este sea un enlace simbólico aparece una “l”, mientras que si es directorio aparece una “d”. 
  • Caracteres 2, 3, 4: nos indican, respectivamente, los permisos de lectura, escritura y ejecución para el propietario del fichero. En caso de no tener el permiso correspondiente activado, encontramos el carácter “-” y no “r”, “w” o “x”, según si lo podemos leer (Read), escribir (Write) o ejecutar (eXecute). En el tercer carácter, además, podemos encontrarnos una “s”, que nos indica si el archivo es de tipo SetUserId, que quiere decir que al ejecutarlo obtendrá los permisos del propietario del fichero. Si sólo tiene el permiso “x”, cuando el programa se ejecuta lo hace con los permisos de quien lo haya lanzado.
  • Caracteres 5, 6, 7: estos caracteres tienen exactamente el mismo significado que anteriormente, pero hacen referencia a los permisos concedidos a los usuarios del grupo al que pertenece el fichero.
  • Caracteres 8, 9, 10: igual que en el caso anterior, pero para los otros usuarios del sistema.

Después de estos 10 caracteres encontramos una cifra que nos indica el número de enlaces fuertes que tiene el fichero. Para los directorios, este número indica cuántos directorios hay dentro de él además de los enlaces fuertes que tiene (cuando no hay ninguno, el número es 2, debido a la gestión interna del operativo).

A continuación vemos el propietario y el grupo del archivo, seguido del tamaño (en bytes) que ocupa y la fecha de la ultima modificación. Les dejo una imagen que encontré en Internet que me parece que está bastante bien explicado.


Si por alguna razón, necesitamos cambiar los permisos de algún directorio/fichero, tenemos que utilizar el comando “chmod” el cual nos permite esto, este comando nos permite trabajar de 2 formas, una es con números y la otra con letras.

Para trabajar con números debemos utilizarlo de la siguiente forma: “chmod XXX nombreFichero”, donde las “X” deben ser tres números entre 0 y 7. El primer número indica los permisos que queremos establecer para el usuario, el segundo, para el grupo y el tercero, para el resto.


Ejemplos de utilización:

# chmod 644 <directorio/fichero> Damos permiso “rw” al usuario y “r” al grupo y otros.
# chmod 777 <directorio/fichero> Damos permisos “rwx” al usuario, grupo y otros.
# chmod 664 <directorio/fichero> Damos permisos “rw” al usuario y grupo y permisos “r” a otros.
# chmod 700 <directorio/fichero> Damos permisos “rwx” al usuario y ningún permiso al grupo y otros.

Como mencione anteriormente, la otra forma de trabajar es trabajar (por llamarlo de alguna forma) con letras. . La manera de hacerlo es indicando, primero, si nos referimos a los permisos del usuario, grupo o al resto con las letras “u”, “g” u “o” respectivamente. Seguidamente, debemos añadir un “+” o “-” según si queremos añadir o eliminar el atributo, que indicaremos con “r”, “w”, “x” o “s” (este último para el SetUserId). Además, podemos hacer todas las combinaciones posibles, refiriéndonos a más de un permiso y/o usuarios.

Ejemplos de utilización:

# chmod ug+wrx <directorio/fichero> Damos permisos “wrx” al usuario y al grupo.
# chmod go -x <directorio/fichero> Quitamos permisos de ejecución al grupo y otros.
# chmod go+rw <directorio/fichero> Damos permisos “rw” al grupo y otros.


Dato: El mecanismo de SetUserId es muy útil cuando un programa necesita tener los permisos de su propietario para acceder a ciertos archivos o hacer algún tipo de operación en el sistema. De todos modos, debemos vigilar mucho con este tipo de ficheros porque pueden suponer fallos de seguridad en el sistema si son mal utilizados.





Basado en: Sistema Operativo GNU/Linux Básico - UOC


0 comentarios:

Publicar un comentario