10/4/12

Permisos en Linux [Actualizado]


En Linux existen tres niveles de permisos para acceder a un archivo: Los permisos del propietario, los permisos del grupo que tenga el archivo y los permisos de todos los usuarios del sistema.




Para ver los permisos de un archivo vamos a la terminal Aplicaciones/Accesorios/Terminal y utilizamos el comando sl -l.

Por ejemplo para ver los permisos de la carpeta personal:

ls -l ~ 

Recordemos que el comodín "~" se utiliza par indicar que estamos trabajando con el directorio personal. El código anterior equivaldría a:

ls -l /home/usuario/

Siendo "usuario" el nombre de tu directorio personal.
Insertando ese código, se nos mostraría algo como esto:


-rw-r--r-- 1 usuario usuario 0 2012-04-10 13:08 archivo.txt
-rw-r--r-- 1 usuario usuario 72081 2012-03-29 14:57 asl.png
drwxr-xr-x 2 usuario usuario 4096 2011-12-06 13:24 Descargas
drwxr-xr-x 2 usuario usuario 4096 2012-04-09 14:00 Documentos
drwxr-xr-x 9 usuario usuario 4096 2012-04-10 13:08 Escritorio
-rw-r--r-- 1 usuario usuario 220 2012-03-30 11:36 estilos.css
-rw-r--r-- 1 usuario usuario 179 2011-11-21 12:18 examples.desktop
drwx------ 2 usuario usuario 4096 2011-12-05 16:18 fuentes
drwxr-xr-x 3 usuario usuario 4096 2012-03-19 15:46 Imágenes
drwxr-xr-x 5 usuario usuario 4096 2012-03-02 10:01 Música
drwxr-xr-x 2 usuario usuario 4096 2011-11-21 12:53 Plantillas
-rw-r--r-- 1 usuario usuario 179 2012-03-30 11:35 prueba.html
drwxr-xr-x 2 usuario usuario 4096 2011-11-21 12:53 Público
drwxr-xr-x 2 usuario usuario 4096 2011-12-15 18:59 scripts
-rwxr-xr-x 1 usuario usuario 459 2012-04-10 13:08 script.sh
drwxrwxr-x 2 usuario usuario 4096 2011-11-24 10:16 Ubuntu One
drwxr-xr-x 6 usuario usuario 4096 2012-03-02 10:02 Vídeos

Ahora bien, por ejemplo en la primera linea la columna en la que aparece (-rw-r--r--) indica los permisos que pose el archivo, la columna en la que aparece en el numero (1) son los enlaces al archivo, la tercera (usuario) el propietario del archivo, la cuarta (usuario) el grupo, las siguientes tres son el tamaño del archivo, la fecha de creación y la hora y por ultimo (archivo.txt) el nombre del archivo.

También podemos ver los permisos de determinado archivo con la siguiente linea de código:

ls -l RutaAlDirectorio/NombreDelArchivo.Extension

Fijémonos en la primera columna (-rw-r--r--) en ella hay diez espacios para caracteres. el primero representa el tipo de archivo y puede aparecer de las siguientes formas:

- = Archivo común (archivos de texto, html, mp3, avi, jpg, etc.)

d = Directorio

l = Link puede ser un acceso directo

b = Binario, por ejemplo un ejecutable.

Los nueve siguientes se dividen en grupos de tres. Los tres primeros son los permisos del propietario del archivo, los siguientes del grupo y los últimos de todos los demás u otros.

Propietario Grupos Otros

rwx rwx rwx

Por otro lado las letras son el tipo de permiso que posee el archivo:

r = Read Permiso de lectura

w = Write Permiso de escritura o modificación

x = Execution Permiso de ejecución

Por ejemplo, analizamos la siguiente linea:

-rwxr-xr-x 1 usuario usuario 459 2012-04-10 13:08 script.sh

script.sh

(-rwxr-xr-x)

Tipo de archivo - Común

Permisos de propietario (rwx) lectura, escritura y ejecución.

Permisos del grupo (r-x) lectura y ejecución.

Permisos de otros (r-x) lectura y ejecución.

Permisos en formato numérico octal

La combinación de valores de cada grupo de los usuarios forma un número octal.

bit x = 2e0 = 1

bit w = 2e1 = 2

bit r = 2e2 = 4

Entonces tenemos que:

x = 1

w = 2

r = 4

Existen ocho combinaciones posibles con la suma de los bits encendidos:

--- = 0 No posee ningún permiso

--x = 1 Permiso de ejecución

-w- = 2 Permiso de escritura

-wx = 3 Permiso de Escritura y ejecución

r-- = 4 Permiso de Lectura

r-x = 5 Permiso de lectura y ejecución

rw- = 6 Permiso de lectura y escritura

rwx = 7 Todos los permisos


Al combinar los permisos de usuario, grupo y otros obtenemos un número de tres cifras. Por ejemplo:

rw------- 600 El propietario tiene permisos de lectura y escritura pero el grupo y otros poseen ningún permiso.

rwxrw-r-- 764 El propietario tiene todos los permisos, el grupo permisos de lectura y escritura y otros solo de lectura.

rwxr-xr-x 755 El propietario posee todos los permisos y el grupo y otros solo permisos de lectura y ejecución.

rwxrwxrwx 777 El propietario, el grupo y otros poseen todos los permisos.

Estableciendo Permisos

Los permisos se manejan con el código chmod, la sintaxis es la siguiente:

chmod (Permisos en formato numérico) (archivo o directorio)

Ejemplo:

chmod 777 script.sh #Le da todos los permisos al archivo script.sh


chmod 400 carpeta #Le da permisos al propietario del directorio carpeta de lectura y ninguno al grupo ni a otros

Si queremos establecer los mismos permisos a todos los archivos dentro de un directorio podemos usar chmod -R, la "R" significa recursivo y quiere decir que se tomara en cuenta todo lo que se encuentre dentro del directorio al que se le aplique este comando.

chmod -R 755 carpeta

Establecer permisos de manera simbolica

Ya que conocemos los bits r, w y x; y su significado, los podemos usar como identificadores del permiso que queremos conceder pero hay que tener en cuenta lo siguiente:

u = User, Usuario propietario

g = Group, grupo

o = Others, otros

a = All, Todos

- = Quita permisos

+ = Agrega permisos

Sintaxis: chmod a,u,g,o+,- r,w,x (archivo o directorio)

Ejemplo:

chmod a+x script.sh #Le da permisos de ejecución al propietario el grupo y otros

chmod o-r carpeta #Le quita permisos de lectura a otros

Se pueden combinar. Supongamos que tenemos un archivo.txt con permisos de lectura y escritura sólo para el usuario propietario y lo vamos cambiando dándole permisos y quitándoselos:

rw------- | chmod a+x archivo.txt = rwx--x--x

rwx--x--x | chmod go-x archivo.txt = rwx------

rwx------ | chmod u-x,go+r archivo.txt = rw-r--r--

Es algo confuso al principio pero si practican les garantizo que serán unos cracks en este tema tan funcional en Linux. Espero les sea Útil.

2 comentarios:

  1. soy nuevo en linux entiendo poco pero comprendí tu explicación es muy buena te agradesco mucho gracias :-)

    ResponderEliminar
  2. Amigo gracias por contactar... he estado trabajando en otros proyectos por eso ha sido imposible actualizar el blog pero pronto estaremos de regreso con nuevas noticias, trucos y tutoriales.. Muchas Gracias..

    ResponderEliminar