jueves, 7 de marzo de 2013

Usuarios, grupos y permisos


Me comentaba un lector que había tenido problemas para ver unos pantallazos que había realizado durante la instalación a los que luego no podía acceder , y que lo había resuelto cambiando los permisos de fichero por 775.

¿Qué quieren decir estos misteriosos números? ¿Cual era el problema? Vamos a dar un repasito a los permisos de ficheros y a como cambiar permisos y propietarios.


En Linux cada fichero pertenece a un usuario y este tiene unos determinados permisos sobre el. Ademas, el fichero pertenece a un grupo, que tiene unos derechos sobre el, independientes de los que tenga el dueño. Y finalmente, el resto de usuarios del sistema tiene sus propios derechos sobre el fichero, que tampoco están relacionados con los que tenga el usuario o el grupo.

Cada fichero puede ser visto, modificado o ejecutado. Y esos permisos se establecen independientemente para el usuario, el grupo y el resto. Así, el 775 que indicábamos al principio nos dice que el propietario tiene permiso 7, el grupo también permiso 7 y el resto, solo permiso 5. ¿Y eso que quiere decir?

Bueno, si convertimos el 7 a binario, el resultado es 111, es decir tenemos permiso de lectura (1), escritura (1) y ejecución (1). Si convertimos el 5 a binario, el resultado es 101. Volvemos a poder leerlo (1) NO podemos escribirlo (0) y si podemos ejecutarlo (1)

Como vemos, cada uno de los números del 0 al 7, convertido a binario nos da los permisos del usuario, grupo o resto

El problema del amigo lector, era casi seguro que al crear los pantallazos durante la instalación, su usuario y su grupo no estaban creados, así pues, luego no podía acceder a ellos por tema de permisos y al darle el permiso 5 al resto de usuarios, le permite a el leer el fichero. En este caso concreto verlo

¿Como se cambian estos permisos?

La forma más sencilla es con chmod, seguido de a quien afecta, si damos o quitamos el permiso y que permiso modificamos. Lo vemos con unos ejemplos.

Para quitar permiso al propietario para escribir el fichero pondríamos
  • chmod u-w fichero

Para dar permiso al grupo para leer el fichero pondríamos 
  • chmod g+r fichero

Para que el resto de los usuario pueda ejecutar el fichero
  • chmod o+x fichero

Resumiendo, u afecta al usuario (user), g al grupo (group) , o a otros (others) y a todo el mundo (all). Damos con + y quitamos con y los permisos son r para lectura (read), w para escritura (write) y x para ejecutar (eXecution)

Pero no solo podemos cambiar los permisos de un fichero, también podemos cambiar su propietario, o su grupo. 

Por ejemplo podemos crear un grupo donde añadir las personas que puedan ver las fotos de las vacaciones, cambiar el grupo al que pertenecen esas fotos para que corresponda con el que acabamos de crear y darle los permisos que queramos. Así podemos hacer que otras personas vean las fotos, pero no las puedan borrar mientras que la gente que no esté en ese grupo, ni sepa que están ahí

El grupo se cambia con chgrp y el usuario con chown, ambos poniendo el nuevo propietario y a continuación a que afecta. Si lo hacemos con una carpeta y queremos que afecte a todo lo que hay en esa carpeta solo tenemos que añadir un -R. Un ejemplo para verlo claro.
  • chgrp -R grupofotoslocas ./fotoslocas

De esta manera ponemos como grupo propietario de la carpeta ./fotoslocas y todo su contenido al un grupo que se llama fotoslocas

Ahora tocara añadir a los usuarios al grupo y darle los permisos que queramos, pero eso, como en el cole, os lo dejo de deberes para casa.

12 comentarios:

  1. Recuerdo cuando me enseñaron permisos en octales.
    4
    2
    1
    los números posible se forman con la suma de estos números, siendo el 7 el másximo número posible.

    A cada número se le asigna un permiso.
    4 = Lectura (R)
    2 = Escritura (W)
    1 = Ejecución (X)

    Los permisos están formados por 3 grupos de números:
    Primer número = USUARIO (user)
    Segundo número = GRUPO (group)
    Tercer número = OTROS (owner)
    Siempre me acuerdo del nombre UGO, sin la "h".

    A modo de ejemplo tiramos cualquier número y vemos que significa:
    777 = permisos totales (4+2+1) para todos
    666 = permisos de lectura y escritura (4+2+0) para todos
    555 = permisos de lectura y ejecución (4+1+0) para todos
    444 = permisos solo de lectura (4+0+0) para todos
    333 = permisos de escritura y ejecución (0+2+1) para todos
    222 = permisos solo de escritura (0+2+0) para todos
    111 = permisos solo de ejecución (0+0+1) para todos

    No se, así lo eontendí yo cuando me lo explicaron.
    Si estoy errado avisen.

    También hay otro grupo que afectaría a los ejecutables, y hace que permanezcan en memoria o se ejecuten y cierren, pero creo que sería entreverar.

    ResponderEliminar
    Respuestas
    1. A mi también me lo explicaron así en su momento, incluso nos enseñaron a pasar de binario a decimal para obtener todos esos números, pero me parece mas sencillo como yo lo he explicado.

      Eliminar
  2. OK, puedes borrar tranquilamente mi mensaje, así no se entrevera y dejas sencillo, como lo has explicado tu.

    ResponderEliminar
    Respuestas
    1. No hombre, ¿por qué borrar? Se queda para que se vea que en Linux hay multitud de opciones para hacer las cosas.

      Eliminar
  3. Hola Soy Uzmi, el lector que tuvo problemas con los pantallazos.
    a pesar de haberlo solucionado ¡¡¡MUCHISIMAS GRACIAS!!!
    Tu explicación está excelente.
    Muy buen aporte.
    Un saludo.

    ResponderEliminar
    Respuestas
    1. Me alegro de que la explicación te guste.
      Gracias por pasarte por mi rinconcito de Internet.

      Eliminar
  4. Hola soy Jose, recien acabo de dar con tu blog y me parece fantastico. Lo explicas todo muy bien y parece ser que lo actualizas muy a menudo. Respecto a este tema siempre tuve problemas para convertir octales a binario y a decimales y ahora lo comprendo!. Mil gracias!
    Un saludo

    ResponderEliminar
    Respuestas
    1. Gracias por los halagos.
      Me alegro de haberte sido útil.

      Eliminar
  5. Soy más bruto aún... he leído todos los "manuales" que he encontrado para crear usuarios... y hasta ahora no he podido crearlo... y que funcione... no se donde ha estado la falla...

    sudo useradd -g users -d /home/ -m -s /bin/bash

    ResponderEliminar
    Respuestas
    1. Corrijo

      sudo useradd -g users -d /home/lute -m -s /bin/bash lute

      Eliminar
  6. Buenas tardes yo estoy instalando debian 7.0 en maquina virtual virtual box, al terminar la instalacion no me carga el entorno grafico de debian si que se queda en la pantalla negra donde me pide el usuario y la contraseña lo ingreso tal como lo configure pero otra cantidad de letras y hasta hay llego y de hay no pasa

    ResponderEliminar
    Respuestas
    1. Primero prueba lo más sencillo, startx a ver si arrancan las X

      Eliminar

prekes sodui