Permisos en Linux y accesos para usuarios y grupos

En el último post («Usuarios y grupos en Linux«) aprendimos cómo administrar grupos y usuarios. En esta ocasión veremos cómo utilizar los permisos en Linux para usuarios y grupos como primera medida de control de acceso a los recursos del sistema.

Permisos en Linux

Veamos cómo crear un directorio llamado midirectorio en /tmp y mostrar el usuario y el grupo dueños del mismo, lo cual podremos luego observar en la Fig. 1:

[pastacode lang=»bash» manual=»mkdir%20%2Ftmp%2Fmidirectorio%0Als%20-ld%20%2Ftmp%2Fmidirectorio» message=»» highlight=»» provider=»manual»/]

Si queremos cambiar el usuario dueño o el grupo propietario de /tmp/midirectorio, podemos utilizar el comando chown de la siguiente manera:

[pastacode lang=»bash» manual=»chown%20fulano%3A%20%2Ftmp%2Fmidirectorio%20%23%20Cambiar%20usuario%20due%C3%B1o%0Achown%20%3Afulano%20%2Ftmp%2Fmidirectorio%20%23%20Cambiar%20grupo%20propietario%20(similar%20a%20chgrp)%0Achown%20fulano%3Afulano%20%2Ftmp%2Fmidirectorio%20%23%20Cambiar%20ambos» message=»» highlight=»» provider=»manual»/]

Otra opción para cambiar el grupo propietario es chgrp:

[pastacode lang=»bash» manual=»chgrp%20fulano%20%2Ftmp%2Fmidirectorio» message=»» highlight=»» provider=»manual»/]

Ahora cambiemos el grupo propietario a fulano:

[pastacode lang=»bash» manual=»chgrp%20fulano%20%2Ftmp%2Fmidirectorio» message=»» highlight=»» provider=»manual»/]

y veamos los resultados resaltados en la Fig. 1 (usuario dueño y grupo propietario -en ese orden- aparecen resaltados):

Mostrar propietarios y permisos
Figura 2: Mostrar propietarios y permisos

Una explicación detallada de los permisos en Linux

En la primer columna de la salida de ls -ld podemos ver los permisos asignados para el usuario dueño y el grupo propietario de /tmp/midirectorio, y para el resto de los usuarios del sistema:

  • La primer letra (d) indica que /tmp/midirectorio es un directorio. Si bien nosotros sabíamos esto por haberlo creado previamente, en ocasiones tendremos que identificar si el recurso indicado es un directorio, un archivo «común y silvestre» (indicado por un en vez de la d), o un enlace simbólico (por la presencia de una l), entre otros.
  • A continuación, la primer terna de caracteres (rwx) indica que el usuario dueño posee permisos de lectura (r), escritura (w), y ejecución (x) sobre el directorio. La segunda terna (r-x) indica que los miembros del grupo propietario posee permisos de lectura y ejecución (pero no de escritura). Finalmente, la última terna muestra que todos los demás usuarios del sistema poseen los mismos permisos que en el caso anterior.

Veamos la forma en que los permisos rwx nos permiten restringir el acceso a los recursos del sistema:

  • El permiso de lectura [r] es requerido para poder listar el contenido del directorio.
  • El permiso de escritura [w] permite que se agreguen archivos al directorio, que se renombren otros ya existentes, que se borren dichos archivos, o que se modifiquen los atributos del directorio. De todas formas, hay que tener en cuenta que para poder realizar estas operaciones es necesario el permiso de ejecución sobre el mismo directorio.
  • El permiso de ejecución [x] es necesario para ingresar al directorio y acceder a archivos y a subdirectorios que se encuentren dentro del mismo.

Para dar permisos de escritura sobre /tmp/midirectorio a miembros del grupo fulano deberemos usar el comando chmod seguido de la opción g (grupo), del signo + y del permiso que deseemos asignar (en este caso w):

[pastacode lang=»bash» manual=»chmod%20g%2Bw%20%2Ftmp%2Fmidirectorio» message=»» highlight=»» provider=»manual»/]

Si quisiéramos asignar (o quitar, en cuyo caso utilizaremos el signo ) más de un permiso a la vez podemos hacerlo fácilmente. Por ejemplo, veamos cómo quitar los permisos de lectura y ejecución para el resto de los usuarios del sistema (simbolizados por la opción o, de others en inglés):

[pastacode lang=»bash» manual=»chmod%20o-rx%20%2Ftmp%2Fmidirectorio» message=»» highlight=»» provider=»manual»/]

En el caso de que queramos modificar los permisos de un directorio y de sus contenidos simultáneamente, podemos usar la opción -R (de recursiva) de chmod. Tomando el caso anterior como ejemplo:

[pastacode lang=»bash» manual=»chmod%20-R%20o-rx%20%2Ftmp%2Fmidirectorio» message=»» highlight=»» provider=»manual»/]

Por último, para asignar o quitar permisos al usuario dueño, utilizamos la opción u (del inglés user), mientras que si queremos otorgar o remover un permiso en particular para todos usaremos la opción a (de all). De esta manera, el siguiente comando activa los permisos de ejecución sobre /tmp/midirectorio para todos los usuarios:

[pastacode lang=»bash» manual=»chmod%20a%2Bx%20%2Ftmp%2Fmidirectorio» message=»» highlight=»» provider=»manual»/]

Adicionalmente, podemos indicar un determinado permiso en forma octal en vez de r, w, o x. La conversión entre ambas formas de asignar permisos en Linux puede consultarse aquí.

Espero que les sirva. ¡Nos leemos en breve!

 

Deja una respuesta