Si alguna vez te has preguntado como poder bloquear el acceso a un directorio en GNU/Linux a usuarios que no deben tener acceso ó si has tenido la curiosidad de saber como se usan los permisos en modo octal, este es tu tutorial para descubrir como funciona y su sencillo uso con diversos ejemplos. Un buen administrador de sistemas tendrá estos conceptos muy claros desde el primer día, es algo muy sencillo y obligatorio ;) Como es habitual, todo lo explicaré en modo consola, y no usaré para nada el entorno X-Window. ¿Quién necesita un entorno X en un servidor? :P
⬇️ Compra en Amazon el hardware que utilizo ⬇️
- 💻 Ordenador Portátil: Descúbrelo aquí
- 🖥️🖥️ Monitores: Mis 2 súper monitores
- ⌨️ Teclado: Mini teclado + Lector DNIe
- 🖱️ Ratón: Mi ratón programable
- 🎧 Auriculares: Súper Auriculares TOP!
- 🖨️ Impresora: Mi fantástica impresora
- 🗄️ NAS Backup: Mi NAS para Backups
- 🔌 HUB USB: Mi HUB para puertos USB
- 📱 Smartphone: Mi Smartphone
- 📲 Tablet: Mi tablet para viajes
- ⌚ Smartwatch: Mi Smartwatch favorito
- 📹 Cámara deportiva: Mi cámara para deportes
Cualquier duda, problema ó sugerencia, podéis dejar un comentario abajo del tutorial. ¡Allá vamos!
1.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL
- GNU/Linux Debian 8 64bits
2.- INTRODUCCIÓN
Los ficheros y directorios tienen una serie de permisos que pueden ser aplicados al propietario del grupo, a los usuarios del grupo al que pertenece el fichero y a otros usuarios. Podemos especificar permisos diferentes para cada uno de ellos para conseguir una versatilidad. Como se puede ver en la imagen, los atributos de los permisos de los ficheros y directorios, que podemos ver con "ls -l", se dividen en 4 "zonas".
La primera indica si es un fichero o directorio, la segunda (rojo) los permisos del propietario del archivo, la tercera (verde) los permisos del grupo del propietario y la última (azul) los permisos para el resto de usuarios.
Atributos de permisos
3.- PERMISOS BÁSICOS DE DIRECTORIOS Y FICHEROS Y COMO CAMBIARLOS
Existen 3 permisos básicos que se pueden aplicar sobre los ficheros y directorios:
Permiso de Lectura (r): Permite que el usuario pueda ver el contenido del fichero, por ejemplo, un fichero de texto ó una imagen. En los directorios significa que podemos acceder a ellos..
Permiso de Escritura (w): Permite que el usuario puede sobre escribir, editar ó modificar el contenido del fichero. En los directorios significa que se pueden crear o copiar ficheros dentro de él.
Permiso de Ejecución (x): Permite que el usuario ejecute el fichero si por ejemplo es un script de bash. En los directorios significa que podemos entrar en el directorio.
A continuación mostraré una serie de ejemplos con chmod de como cambiar los permisos de ficheros usando el método de GUO (Group, User, Owner):
SÍMBOLO | USUARIO |
---|---|
u | Usuario propietario del archivo |
o | Usuarios pertenecientes al mismo grupo que el propietario del archivo |
g | Usuarios ajenos al dueño y grupo del archivo |
a | Todos los tipos de usuarios mencionados anteriormente |
Si omitimos el campo "símbolo" se aplicará por defecto "a".
OPERADOR | ACCIÓN |
---|---|
+ | Añadir un permiso |
- | Remover un permiso |
= | Establecer un permiso único |
EJEMPLOS SOBRE UN FICHERO
A continuación una serie de ejemplos con chmod, partimos de un fichero inicial con los siguientes permisos (0644) :
# ls -l fichero_pruebas.txt
# -rw-r--r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Quitamos todos los permisos sobre el fichero:
# chmod = fichero_pruebas.txt
---------- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Permitimos la lectura solamente por el propietario del fichero:
# chmod u+r fichero_pruebas.txt
-r-------- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Permitimos lectura para todos los usuarios:
# chmod a+r fichero_pruebas.txt
-r--r--r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Permitimos lectura, escritura y ejecución al propietario del fichero, lectura y escritura para los usuarios del mismo grupo y solamente lectura para otros usuarios:
# chmod u+rwx,g+rw,o+r fichero_pruebas.txt
-rwxrw-r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Si queremos que el fichero tenga solo permisos de lectura y escritura para todo el mundo, ejecutaremos:
# chmod a+rw fichero_pruebas.txt
-rw-rw-rw- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Si queremos quitar un permiso, simplemente con el símbolo "-" en lugar de "+" podremos quitarlo, por ejemplo, partiendo del fichero anterior, si queremos quitarle el permiso de escritura a los miembros del grupo, ejecutaremos:
# chmod g-w fichero_pruebas.txt
-rwxr--r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
EJEMPLOS SOBRE UN DIRECTORIO
Partimos de un directorio inicial con los siguientes permisos (0755) :
# ls -l | grep directorio_pruebas
drwxr-xr-x 2 root root 4096 jun 22 21:01 directorio_pruebas
Permitimos solo acceso a root, todos los demás no podrán acceder:
# chmod u+rwx,g-rx,o-rx directorio_pruebas
# ls -l | grep directorio_pruebas
drwx------ 2 root root 4096 jun 22 21:01 directorio_pruebas
Como se puede ver, el funcionamiento de chmod en un directorio es exactamente igual al de un fichero.
4.- PERMISOS BÁSICOS EN MODO OCTAL
Tanto la asignación como la lectura de los permisos en modo octal es muy sencillo, solamente hay que memorizar la siguiente asignación de valores:
- - 4 = r (read/lectura)
- - 2 = w ( write/escritura)
- - 1= x (execution/ejecución)
ATRIBUTOS | VALOR | PERMISOS |
---|---|---|
--- | 0 | Sin permisos |
--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 | Permiso de lectura,escritura y ejecución |
El VALOR es la suma de cada uno de los atributos, por ejemplo: rwx = 4+2+1=7 , r-x = 4 , wx = 3.
Por tanto, para asignar los permisos de los ficheros y directorios podemos realizar la siguiente tabla con sus correspondientes asignaciones:
ATRIBUTOS | OCTAL | PERMISOS PARA TODOS |
---|---|---|
--- | chmod 000 | Sin permisos |
--x | chmod 111 | Permiso de ejecución |
-w- | chmod 222 | Permiso de escritura |
-wx | chmod 333 | Permiso de escritura y ejecución |
r-- | chmod 444 | Permiso de lectura |
r-x | chmod 555 | Permiso de lectura y ejecución |
rw- | chmod 666 | Permiso de lectura y escritura |
rwx | chmod 777 | Permiso de lectura,escritura y ejecución |
EJEMPLOS SOBRE UN FICHERO
A continuación una serie de ejemplos, exactamente los mismos que los de arriba pero usando el método octal. Partimos de un fichero inicial con los siguientes permisos (0644) :
# ls -l fichero_pruebas.txt
# -rw-r--r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Quitamos todos los permisos sobre el fichero:
# chmod 000 fichero_pruebas.txt
---------- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Permitimos la lectura solamente por el propietario del fichero:
# chmod 0400 fichero_pruebas.txt
-r-------- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Permitimos lectura para todos los usuarios:
# chmod 0444 fichero_pruebas.txt
-r--r--r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Permitimos lectura, escritura y ejecución al propietario del fichero, lectura y escritura para los usuarios del mismo grupo y solamente lectura para otros usuarios:
# chmod 0764 fichero_pruebas.txt
-rwxrw-r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Si queremos que el fichero tenga solo permisos de lectura y escritura para todo el mundo, ejecutaremos:
# chmod 0666 fichero_pruebas.txt
-rw-rw-rw- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
Si queremos quitar un permiso, simplemente con el símbolo "-" en lugar de "+" podremos quitarlo, por ejemplo partiendo del fichero anterior, si queremos quitarle el permiso de escritura a los miembros del grupo, ejecutaremos:
# chmod 0744 fichero_pruebas.txt
-rwxr--r-- 1 root root 0 jun 22 20:22 fichero_pruebas.txt
EJEMPLOS SOBRE UN DIRECTORIO
Partimos de un directorio inicial con los siguientes permisos (0755) :
# ls -l | grep directorio_pruebas
drwxr-xr-x 2 root root 4096 jun 22 21:01 directorio_pruebas
Permitimos solo acceso a root, todos los demás no podrán acceder:
# chmod 0700 directorio_pruebas
# ls -l | grep directorio_pruebas
drwx------ 2 root root 4096 jun 22 21:01 directorio_pruebas
5.- ¿QUÉ MÉTODO ELEGIR?
Personalmente, prefiero el método octal antes que el normal, ya que es muchísimo más rápido y su dificultad es nula. Solamente debemos aprendernos la equivalencia de r=4, w=2, x=1 y ... ¡voilà!
ENJOY!