El Shell Bash de GNU/Linux 5.4 – Permisos
- El Shell Bash de GNU/Linux 1 – Introducción
- El Shell Bash de GNU/Linux 2 – Tuberías y filtros
- El Shell Bash de GNU/Linux 3 – Variables de entorno
- El Shell Bash de GNU/Linux 4 – Expresiones regulares
- El Shell Bash de GNU/Linux 5 – Sistema de ficheros
- El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
- El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
- El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
- El Shell Bash de GNU/Linux 5.4 – Permisos
- El Shell Bash de GNU/Linux 5.5 – Listar ficheros
- El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
- El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
- El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros
5.4. Permisos
Usuario y grupo propietarios
Cada fichero y directorio del sistema pertenecen a un usuario y grupo determinados, podemos verlo al sacar el listado largo de un directorio:
ls -la
-rw-r--r-- 1 ppalotes alumnos 15 2011-03-21 16:34 claves.txt
-rw-r--r-- 1 jblanco profesores 32 2011-03-21 16:34 datos.txt
en el tercer campo tenemos el usuario (ppalotes), en el cuarto el grupo (alumnos) para el fichero llamado claves.txt
Permisos ordinarios
Los permisos, determinan quién puede leer y/o modificar el contenido de un fichero o directorio, y quién puede ejecutar un fichero de programa o acceder al contenido de un directorio.
Los permisos se pueden ver en el primer campo del listado largo de archivos:
-rw-r–r– 1 ppalotes alumnos 15 2011-03-21 16:34 claves.txt
El primer carácter indica el tipo de fichero, en este caso se trata de un archivo por el guión.
Los siguientes 9 caracteres son los permisos del fichero o directorio: rw-r–r–
En esos 9 caracteres hay 3 bloques de permisos:
- Para el usuario (U) los tres primeros
- Para el grupo (G) los tres siguientes
- Para el otros (O) los tres últimos
En cada bloque hay 3 tipos de permiso:
- r: lectura (read) → 4
- w: escritura (write) → 2
- x: ejecución (execute) → 1
Los números 4, 2 y 1 son números en octal, si a un archivo queremos dar permisos de lectura (4) y ejecución (1), deberemos asignarle el valor en octal 5=4+1
Los permisos se representan mediante 9 bits, 3 para U, 3 para G y 3 para O:
- primeros 3 bit para → el usuario propietario del fichero → u
- siguientes 3 bit para → el grupo propietario del fichero → g
- siguientes 3 bit para → el resto de usuarios (otros) → o
Sistema de permisos
Vamos a introducir que son los permisos (rwx), así como el comando que nos permite modificarlos (chmod).
Los permisos de acceso como ya hemos visto se establecen en tres niveles:
- Usuario que ha creado el fichero (propietario, u)
- Grupo al que pertenece el usuario (grupo, g)
- Todos los demás usuarios del sistema (otros, o)
Para cada nivel hay tres tipos de acceso:
- Lectura (r) → Permite ver el contenido del fichero o directorio
- Escritura (w) → Permite modificar el contenido de un fichero, o crear y borrar ficheros y subdirectorios, si se trata de un directorio
- Ejecución (x) Se puede ejecutar el fichero o acceder a él si es un directorio
Si se teclea la orden ls –l (listado largo) se nos presenta información detallada de cada fichero o directorio.
Por ejemplo si listo los ficheros que empiezan por m en la carpeta /etc y me quedo con alguna linea:
jblanco@tochox:/etc$ ls m* -l
-rw-r–r– 1 root root 111 2016-04-01 21:28 magic
lrwxrwxrwx 1 root root 13 2016-12-06 16:56 motd -> /var/run/motd
drwxr-xr-x 2 root root 4096 2016-08-16 12:11 1.0
La primera columna empezando por la izquierda muestra el tipo de fichero y la máscara de permisos. Ejemplo:
-rwxrw—x → (-)(rwx)(rw-)(–x)
Es un fichero regular (-),
con permiso de lectura, escritura y ejecución para el propietario (rwx),
de lectura y escritura para el grupo (rw-)
y de ejecución para otros (–x).
Existe otra forma para referirnos a los permisos sobre ficheros: la máscara octal.
Para poner la máscara de numeración octal se siguen los siguientes pasos:
Se pasa la máscara rwx a binario utilizando tres dígitos para cada nivel:
- propietario, grupo y otros
- 0 → significa que no tiene permiso (un guión)
- 1 → que sí lo tiene (la letra correspondiente rwx)
Las posibles combinaciones para 3 bit serían:
000 ↔ —
001 ↔ –x
010 ↔ -w-
011 ↔ -wx
100 ↔ r–
101 ↔ r-x
110 ↔ rw-
111 ↔ rwx
Aunque recordando sólo 3 combinaciones, podemos sacar las otras sumando, teniendo en cuenta los pesos:
4 → r–
2 → -w-
1 → –x
de cada dígito binario, para el ejemplo r-x, sería:
(4 2 1)
(1 0 1)
————–
4*1 + 2*0 + 1*1 = 4 + 2 = 5
De esta forma, la máscara octal para todos los permisos sería:
— → 000 → 0 + 0 + 0 = 0
–x → 001 → 0 + 0 + 1 = 1
-w- → 010 → 0 + 2 + 0 = 2
-wx → 011 → 0 + 2 + 1 = 3
r– → 100 → 4 + 0 + 0 = 4
r-x → 101 → 4 + 0 + 1 = 5
rw- → 110 → 4 + 2 + 0 = 6
rwx → 111 → 4 + 2 + 1 = 7
Chuleta:
4 2 1
r w x
chmod
Permite modificar los permisos de uno o varios ficheros.
chmod [opciones] modo[,modo] ficheros
chmod [opciones] modo_octal ficheros
Cambia los permisos de cada fichero dado según modo, que puede ser o bien una representación simbólica de los cambios a realizar, o bien un número octal que representa el patrón de bits de los nuevos permisos.
Modo simbólico
- a, u, g, o → all, user, group, others
- + → hace que los permisos seleccionados se añadan a los ya existentes en cada fichero
- – → hace que se quiten de los que ya había
- = → hace que sean los únicos que el fichero va a tener
- r, w, x, s, t → read, write, execute, setuid/setgid, sticky
- R Cambia ficheros y directorios recursivamente
Ejemplo: Establecer permisos en modo octal:
chmod 652 practica
El propietario de practica tendrá permiso de lectura y escritura (4+2=6), el grupo de lectura y ejecución (4+1=5) y otros de escritura (2).
Si quisiéramos expresar lo mismo mediante una máscara simbólica, pondríamos:
chmod u=rw, g=rx, o=w practica
Ejemplo: Comprobar con ls -l, antes y después de establecer permisos:
ls –l
-rw-r-x-w- 1 jblanco profesores 512 Feb 16 18:55 practica
chmod u+x, g-x practica
ls –l
-rwxr—w- 1 jblanco profesores 512 Feb 16 18:55 practica
Da permiso de ejecución del fichero al propietario y le quita el permiso de ejecución al grupo.
Otros ejemplos:
chmod u+x ~/scripts/ejercicio1.sh
→ Doy permisos de ejecución para el usuario (para mi login)
chmod 755 ~/scripts/ejercicio1.sh
→ Doy permisos de ejecución y lectura para todos (grupo y otros) y control total para el usuario (para mi login).
Espero que os haya gustado, nos vemos en el siguiente capítulo.
- El Shell Bash de GNU/Linux 1 – Introducción
- El Shell Bash de GNU/Linux 2 – Tuberías y filtros
- El Shell Bash de GNU/Linux 3 – Variables de entorno
- El Shell Bash de GNU/Linux 4 – Expresiones regulares
- El Shell Bash de GNU/Linux 5 – Sistema de ficheros
- El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
- El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
- El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
- El Shell Bash de GNU/Linux 5.4 – Permisos
- El Shell Bash de GNU/Linux 5.5 – Listar ficheros
- El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
- El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
- El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros
Pingback: El Shell Bash de GNU/Linux 5 – Sistema de ficheros | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 3 – Variables de entorno | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 1 | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.6 – Comandos para trabajar con archivos y carpetas | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux | jblanco.org
Pingback: El Shell Bash de GNU/Linux | interlevante.com
Pingback: El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 2 – Tuberías y filtros | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 4 – Expresiones regulares | SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.5 – Listar ficheros – SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas – SOSpedia punto net
Pingback: El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros – SOSpedia punto net