Permisos para archivos y directorios en GNU/Linux

09 abril 2012

Vamos a ver como dar o quitar permisos para archivos o carpetas que están fuera del home. Estas operaciones siempre tienen el riesgo de modificar alguna parte importante del sistema ya que para esto usamos permisos de super usuario, por lo que es conveniente guardar copias de seguridad de los mismos.

Los permisos que tiene cada archivo o carpeta los identificamos con las letras

r lectura
w escritura
x ejecución


para dar los permisos:

signo - (menos) para quitar permisos
signo + (mas) para agregar permisos


Por lo tanto si nosotros hacemos lo siguiente:

$ sudo chmod +w cualquierarchivo.txt

le hemos agregado permisos de escritura al archivo cualquierarchivo.txt

si aplicamos el siguiente comando

$ sudo chmod -w cualquierarchivo.txt

le quitamos el permiso de escritura al mismo archivo.

con el comando

$ sudo chmod +xrw cualquierarchivo.txt

le hemos agregado todos los permisos al archivo, es decir, ejecución, lectura y escritura.

tipo de usuarios.

u: usuario dueño del archivo
g: grupo o dueño del archivo
o: otros usuarios
a: para todos


veamos ejemplos:

$ sudo chmod a+x cualquierarchivo.txt

con ello todos pueden ejecutar el archivo cualquierarchivo.txt

$ sudo chmod ug+x cualquierarchivo.txt

el dueño y el grupo dueño podrá ejecutar el archivo.


EL METODO OCTAL

La otra forma bastante utilizada para administrar los permisos de archivos y carpetas en GNU/Linux, es el método octal.

Este método utiliza los números octales del siguiente modo:

000: ningún permiso
001: ejecución para el dueño del archivo
002: escritura para el dueño del archivo
004: lectura para el dueño del archivo
010: ejecución para el grupo dueño del archivo
020: escritura para el grupo dueño del archivo
040: lectura para el grupo dueño del archivo
100: ejecución para resto de usuarios
200: escritura para resto de usuarios
400: lectura para resto de usuarios

Para entender este método digamos que los permisos se suman conforme a la tabla, obteniéndose un solo número que definirá los mismos para el archivo o carpeta en cuestión, por ejemplo:

Asignemos todos los permisos al archivo cualquierarchivo.txt y para todos el resto de los usuarios, o sea permisos totales.

$ sudo chmod 777 cualquierarchivo.txt

¿cómo es eso?

Como vemos en la tabla el permiso de ejecución para el resto es 100, escritura para el resto es 200 y lectura para el resto es 400, por lo tanto.

Si ordenamos estos permisos

100
200
400
700 es la suma que queda para el resto

010
020
040
070 es la suma que queda para el grupo

001
002
004
007 es la suma que queda para el dueño del archivo

Lo que nos da el número 777 visto anteriormente.
Dar permisos a una carpeta y su contenido

Por ejemplo para dar permisos de lectura, escritura y ejecución para los 3 grupos a una carpeta llamada Prueba que está en el Escritorio, navego hasta el mismo:

cd Escritorio

o pongo la ruta completa

Y tengo dos opciones,la numérica y la alfabética:

1.- chmod 777 Prueba
2.- chmod rwx Prueba

Si la carpeta pertenece a root, tendremos que hacerlo asi:

1.- sudo chmod 777 Prueba
2.- sudo chmod rwx Prueba

Y escribimos nuestra contraseña.

Si queremos que se haga de manera recursiva, es decir, que los ficheros y carpetas contenidos en Prueba, también reciban estos cambios, hacemos esto:

1.- chmod -R 777 Prueba
2.- chmod -R rwx Prueba

Cualquiera de las dos y teniendo en cuenta lo de sudo y que la R debe ser mayuscula.

Un par de ejemplos más:

Queremos que el usuario tenga RWX, el grupo RW y los demás R, en la carpeta Prueba:

1.- chmod 764 Prueba
2.- chmod u=rwx,g=rw,o=r Prueba

u equivale a usuario (user) g a grupo (group) y o a otros (others). También sirve lo de -R y sudo.

Queremos que el usuario tenga RW, el grupo R y los demás R, en la carpeta Prueba:

1.- chmod 644 Prueba
2.- chmod u=rw go=rw Prueba

Igualmente sirve lo de -R y sudo.

Para quitar permisos, realmente es cambiarlos por otros, asi que es lo mismo que aquí se explica.

Adaptado de DebianiXs


Te gustaría seguir este blog?

No hay comentarios:

Publicar un comentario