sábado, 2 de enero de 2010

Permisos en Linux

Todos los archivos y directorios en Linux tienen permisos que verifican quien puede hacer o no alguna acción con él.
Los permisos propiamente son tres:
  • r: read (lectura): Cuando el permiso de lectura está activo sobre un directorio significa que se podrá listar los recursos almacenados en él, si está asignado a un archivo se podrá leer su contenido.
  • w: write (escritura): Cuando el permiso de escritura está activo sobre un directorio significa que se podrá crear y borrar archivos en su interior, si está activado para un archivo significa que se podrá modificar su contenido.
  • x: execute (ejecución): Si el permiso de ejecución está activo sobre un directorio significa que el usuario podrá realizar otras funciones dentro de él mediante los otros permisos de lectura y escritura, y si está activo sobre un archivo se podrá ejecutarlo desde la línea de comandos.
Ejemplo:


















Como habrás apreciado los permisos están asignados en grupos de 3 (rwx) y corresponde al:
propietario ( owner: dueño del archivo o directorio),
grupo ( group: grupo del archivo o directorio) y
otros ( others: otro usuario diferente del propietario).

Linux dispone de 3 comandos que permite cambiar los permisos, el propietario y el grupo de un archivo y/o directorio respectivamente.

  • Comando chmod : se utiliza para cambiar los permisos del archivo o directorio
    $ chmod [permisos] [archivo/directorio] [opciones]
  • Comando chown : se utiliza para cambiar el propietario del archivo o directorio
    # chown [nuevo usuario propietario] [archivo/directorio] [opciones]
  • Comando chgrp : utilizado para cambiar el grupo del archivo o directorio
    # chgrp [nuevo grupo] [archivo/directorio] [opciones]

Para cambiar los permisos se puede hacer de 2 maneras:
1. Utilizando caracteres o
2. Utilizando números.

CAMBIO DE PERMISOS UTILIZANDO CARACTERES

Para poder utilizar la taquigrafía basada en caracteres tomemos en cuenta la siguiente lista con su respectiva correspondencia:


Símbolo

Descripción

Identidades

u

Es el usuario propietario del archivo o directorio

g

Es el grupo al que pertenece el archivo o directorio

o

Otros usuarios, el resto del mundo, ni el propietario ni su grupo

a

Todo el mundo – propietario, grupo y otros

Permisos

r

Acceso de lectura

w

Acceso de escritura

x

Acceso de ejecución

Acciones

+

Añade los permisos

-

Elimina los permisos

=

el único permiso


Vamos a practicar con el comando chmod, para ello lo primero que haremos será crear el archivo foto1.png para ver los cambios de permisos, así que les recomiendo seguir la secuencia:

Ejemplo

Descripción

Resultado

$ touch foto1.png

creamos el archivo foto1.png

foto1.png

$ chmod a-rwx foto1.png

quitamos todos los permisos al archivo foto1.png

---------

$ chmod u+rwx foto1.png

añadimos todos los permisos para el propietario

rwx------

$ chmod g+x foto1.png

añadimos el permiso de ejecución para el grupo

rwx—x---

$ chmod o+r foto1.png

añadimos el permiso de lectura para los otros usuarios

rwx—xr--

$ chmod u-rw foto1.png

eliminamos los permisos de lectura y escritura para el propietario

--x—xr--

$ chmod a=r foto1.png

establecemos como unico permiso de lectura para los 3 grupos

r—r—r--

$ chmod a=rx foto1.png

establecemos los permisos de lectura y ejecución para los 3 grupos

r-xr-xr-x

$ chmod a=- foto1.png

quitamos todos los permisos

----------

$ chmod u+rx,o+x foto1.png

añadimos los permisos de lectura y ejecución al propietario y ejecución a otros

r-x-----x

$ chmod g+rx,o-x foto1.png

añadimos permiso de lectura y ejecución al grupo y eliminamos permiso de ejecución a otros

r-xr-x---

$ chmod ug+wx,o-x foto1.png

añadimos permiso de escritura y ejecución al propietario y grupo, y eliminamos permiso de ejecución a otros

rwxrwx---

$ chmod a=rw foto1.png

permite a cualquiera modificar el contenido e incluso eliminar el archivo

rw-rw-rw-


2. CAMBIO DE PERMISOS UTILIZANDO NUMEROS

Cada permiso tienen asignado un valor, incluso cuando el permiso no está activo. Para poder utilizar los números tendremos que tener en cuenta la siguiente tabla con sus respectivos valores:

r = 4 (lectura)
w = 2 (escritura)
x = 1 (ejecucion)
- = 0 (sin permisos)

Cuando asignamos los permisos utilizando números debemos tener en cuenta que primero se sumarán los valores y dicho resultado será el que se coloque, aquí una tabla que muestra dichos valores:

Valor

Permisos

Descripción

0

---

El valor cero significa que no se han asignado permisos

1

--x

sólo se ha asignado el de ejecución

2

-w-

sólo permiso de escritura

3

-wx

permisos de escritura y ejecución

4

r--

sólo permiso de lectura

5

r-x

permisos de lectura y ejecución

6

rw-

permisos de lectura y escritura

7

rwx

permisos: lectura, escritura y ejecución

Los permisos por números se asignan en grupos de 3, es decir, para el propietario-grupo-otros, no es factible asignar solo para uno o dos de ellos.

Ejemplos:

  • rw------- (600) — Sólo el propietario tiene el derecho de leer y escribir.
  • rw-r--r-- (644) — Sólo el propietario tiene los permisos de leer y escribir; el grupo y los demás sólo pueden leer.
  • rwx------ (700) — Sólo el propietario tiene los derechos de leer, escribir y ejecutar el archivo.
  • rwxr-xr-x (755) — El propietario tiene los derechos de leer, escribir y ejecutar; el grupo y los demás sólo pueden leer y ejecutar.
  • rwx--x--x (711) — El propietario tiene los derechos de lectura, escritura y ejecución; el grupo y los demás sólo pueden ejecutar.
  • rw-rw-rw- (666) — Todo el mundo puede leer y escribir en el archivo. ¡No es una buena elección!
  • rwxrwxrwx (777) — Todo el mundo puede leer, escribir y ejecutar. ¡Tampoco es buena elección!

Utilizaremos el mismo ejercicio anterior para poder practicar con los permisos utilizando números, el único cambio que haremos será utilizar otro archivo llamado foto2.png:

Ejemplo

Descripción

Resultado

$ touch foto2.png

creamos el archivo foto2.png

foto2.png

$ chmod 000 foto2.png

quitamos todos los permisos al archivo foto2.png

----------

$ chmod 700 foto2.png

añadimos todos los permisos para el propietario

-rwx------

$ chmod 710 foto2.png

añadimos el permiso de ejecución para el grupo

-rwx—x---

$ chmod 714 foto2.png

añadimos el permiso de lectura para los otros usuarios

-rwx—xr--

$ chmod 114 foto2.png

eliminamos los permisos de lectura y escritura para el propietario

---x—xr--

$ chmod 444 foto2.png

establecemos como unico permiso de lectura para los 3 grupos

-r—r—r--

$ chmod 555 foto2.png

establecemos los permisos de lectura y ejecución para los 3 grupos

-r-xr-xr-x

$ chmod 000 foto2.png

quitamos todos los permisos

-----------

$ chmod 501 foto2.png

añadimos los permisos de lectura y ejecución al propietario y ejecución a otros

-r-x-----x

$ chmod 550 foto2.png

añadimos permiso de lectura y ejecución al grupo y eliminamos permiso de ejecución a otros

-r-xr-x---

$ chmod 770 foto2.png

añadimos permiso de escritura y ejecución al propietario y grupo, y eliminamos permiso de ejecución a otros

-rwxrwx---

$ chmod 666 foto2.png

permite a cualquiera modificar el contenido e incluso eliminar el archivo

-rw-rw-rw-

Cambiando el propietario
Utilizamos el comando chown explicado líneas arriba:
# chown clases foto1.png # estamos cambiando el propietario del archivo, ahora el usuario clases será el propietario del archivo foto1.png
# chown raul foto2.png # el usuario raul será el propietario del archivo foto2.png
Si vamos a cambiar el propietario de un directorio y con todos sus subdirectorios y archivos en forma recursiva utilizaremos la opción –R :
# chown clases datos/ –R # el usuario clases sera el nuevo propietario de todos los archivos y subdirectorios que estén dentro del directorio datos/

Cambiando el grupo
Utilizamos el comando chgrp explicado líneas arriba:
# chgrp clases foto1.png # estamos cambiando el grupo del archivo, ahora el archivo foto1.png será del grupo clases
# chgrp raul foto2.png # el archivo foto2.png será del grupo raul
Si vamos a cambiar el grupo de un directorio y con todos sus subdirectorios y archivos en forma recursiva utilizaremos la opción –R:
# chgrp clases datos/ –R # todos los archivos y sub directorios del directorio datos/ serán del grupo clases


No hay comentarios: