Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

lunes, 25 de mayo de 2015

Permisos, propiedad y grupos en Linux

Una de las cosas que caracteriza a los sistemas Linux, es la gestión de los permisos que poseen y la importancia que le dan al hecho de que los administradores poseen unos permisos x, los dueños otros, los grupos otros, etc... Esa gestión puede parecer rígida en un principio, pues a veces tienes que cambiar de usuario o hacer uso del famoso "sudo", pero también asegura que sólo los usuarios pertinentes puedan leer, escribir o ejecutar el archivo pertinente. La gestión de permisos se pueden hacer de dos maneras:
  1. Desde la interfaz gráfica.
  2. Desde el comando chmod y en caso de necesidad, chown.
La interfaz gráfica hoy en día es muy intuitiva y no se necesitan apenas conocimientos para cambiar los permisos; simplemente se basa en acceder a las propiedades de un fichero. Fácil y sencillo. Este sería un ejemplo de una gestión de permisos en un entorno gráfico KDE:


Para entender cómo funciona chmod(change mode) primero habría que entender cómo funcionan los permisos. Existen tres tipos de permisos perfectamente combinables entre sí: Lectura, escritura, ejecución. El hecho de carecer de permisos de lectura haría que no se pudiese consultar el fichero, el permiso de escritura consiste en la capacidad de modificar un fichero y el permiso de ejecución consiste en la posibilidad de ejecutar el fichero o programa en cuestión. 

Además no se otorgan permisos exclusivamente a un usuario en concreto. sino que se les otorgarían a tres "grupos". El propietario, el grupo al que pertenece y el resto de usuarios. 

Para modificar los permisos existen dos opciones: La modificación mediante el uso del sistema octal y la modificación mediante caracteres. 


Modificación mediante el sistema octal

El sistema octal parte del sistema binario cómo base y cada número representaría una serie de permisos en concreto, números que oscilarían del 0 al 7, siendo el número 0 el que no otorga ningún permiso y el número 7 el que da los máximos permisos. He aquí una tabla muy explicita que muestra exactamente qué permisos otorga cada número.


Además, basándonos en lo que he descrito antes, es decir, en la existencia de 3 "grupos", cada uno de estos tendría sus propios permisos, con lo que a la hora de otorgar permisos de forma octal, 000 equivaldría a la denegación de permisos total a todos los grupos y usuarios mientras que 777 equivaldría al control total del fichero a todos. El primer dígito representaría al propietario del archivo, el segundo al grupo y el tercero al resto, con lo que con esa información podríamos mostrar los siguientes ejemplos:

Para darle control total al propietario y permisos de lectura y ejecución tanto a su grupo cómo al resto de usuarios:
  1. chmod 755 archivo.txt
Para darle permisos de lectura y ejecución al propietario, permisos de lectura a su grupo, y ningún permiso al resto sería:
  1. chmod 540 archivo.txt
Para darle control total al propietario y negarles cualquier tipo de acceso al resto sería:
  1. chmod 700 archivo.txt

Los ejemplos pueden ser numerosos, pero mediante la tabla y los ejemplos explicados podeis poseer de una base con la que aplicar el comando chmod a vuestras necesidades.


Modificación mediante caracteres

Esta modificación es más cómoda en opinión de algunos, pues no requiere realizar cálculos mediante el sistema octal y es bastante intuitivo; Aún así, en mi opinión ambos son igual de útiles. Este sistema se caracteriza por el uso de caracteres y modificadores.

Los modificadores serían:

+ para añadir un permiso.
-  para eliminar un permiso.
= para establecer un permiso, sustituyendo los ya establecidos.

Mientras que los caracteres que seguirían estos modificadores serían:

r  el cual equivaldría al permiso de lectura.
w el cual equivaldría al permiso de escritura/modificación.
x  el cual equivaldría al permiso de ejecución.

Además se puede poner el destinatario del cambio de permiso. Por defecto los destinatarios serían todos en caso de no poner destinatario alguno; en cambio, se pueden especificar los destinatarios mediante unos parámetros en concreto:

u Equivaldría al propietario (user).
g Equivaldría al grupo (group)
o Equivaldría al resto de usuarios (others).
a Equivaldría a todos (all), aunque de por sí no sería necesario, pues ya se usa por defecto.

Con esta información podríamos construir los siguientes ejemplos:

Para añadir permisos de ejecución a todos, tanto propietario, cómo el grupo del propietario, cómo al resto de usuarios:
  1. chmod +x archivo.txt
Para eliminar los permisos de escritura del propietario y añadir permisos de ejecución tanto al grupo, cómo al resto de usuarios:
  1. chmod u-w,go+x archivo.txt
Para establecer permisos de lectura ,escritura y ejecución al propietario, eliminar los permisos de escritura al grupo, y establecer permisos de lectura al resto de usuarios:
  1. chmod u=rwx,g-w,o=r archivo.txt

Cómo podéis ver, a partir de que se sabe para qué sirve cada carácter, combinarlos resulta fácil y cómodo, a partir de aquí sería probar las distintas combinaciones para ajustar los permisos de los ficheros a nuestras necesidades.


Modificación de propietario y del grupo

Hemos visto cómo poder modificar los permisos del propietario y del grupo pero... ¿Cómo podemos cambiar éstos? Estos parámetros se pueden modificar con facilidad mediante el comando chown (change owner). El comando posee la siguiente estructura:

  1. chown propietario.grupo archivo.txt

Con lo que por ejemplo, si tuviésemos un archivo llamado prueba.txt que fuese propiedad del usuario y grupo root, y deseásemos que pasase a ser propiedad del usuario invitado y del grupo visitante, habría que escribir:

  1. chown invitado.visitante prueba.txt


Con esto ya podríamos tanto modificar los permisos de un archivo cómo cambiar su propietario y grupo.

Espero que os resulte útil.

Saludos.

No hay comentarios :

Publicar un comentario