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 Próxima revisiónAmbos lados, revisión siguiente | ||
permisos_de_archivo_y_directorio [2021/06/06 02:11] – peron | permisos_de_archivo_y_directorio [2023/04/13 20:36] – [Usar chmod para cambiar los permisos] peron | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== ¿Cómo administro los permisos de archivos y directorios en Texto-plano.xyz? | ||
+ | |||
+ | |||
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 (r, o " | + | **Permiso de Lectura (r, o " |
- | Permiso de Escritura (w, o " | + | **Permiso de Escritura (w, o " |
- | Permiso de Ejecución (x, 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 | + | |**r** |" |
- | Usar chmod para cambiar los permisos | + | |**w** |"write", |
+ | |**x** |" | ||
- | Comprendido esto, debemos conocer cómo cambiar estos permisos. A tal fin se utiliza | + | Para ver los atributos de un directorio, podríamos usar el comando "**ls -l**", |
- | Si tuviésemos que prevenir la modificación del archivo importante.txt, | + | ===== Usar chmod para cambiar los permisos ===== |
- | chmod -w importante.txt | ||
- | Si queremos hacer que el script llamado instalador.sh pueda ejecutarse, debemos ingresar: | + | Comprendido esto, debemos conocer cómo cambiar estos permisos. A tal fin se utiliza el comando chmod (" |
+ | ===Permiso de escritura=== | ||
+ | Si tuviésemos | ||
+ | <file bash> | ||
+ | chmod -w importante.txt | ||
+ | </ | ||
+ | ===Permiso de ejecución=== | ||
+ | Si queremos hacer que el [[script|guion]] llamado '' | ||
+ | |||
+ | <file bash> | ||
chmod +x instalador.sh | chmod +x instalador.sh | ||
+ | </ | ||
+ | ===Combinación de permisos=== | ||
+ | Si quisiéramos quitar o agregar todos los atributos a la vez | ||
- | ...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 | ||
+ | </ | ||
- | 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. | + | También podremos utilizar el signo '' |
+ | <file bash> | ||
chmod =r instalador.sh | chmod =r instalador.sh | ||
+ | </ | ||
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. | ||
Línea 44: | Línea 62: | ||
En el caso de los directorios, | En el caso de los directorios, | ||
- | | + | * **Permiso de lectura en un directorio**: Si un directorio tiene permiso de lectura, podremos ver la lista de archivos contiene dicho directorio (por ejemplo, usar con el directorio el comando “ls", |
- | Permiso de escritura en un directorio: Con el permiso de escritura de directorio podremos agregar, borrar o mover archivos al directorio | + | |
- | Permiso de ejecución en un directorio: Ejecución te permite usar el nombre del directorio cuando estas accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa. Por ejemplo, un directorio sin permiso de ejecución no seria revisado por el comando find (" | + | * **Permiso de escritura en un directorio**: Con el permiso de escritura de directorio podremos agregar, borrar o mover archivos al directorio |
+ | |||
+ | * **Permiso de ejecución en un directorio**: Ejecución te permite usar el nombre del directorio cuando estas accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa. Por ejemplo, un directorio sin permiso de ejecución no seria revisado por el comando | ||
+ | |||
+ | ===== Usuarios, Grupos y Otros ===== | ||
- | Usuarios, Grupos y Otros | ||
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: | ||
+ | <file bash> | ||
chmod =r mensaje.txt | chmod =r mensaje.txt | ||
+ | </ | ||
...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 | ||
Línea 73: | Línea 103: | ||
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: | ||
+ | <file bash> | ||
chmod g-x,o-x guion.sh | chmod g-x,o-x guion.sh | ||
+ | </ | ||
...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: | ||
+ | <file bash> | ||
chmod u-x guion.sh | chmod u-x guion.sh | ||
+ | </ | ||
+ | < | ||
-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: | ||
+ | <file bash> | ||
chmod u-x+w guion.sh | chmod u-x+w guion.sh | ||
+ | </ | ||
...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 posibleutilizar | + | Para simplificar la realización estos cambios es posible utilizar |
Lectura tiene el valor de 4 | Lectura tiene el valor de 4 | ||
Línea 101: | Línea 143: | ||
Ejecución tiene el valor de 1 | Ejecución tiene el valor de 1 | ||
- | Teniendo esto en cuenta, | + | Teniendo esto en cuenta, se completen las ocho combinaciones del octal restantes |
+ | < | ||
rwx 7, Lectura, Escritura y Ejecución | rwx 7, Lectura, Escritura y Ejecución | ||
rw- 6, Lectura y Escritura | rw- 6, Lectura y Escritura | ||
Línea 112: | Línea 154: | ||
--x 1, Ejecución | --x 1, Ejecución | ||
--- 0, Sin permisos | --- 0, Sin permisos | ||
+ | </ | ||
Por lo tanto: | Por lo tanto: | ||
Línea 121: | Línea 164: | ||
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. | ||
Línea 130: | Línea 185: | ||
Para ello podríamos correr. | Para ello podríamos correr. | ||
+ | <code bash> | ||
cd ~/docs/ | cd ~/docs/ | ||
+ | find ~/docs/ -type d -print0 | xargs -0 chmod 755 | ||
find ~/docs/ -type f -print0 | xargs -0 chmod 664 | find ~/docs/ -type f -print0 | xargs -0 chmod 664 | ||
+ | </ | ||
- | find ~/ | + | En este ejemplo, el octal chmod 664 pone los permisos en '' |
- | En este ejemplo, el octal chmod 664 pone los permisos | + | El Octal chmod 660 pone los archivos |
- | En el caso de nuestra | + | En el caso de una carpeta |
- | cd ~ | + | <file bash> |
+ | chown -R $(whoami) | ||
+ | </ | ||
- | find ~/public_html/ | + | ...y luego otorgarle los permisos adecuados para la tarea que cumple esta carpeta '' |
- | find ~/public_html/ | + | <code bash> |
+ | find ~/.gnupg | ||
+ | find ~/ | ||
+ | </ | ||
- | El Octal chmod 660 pone los archivos en -rw-rw---- (para una carpeta | + | === Permisos |
+ | En el caso de tu carpeta '' | ||
- | En el caso de una carpeta con posesión (como la carpeta para las llaves ~/.gnupg/, deberíamos hacer lo siguiente: primero aseguramos que los contenidos de la carpeta nos pertenezcan: | + | <code bash> |
+ | acthtml | ||
+ | </code> | ||
- | chown -R $(whoami) ~/.gnupg/ | + | ...e bien poner a mano el octal **644** para poner los archivos como '' |
- | ...y luego otorgarle los permisos adecuados para la tarea que cumple esta carpeta .gnupg/ en particular: | + | <code bash> |
+ | cd /home/ | ||
+ | find / | ||
+ | find / | ||
+ | </ | ||
- | find ~/.gnupg -type f -exec chmod 600 {} \; | ||
- | find ~/.gnupg -type d -exec chmod 700 {} \; |