Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
permisos_de_archivo_y_directorio [2021/06/06 02:06] – peron | permisos_de_archivo_y_directorio [2023/04/15 17:59] (actual) – [Usar chmod para cambiar los permisos] peron | ||
---|---|---|---|
Línea 4: | Línea 4: | ||
Los sistemas operativos similares UNIX disponen de una estructura de directorios, | Los sistemas operativos similares UNIX disponen de una estructura de directorios, | ||
- | Debes tener en cuenta algo especial: tanto tus directorios como tus archivos normalmente son visibles y evidentes para todos los usuarios del sistema compartido. Esto depende de lo que llamamos " | + | > Tanto tus directorios como tus archivos normalmente son visibles y evidentes para todos los usuarios del sistema compartido. Esto depende de lo que llamamos " |
+ | |||
+ | Estos permisos de uso pueden referirse a los archivos, y los permisos de uso de los directorios. Al limitar o potenciar el acceso y utilización de los mismos tanto para el administrador de sistema (superusuario), | ||
+ | |||
+ | ===== Estructura básica de permisos en archivos ===== | ||
- | Estos permisos de uso pueden referirse a los archivos, y los permisos de uso de los directorios. Al limitar o potenciar el acceso y utilización de los mismos tanto para el administrador de sistema (superusuario), | ||
- | Estructura básica de permisos en archivos | ||
Los permisos de uso del archivo describen el accionar que podemos contemplar con elos. Debemos tener en claro los tres atributos básicos que nuestros archivos puede tener: lectura, escritura y ejecución. | Los permisos de uso del archivo describen el accionar que podemos contemplar con elos. Debemos tener en claro los tres atributos básicos que nuestros archivos puede tener: lectura, escritura y ejecución. | ||
- | | + | * **Permiso de Lectura ('' |
- | **Permiso de Escritura** (**w**, o " | + | |
- | **Permiso de Ejecución** (**x**, o " | + | |
- | Las letras que identifican de los atributos son los caracteres de los permisos, y son: **r** " | + | Las letras que identifican de los atributos son los caracteres de los permisos, y son: |
- | Para ver los atributos de un directorio, podríamos usar el comando | + | | **'' |
- | ==== Usar chmod para cambiar los permisos ==== | + | | **'' |
+ | |**'' | ||
+ | Para ver los atributos de un directorio, podríamos usar el comando "**ls -l**", que nos informará de los mismos. | ||
- | Comprendido esto, debemos conocer cómo cambiar estos permisos. A tal fin se utiliza el comando **chmod** (" | + | ===== Usar chmod para cambiar |
- | Si tuviésemos que prevenir la modificación del archivo importante.txt, | + | |
- | <code> | + | Comprendido esto, debemos conocer cómo cambiar estos permisos. A tal fin se utiliza el comando chmod (" |
+ | ===Permiso de escritura=== | ||
+ | Si tuviésemos que prevenir la modificación del archivo | ||
+ | |||
+ | <file bash> | ||
chmod -w importante.txt | chmod -w importante.txt | ||
- | </code> | + | </file> |
- | Si queremos hacer que el script llamado instalador.sh pueda ejecutarse, debemos ingresar: | + | ===Permiso de ejecución=== |
- | <code> | + | Si queremos hacer que el [[script|guion]] |
+ | |||
+ | <file bash> | ||
chmod +x instalador.sh | chmod +x instalador.sh | ||
- | </code> | + | </file> |
- | ...si quisiéramos quitar o agregar todos los atributos a la vez | + | ===Combinación de permisos=== |
- | <code> | + | Si quisiéramos quitar o agregar todos los atributos a la vez |
+ | |||
+ | <file bash> | ||
chmod -rwx instalador.sh | chmod -rwx instalador.sh | ||
chmod +rwx instalador.sh | chmod +rwx instalador.sh | ||
- | </code> | + | </file> |
- | También podremos utilizar el signo = para establecer los permisos en una combinación específica. Por ejemplo, con la siguiente sintaxis el comando chmod quitará permisos de escritura y ejecución dejando solo el de lectura. | + | |
- | <code> | + | También podremos utilizar el signo '' |
+ | |||
+ | <file bash> | ||
chmod =r instalador.sh | chmod =r instalador.sh | ||
- | </code> | + | </file> |
Debemos tener especial cuidado y precaución al modificar los permisos de nuestros archivos, pues podríamos dejarlos inaccesibles. Si editamos los permisos para hacer pruebas, no debemos olvidar dejarlos como estaban originalmente. | Debemos tener especial cuidado y precaución al modificar los permisos de nuestros archivos, pues podríamos dejarlos inaccesibles. Si editamos los permisos para hacer pruebas, no debemos olvidar dejarlos como estaban originalmente. | ||
- | ===== Estructura básica de permisos en directorios | + | Estructura básica de permisos en directorios |
En el caso de los directorios, | En el caso de los directorios, | ||
- | **Permiso de lectura en un directorio**: | + | * **Permiso de lectura en un directorio**: |
- | + | | |
- | **Permiso de escritura en un directorio**: | + | |
- | **Permiso de ejecución en un directorio**: | + | * **Permiso de ejecución en un directorio**: |
===== Usuarios, Grupos y Otros ===== | ===== Usuarios, Grupos y Otros ===== | ||
Línea 57: | Línea 70: | ||
Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos son almacenados para 3 propietarios diferentes, llamados: | Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos son almacenados para 3 propietarios diferentes, llamados: | ||
+ | < | ||
Usuario (u): proviene del dueño " | Usuario (u): proviene del dueño " | ||
Grupo (g): proviene del dueño " | Grupo (g): proviene del dueño " | ||
Otros (o): proviene del dueño " | Otros (o): proviene del dueño " | ||
+ | </ | ||
De esta manera, al introducir el comando: | De esta manera, al introducir el comando: | ||
- | <code> | + | |
+ | <file bash> | ||
chmod =r mensaje.txt | chmod =r mensaje.txt | ||
- | </code> | + | </file> |
...asignaremos permisos de lectura a los 3 dueños (usuario, grupo y otros). De tal forma, cuando listamos el directorio con “ls -l” veremos algo parecido a. | ...asignaremos permisos de lectura a los 3 dueños (usuario, grupo y otros). De tal forma, cuando listamos el directorio con “ls -l” veremos algo parecido a. | ||
+ | |||
< | < | ||
-r--r--r-- 1 fulano users 4096 abr 13 19:30 mensaje.txt | -r--r--r-- 1 fulano users 4096 abr 13 19:30 mensaje.txt | ||
</ | </ | ||
+ | |||
Indudablemente que estas tres “r” denotan los 3 diferentes propietario de permisos que se han referido, donde: | Indudablemente que estas tres “r” denotan los 3 diferentes propietario de permisos que se han referido, donde: | ||
+ | |||
< | < | ||
Permisos Pertenece a: rwx------ Usuario (las primeras 3 letras) ---r-x--- Grupo (las segundas 3 letras) ------r-x Otros (las terceras 3 letras) | Permisos Pertenece a: rwx------ Usuario (las primeras 3 letras) ---r-x--- Grupo (las segundas 3 letras) ------r-x Otros (las terceras 3 letras) | ||
</ | </ | ||
- | También podemos quitar permisos para cada propietario; | + | |
- | < | + | También podemos quitar permisos para cada propietario; |
-rwxr-xr-x 1 fulano fulano 4096 abr 13 19:30 guion.sh | -rwxr-xr-x 1 fulano fulano 4096 abr 13 19:30 guion.sh | ||
- | </ | + | |
Si quisiéramos removerle los permisos de ejecución al propietario Grupos y al propietario Otros, bastaría con usar: | Si quisiéramos removerle los permisos de ejecución al propietario Grupos y al propietario Otros, bastaría con usar: | ||
- | <code> | + | |
+ | <file bash> | ||
chmod g-x,o-x guion.sh | chmod g-x,o-x guion.sh | ||
- | </code> | + | </file> |
...de tal forma, nuestro archivo quedara con estos permisos | ...de tal forma, nuestro archivo quedara con estos permisos | ||
+ | |||
< | < | ||
-rwxr--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh | -rwxr--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh | ||
</ | </ | ||
+ | |||
Si deseamos removerle al dueño Usuario el permiso de escritura debemos ingresar: | Si deseamos removerle al dueño Usuario el permiso de escritura debemos ingresar: | ||
- | <code> | + | |
+ | <file bash> | ||
chmod u-x guion.sh | chmod u-x guion.sh | ||
- | </code> | + | </file> |
< | < | ||
-r-xr--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh | -r-xr--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh | ||
</ | </ | ||
+ | |||
Para agregar y remover dos permisos a la vez al propietario Usuario: | Para agregar y remover dos permisos a la vez al propietario Usuario: | ||
- | <code> | + | |
+ | <file bash> | ||
chmod u-x+w guion.sh | chmod u-x+w guion.sh | ||
- | </code> | + | </file> |
...y al listarlo quedará: | ...y al listarlo quedará: | ||
+ | |||
< | < | ||
-rw-r--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh | -rw-r--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh | ||
</ | </ | ||
+ | |||
===== chmod en octales ===== | ===== chmod en octales ===== | ||
+ | Para simplificar la realización estos cambios es posible utilizar también una nomenclatura opcional denominada //octal//. Ésta nos evitará tener que usar los atributos '' | ||
- | Para simplificar la realización estos cambios es posibleutilizar también una nomenclatura opcional llamada octal. Ésta nos evitará tener que usar los atributos rwx, y los designadores | + | Lectura tiene el valor de 4 |
+ | Escritura tiene el valor de 2 | ||
+ | Ejecución tiene el valor de 1 | ||
- | * | + | Teniendo esto en cuenta, se completen las ocho combinaciones del octal restantes |
- | * | + | |
- | * | + | |
- | + | ||
- | Teniendo esto en cuenta, | + | |
< | < | ||
Línea 121: | Línea 152: | ||
--- 0, Sin permisos | --- 0, Sin permisos | ||
</ | </ | ||
+ | |||
Por lo tanto: | Por lo tanto: | ||
- | < | + | |
chmod usuario=rwx, | chmod usuario=rwx, | ||
chmod usuario=rwx, | chmod usuario=rwx, | ||
Línea 129: | Línea 161: | ||
chmod usuario=rw, | chmod usuario=rw, | ||
chmod usuario=rwx, | chmod usuario=rwx, | ||
+ | |||
+ | Normalmente, | ||
+ | |||
+ | <code bash> | ||
+ | chmod 755 / | ||
</ | </ | ||
+ | |||
+ | Sin embargo, si deseas establecer unos permisos más astringentes (por ejemplo, para impedir que los demás usuarios de texto-plano listar el contenido de tu directorio ''/ | ||
+ | |||
+ | <code bash> | ||
+ | chmod 751 / | ||
+ | </ | ||
+ | |||
Un error que debemos prevenir cuidadosamente es el uso de chmod con comodines, pues esto puede provocar cambios de permisos de manera indiscriminada. | Un error que debemos prevenir cuidadosamente es el uso de chmod con comodines, pues esto puede provocar cambios de permisos de manera indiscriminada. | ||
- | Supongamos que queremos aplicar permisos a todos los archivos dentro de un directorio, y a todos los subdirectorios contenidos en él. Que todos los archivos dentro de nuestra carpeta ~/docs reciban permiso rw para nuestro propietario usuario y para el propietario grupo, y r para el propietario otros; en tanto para los directorios queremos que el usuario tenga permisos de rwx para poder ver los archivos y usarlos, en tanto que el grupo y otros tienen permisos de r-x), pero que los grupos tengan lectura y ejecución, mientras que los grupos también tengan dicho permiso. | + | Supongamos que queremos aplicar permisos a todos los archivos dentro de un directorio, y a todos los subdirectorios contenidos en él. Que todos los archivos dentro de nuestra carpeta |
Esto podría ser para restaurar los permisos como estaban originalmente. | Esto podría ser para restaurar los permisos como estaban originalmente. | ||
Para ello podríamos correr. | Para ello podríamos correr. | ||
- | < | + | |
+ | < | ||
cd ~/docs/ | cd ~/docs/ | ||
- | find ~/docs/ -type f -print0 | xargs -0 chmod 664 | ||
find ~/docs/ -type d -print0 | xargs -0 chmod 755 | find ~/docs/ -type d -print0 | xargs -0 chmod 755 | ||
+ | find ~/docs/ -type f -print0 | xargs -0 chmod 664 | ||
</ | </ | ||
- | En este ejemplo, el octal chmod 664 pone los permisos en -rw-rw-r-- (un conjunto de permisos común en sistemas similares a UNIX para las carpetas Documentos/, | ||
- | En el caso de nuestra carpeta ~/ | + | En este ejemplo, |
- | < | + | |
- | cd ~ | + | |
- | find ~/ | + | |
- | find ~/ | + | |
- | </ | + | |
- | El Octal **chmod 660** pone los archivos | + | |
- | En el caso de una carpeta con posesión (como la carpeta para las llaves | + | El Octal chmod 660 pone los archivos en '' |
- | <code> | + | |
+ | En el caso de una carpeta con posesión (como la carpeta para las llaves | ||
+ | |||
+ | <file bash> | ||
chown -R $(whoami) ~/.gnupg/ | chown -R $(whoami) ~/.gnupg/ | ||
- | </code> | + | </file> |
- | ...y luego otorgarle los permisos adecuados para la tarea que cumple esta carpeta .gnupg/ en particular: | + | |
- | < | + | ...y luego otorgarle los permisos adecuados para la tarea que cumple esta carpeta |
- | find ~/.gnupg -type f -exec chmod 600 {} \; | + | |
+ | < | ||
find ~/.gnupg -type d -exec chmod 700 {} \; | find ~/.gnupg -type d -exec chmod 700 {} \; | ||
+ | find ~/.gnupg -type f -exec chmod 600 {} \ | ||
</ | </ | ||
+ | |||
+ | === Permisos para la página web === | ||
+ | En el caso de tu carpeta '' | ||
+ | |||
+ | <code bash> | ||
+ | acthtml | ||
+ | </ | ||
+ | |||
+ | ...e bien poner a mano el octal **644** para poner los archivos como '' | ||
+ | |||
+ | <code bash> | ||
+ | cd / | ||
+ | find / | ||
+ | find / | ||
+ | </ | ||
+ | |||
+ |