PERMISOS
EN LINUX
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
raul raul 4096 2005-02-16 14:47 Desktop
drwxr-xr-x 5 raul raul 4096 2005-02-16 12:42 GNUstep
-rw-r--r-- 1 raul raul 246417 2005-03-03 13:13 foto1.png
-rw-r--r-- 1 raul raul 232505 2005-03-03 13:14 carta2.abw
-rw-r--r-- 1 raul raul 239618 2005-03-03 13:14 informe.abw
drwxr-xr-x 2 raul raul 4096 2005-02-16 12:42 tmp
Ahora describamos la
salida que hemos obtenido:
Con la siguiente
línea interpretamos la información así:
- rw- r--
r-- 1 raul raul 246417 2005-03-03 13:13 foto1.png
↑ ↑ ↑
↑ ↑
↑ ↑
↑
↑
↑ ↑
1 2 3 4 5 6
7 8
9
10
11
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 raul es el
propietario de este archivo
7 : Grupo = este archivo pertenece al grupo
raul
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 foto1.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).
En la siguiente
imagen resaltamos nuevamente la ubicación de los permisos en
caso no lo hayamos notado:
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:
- Utilizando
taquigrafía basada en caracteres, o
- 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
|