domingo, 9 de mayo de 2010

¿Cómo se cambian los permisos de ficheros y directorios en Linux? | El rincón de Linux

¿Cómo se cambian los permisos de ficheros y directorios en Linux? | El rincón de Linux
Fuente: Informacionlinux.es.org

En este corto articulo tratamos el tema de como cambiar los permisos de ficheros y directorios en nuestro sistema Linux. Todo los comandos y ejemplos que se citan deben ejecutarse desde la linea de comandos en una terminal. Tambien decir que existen programas en modo grafico donde se puede conseguir lo mismo que aqui se explica a golpe de raton.

Lo primero que hay que decir es que para conseguir toda la información sobre los comandos involucrados en el tema de permisos podeis consultar los comandos man chmod, man chown y man chgrp

Información de un fichero/directorio

Cuando obtienes información sobre un fichero/directorio con el comando ls, existen diferentes campos que te dicen que clase de permisos el fichero/directorio tiene.
Ejemplo:

[user@localhost]# ls -l
-rwxr-x---   1 pepito depart1     4348 Nov 24 16:19 test
En la primera columna se pueden ver una serie de letras y guiones -rwxr-x---, estas letras nos dicen quien en el sistema, y que clases de permisos tiene el fichero test.
Estas letras están agrupadas en tres grupos con tres posiciones cada uno, más una primera posición que nos dice de que clase de archivo se trata (los mas normales (d) directorios, o (-) archivos de datos). En nuestro ejemplo la primera posición es (-) con lo cual el archivo test, es un archivo de datos (binario/ejecutable en este ejemplo).
El primer grupo de tres (rwx en nuestro caso) nos dice que clase de permisos tiene el dueño del fichero (u)(user/owner)
El segundo grupo de tres (r-x en nuestro caso) nos dice que clase de permisos tiene el grupo del fichero (g)(group).
Y el último grupo de tres (--- en nuestro caso) nos dice que clase de permisos tienen todos los demás usuarios del sistema sobre este
fichero (o)(others).
r :significa permiso para leer
w :significa permiso para escribir 
x :significa permiso para ejecutar 
La segunda columna pepito, nos dice quien es el dueño del fichero,(pepito en este caso).
La tercera columna depart1, nos dice cual es el grupo del fichero (depart1 en este caso).
La cuarta columna 4348, nos dice el tamaño del fichero.
La quinta columna Nov 24 16:19, nos dice cual es la fecha y hora de la última modificación.
La sexta columna test, nos dice cual es el nombre del fichero/directorio.
Asi pues, el fichero test de nuestro ejemplo tiene los siguientes permisos:
  • pepito puede leer, escribir/modificar, y ejecutar el fichero test.
  • Los usuarios pertenecientes al grupo depart1 puede leer, y ejecutar pero no escribir/modificar.
  • Los demás usuarios no pueden hacer nada, ni leerlo, ni escribir/modificar, ni ejecutarlo.

Como cambiar los permisos/dueño/grupo de un fichero/directorio?

Para cambiar el dueño del fichero se utiliza el comando : chown usuario fichero
Para cambiar el grupo del fichero se utiliza el comando: chgrp grupo fichero
Para cambiar los permisos se utiliza el comando: chmod permisos fichero
Los permisos se pueden especificar de diferentes maneras, una serie de ejemplos, es lo mejor para comprenderlo:
chmod ugo+rwx test (da permisos rwx a todos, user,group,others)
chmod ugo-x test (quita permiso x (ejecucion) a todos, user,group,others)
chmod o-rwx test (quita permisos rwx a others)
chmod u=rwx,g=rx test (da permisos rwx a user, rx a group y ninguno a others)
Asi podriamos continuar con todas las posibles combinaciones de letras, es cuestión de usar la imaginación ;-)
Existe otro metodo que utiliza numeros, en vez de letras para asignar permisos, la siguiente tabla nos puede ayudar un poco a comprender esta manera:
r w x  VALOR DECIMAL

0 0 0  0 (000 binario es 0 en decimal)
0 0 1  1  .........
0 1 0  2  .........
0 1 1  3  .........
1 0 0  4 (100 binario es 4 en decimal)
1 0 1  5  .........
1 1 0  6  .........
1 1 1  7 (111 binario es 7 en decimal)
1 significa activado y 0 desactivado, o sea 101, activa r y x, y desactiva w. Sabiendo esto solo tenemos que usar el valor decimal para dar solo permisos de lectura y ejecucion, un ejemplo aclarara esto.
chmod 750 test

da permisos rwx al usuario (7=111) 
da permisos r-x al grupo (5=101) 
da permisos --- a los demas (0=000) 
Esto es todo por hoy, esperamos que tengais un poco mas claro lo de los permisos de ficheros en Linux y que le vayais perdiendo el miedo a la linea de comandos

Otro manual sobre este tema:
Fuente: linuxcentro.net

¿COMO SE CAMBIAN LOS PERMISOS?

Para cambiar los permisos se puede hacer de 2 maneras:
  1. Utilizando taquigrafía basada en caracteres, o
  2. Utilizando números.

1. CAMBIO DE PERMISOS UTILIZANDO TAQUIGRAFÍA DE 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-
Si cambiamos los permisos a un directorio y deseamos que estos permisos tengan efecto sobre todos sus subdirectorios y archivos sólo deberemos añadir la opción –R. Ejemplo:
$ chmod a=rw DIRECTORIO –R

2. CAMBIO DE PERMISOS UTILIZANDO NÚMEROS

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 PROPIETARIOS Y GRUPOS

Otra de los puntos a la hora de establecer permisos es la necesidad de poder cambiar el propietario y grupo del archivo o directorio, para hacer esta operación debe estar como root y los usuarios y grupos que utilizará deben haber sido creados previamente.

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 propietario 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:

Publicar un comentario