19 enero, 2008

Cambiar permisos a directorios y archivos

El sistema de permisos en Linux se basa en un esquema de usuarios/grupos que lo convierte en la base principal de la seguridad en Linux, a estos usuarios y grupos se les asignan distintos derechos sobre los archivos y directorios.

Esta es una de las características que ayudan a que Linux sea casi inmune a los Virus de computadora, los virus deben ser capaces de escribir sobre un archivo para poder infectarlo y ejecutarse de alguna manera para poder infectar mas archivos, con el sistema de permisos de Linux los virus no pueden copiarse a cualquier archivo, si el usuario carece de permisos el virus no podrá infectar más archivos y por lo tanto no podrá reproducirse.

Todos los archivos y directorios en Linux tienen permisos que verifican quien puede hacer o no alguna acción con él.

Cuales son los permisos?

Los permisos propiamente dichos 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 esta 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.

Y donde están los permisos?

Para poder ver los permisos de los archivos y directorios es necesario ejecutar el siguiente comando:

$ ls –l

Este comando nos dará una salida similar a la siguiente:

drwxr-xr-x 3 fabian fabian 4096 2005-02-16 14:47 Desktop
drwxr-xr-x 5 fabian fabian 4096 2005-02-16 12:42 GNUstep
-rw-r–r– 1 fabian fabian 246417 2005-03-03 13:13 imagen1.png
-rw-r–r– 1 fabian fabian 232505 2005-03-03 13:14 carta2.abw
-rw-r–r– 1 fabian fabian 239618 2005-03-03 13:14 informe.abw
drwxr-xr-x 2 fabian fabian 4096 2005-02-16 12:42 tmp

Con la siguiente línea interpretamos la información así:

- rw- r — r — 1 fabian fabian 246417 2005-03-03 13:13 imagen1.png

1 : Tipo de archivo = es un archivo regular
2 : Permisos = los permisos para el propietario son de lectura y escritura
3 : Permisos = el grupo tiene permiso de sólo lectura
4 : Permisos = los otros usuarios tienen el permiso de sólo lectura
5 : Enlace Físico = tiene un enlace físico
6 : Propietario = el usuario fabian es el propietario de este archivo
7 : Grupo = este archivo pertenece al grupo fabian
8 : Tamaño = su tamaño es de 246417 bytes
9 : Fecha = fue creado el 03 de marzo de 2005
10 : Hora = a 13:13 horas
11 : Nombre = el archivo se llama imagen1.png

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).

COMANDOS RELACIONADOS

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]

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

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 imagen1.png para ver los cambios de permisos, así que les recomiendo seguir la secuencia:

$ touch imagen1.png
creamos el archivo imagen1.png
Resultado: imagen1.png

$ chmod a-rwx imagen1.png
quitamos todos los permisos al archivo imagen1.png
Resultado:
———

$ chmod u+rwx imagen1.png
añadimos todos los permisos para el propietario

Resultado:
rwx——

$ chmod g+x imagen1.png
añadimos el permiso de ejecución para el grupo
Resultado: rwx—x—

$ chmod o+r imagen1.png
añadimos el permiso de lectura para los otros usuarios

Resultado:
rwx—xr–

$ chmod u-rw imagen1.png
eliminamos los permisos de lectura y escritura para el propietario

Resultado: –x—xr–

$ chmod a=r imagen1.png
establecemos como unico permiso de lectura para los 3 grupos
Resultado:
r—r—r–

$ chmod a=rx imagen1.png
establecemos los permisos de lectura y ejecución para los 3 grupos
Resultado: r-xr-xr-x

$ chmod a=- imagen1.png
quitamos todos los permisos
Resultado:
———-

$ chmod u+rx,o+x imagen1.png
añadimos los permisos de lectura y ejecución al propietario y ejecución a otros
Resultado: r-x—–x

$ chmod g+rx,o-x imagen1.png
añadimos permiso de lectura y ejecución al grupo y eliminamos permiso de ejecución a otros
Resultado: r-xr-x—

$ chmod ug+wx,o-x imagen1.png
añadimos permiso de escritura y ejecución al propietario y grupo, y eliminamos permiso de ejecución a otros

Resultado:
rwxrwx—

$ chmod a=rw imagen1.png
permite a cualquiera modificar el contenido e incluso eliminar el archivo
Resultado:
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:

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 imagen2.png:

$ touch imagen2.png
creamos el archivo imagen2.png
Resultado: imagen2.png

$ chmod 000 imagen2.png
quitamos todos los permisos al archivoimagen2.png
Resultado:
———-

$ chmod 700 imagen2.png
añadimos todos los permisos para el propietario
Resultado:
-rwx——

$ chmod 710 imagen2.png
añadimos el permiso de ejecución para el grupo
Resultado:
-rwx—x—

$ chmod 714 imagen2.png
añadimos el permiso de lectura para los otros usuarios
Resultado: -rwx—xr–

$ chmod 114 imagen2.png
eliminamos los permisos de lectura y escritura para el propietario
Resultado: —x—xr–

$ chmod 444 imagen2.png
establecemos como unico permiso de lectura para los 3 grupos
Resultado: -r—r—r–

$ chmod 555 imagen2.png
establecemos los permisos de lectura y ejecución para los 3 grupos
Resultado: -r-xr-xr-x

$ chmod 000 imagen2.png
quitamos todos los permisos
Resultado:
———–

$ chmod 501 imagen2.png
añadimos los permisos de lectura y ejecución al propietario y ejecución a otros
Resultado: -r-x—–x

$ chmod 550 imagen2.png
añadimos permiso de lectura y ejecución al grupo y eliminamos permiso de ejecución a otros
Resultado: -r-xr-x—

$ chmod 770 imagen2.png
añadimos permiso de escritura y ejecución al propietario y grupo, y eliminamos permiso de ejecución a otros
Resultado: -rwxrwx—

$ chmod 666 imagen2.png
permite a cualquiera modificar el contenido e incluso eliminar el archivo
Resultado: -rw-rw-rw-

CAMBIANDO PROPIETARIOS Y GRUPOS

Otro 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 imagen1.png
estamos cambiando el propietario del archivo, ahora el usuario clases será el propietario del archivo imagen1.png

# chown fabian imagen2.png
el usuario fabian será el propietario del archivo imagen2.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 imagen1.png
estamos cambiando el propietario del archivo, ahora el archivo imagen1.png será del grupo clases

# chgrp fabian imagen2.png
el archivo imagen2.png será del grupo fabian

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

USANDO EL METODO OCTAL

La otra forma bastante utilizada para administrar los permisos de archivos y carpetas en GNU/Linux, es el método octal.

Este método utiliza los números octales del siguiente modo:

000: ningún permiso
001: ejecución para el dueño del archivo
002: escritura para el dueño del archivo
004: lectura para el dueño del archivo
010: ejecución para el grupo dueño del archivo
020: escritura para el grupo dueño del archivo
040: lectura para el grupo dueño del archivo
100: ejecución para resto de usuarios
200: escritura para resto de usuarios
400: lectura para resto de usuarios

Bien, quizás es un poco complicado entender este método, pero no, realmente es fácil. Para asignar los permisos estos se suman conforme a la tabla, obteniéndose un solo número que definirá los permisos que tiene nuestro archivo o carpeta, por ejemplo:

Asignemos todos los permisos al archivo solo_para_ti.mp3 y para todos el resto de los usuarios.

$ sudo chmod 777 solo_para_ti.mp3

¿cómo es eso?

claro veamos dijimos que ejecución para el resto era 100, escritura para el resto era 200 y lectura para el resto era 400, por lo tanto.

ordenemos estos permisos

100
200
400
700 es la suma que queda para el resto

010
020
040
070 es la suma que queda para el grupo

001
002
004
007 es la suma que queda para el dueño del archivo

Entonces si digitamos el comando chmod 777 estamos asignando todos los permisos para todos los usuarios.

Si hacemos lo siguiente:

$ sudo chmod 660 solo_para_ti.mp3

El archivo tendrá para el dueño del archivo permisos de escritura y lectura, igual para el grupo y para el resto ningún permiso.

Entonces dentro de los tres dígitos el primero corresponde al dueño o propietario del archivo, el segundo dígito para el grupo y el último dígito para el resto de los usuarios.

777 usuario
777 grupo
777 resto de usuarios

Ok. pero está al revés? si, pero es solamente por el orden de los números octales, pero de acuerdo a la tabla anterior sabemos que el primer dígito es el usuario dueño, el segundo el grupo dueño del archivo y el último para el resto de los usuarios.

No hay comentarios.: