Permisos Para Usuarios Unix

Fecha de publicaci贸n: 19 Febrero 2021
Tiempo de lectura: 5 min.
Premium: False
N煤mero de visitas: 409


Los sistemas operativos Unix son, desde mi punto de vista, los mejores sistemas multi usuarios que puedan existir hoy en d铆a. 馃槑

Utilizando alg煤n sistema operativo basado en unix (Por ejemplo Ubuntu, Fedora, Red Hat, Deb铆a etc... ) m煤ltiples usuarios, al mismo tiempo, podr谩n acceder y hacer uso de una misma computadora de forma completamente independiente.

Esto nos viene de maravilla, principalmente, cuando nos encontramos trabajando con servidores remotos, y deseamos que m煤ltiples usuarios realicen m煤ltiples tareas sobre un mismo equipo. Utilizando el protocolo SSH (Secure SHell) esto es bastante sencillo, basta con autenticarnos con el servidor, y listo, ya podremos hacer uso de 茅l. Esto, por supuesto, de forma completamente independiente, sin la necesidad de depender qu茅 otros usuarios est茅n, o no conectados al servidor. 馃

Con todo esto en mente, uno pudiera preguntarse: 驴Tener m煤ltiples usuarios conectados a un mismo equipo, no puede ocasionar problemas de seguridad? 馃槺 Pues d茅jame decirte que unix es lo suficientemente robusto para que esto no sea as铆. No importa la cantidad de usuarios conectados de forma concurrente, lo que importa son los permisos que estos puedan tener.

El tema de permisos en unix es algo, que si bien no es tan f谩cil de comprender, su nivel de complejidad tampoco deber铆a ser impedimentos para no conocerlo, utilizarlo o sacarle el m谩ximo provecho.

Es por ello que en esta ocasi贸n me gustar铆a habl谩ramos sobre c贸mo Unix maneja los permisos para los usuarios dentro del sistema operativo. Es un port muy interesante, as铆 que te invito a que te quedes.

Sin m谩s introducci贸n, comencemos.

Lectura, escritura y ejecuci贸n.

En Unix, el accesos para archivos o directorios los podemos dividir en 3 apartados:

  • Lectura
  • Escritura
  • Ejecuci贸n

El acceso a los archivo y directorios queda estrictamente limitado a todos los usuarios que cumplan con los permisos. Si quieres conocer si tu usuario puede realizar alguna de estas acciones para un archivo o directorio, puedes apoyarte del comando ls m谩s la bandera -l (Opcionalmente puedes colocar el nombre de un archivo en concreto).

Ejemplo:

ls -l manage.py

En mi caso la salida es la siguiente:

-rw-rw-r-- 1 eduardo eduardo 624 Feb  1 00:17 manage.py

Los primeros 10 caracteres de la salida son conocidos como file attributes, o atributos del archivo (Por su traducci贸n al espa帽ol). Este listado puede comprender de los siguientes caracteres:

  • r: Permite la lectura del archivo.
  • w: Permite la escritura sobre el archivo.
  • x: Permite la ejecuci贸n del archivo.
  • d: Hace referencia a un directorio (Posible primer car谩cter).
  • l: Un Link simb贸lico (Posible primer car谩cter).
  • -: Hace referencia a un archivo, o indica que que el usuario no posee permisos de escritura, lectura o ejecuci贸n (Posible primer car谩cter).

De los 10 primeros caracteres de la salida, el primero nos indica si el elemento es directorio, link o archivo. En mi caso un archivo, ya que el car谩cter es un gui贸n (-).

-rw-rw-r--

NOTA: Los permisos para re-nombrar o eliminar un archivo no recaen sobre el archivo perse, si no sobre los atributos del directorio.

Esto nos deja con 9 caracteres restantes. Si son 3 los tipos de permisos (rwx), 驴Por qu茅 sobran 7 caracteres? Bueno, esto tiene que ver mucho con el tema de propietarios en Unix. Ver谩s, para un sistema operativos unix, todos los directorios y archivos se les hez asignado a 3 tipos de usuarios:

  • user: El propietario del archivo. Regularmente el usuario quien creo el archivo.
  • group: Usuario del alg煤n grupo. Ya que los permisos de un grupo son aplicados a todos sus usuarios, es necesario validar sobre el grupo.
  • others: Cualquier otro usuarios que: No sea el propietario del archivo y que no se encuentre dentro de alg煤n grupo.

Si quieres conocer si tu usuario pertenece a alg煤n grupo, puede ejecutar el comando id:

$ id
uid=1000(eduardo) gid=1000(eduardo) groups=1000(eduardo),27(sudo)

Nota: Por default todos los usuarios creados se les hez asignado un identificador 煤nico (udi) y son asignados a un grupo (gid). Para Ubuntu el contador comienza en 1000.

Los permisos de lectura, escritura y ejecuci贸n se aplican para cada uno de los usuarios, dando como resultado los 9 caracteres restantes.

User Group Other
rwx rwx rwx


Modificaci贸n de los permisos

Para modificar los permisos de un archivo o directorio, ser谩 necesario hacer uso del comando chmod. Es importante mencionar que, solo el propietario de archivo o directorio podr谩 modificar sus permisos.

Es posible modificar los permisos de 2 formas distintas. Esto mediante:

  • Representaci贸n del n煤mero octal.
  • Representaci贸n simb贸lica.

Para este post nos concentraremos en explicar la representaci贸n octal, ya que es la m谩s com煤n de utilizar. 馃く

Se denomina representaci贸n octal al sistema num茅rico base 8 donde son utilizados los d铆gitos que comprenden del 0 al 7. A su vez, estos d铆gitos ser谩n representados por un grupo de 3 d铆gitos binarios. 馃馃馃

Aqu铆 una tabla con la representaci贸n octal, su binario y los permisos a los que hace referencia.

Representaci贸n Octal Binario Permisos
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

C贸mo puedes observar, cada uno de los d铆gitos representa los permisos para un archivo o directorio (ninguno (-), lectura (r), escritura(w) y ejecuci贸n (x)).

Con esto en mente, para nosotros poder modificar los permisos de un archivo, e indicar que los 3 tipos de usuarios tengan todos los permisos posibles (lectura, escritura y ejecuci贸n), el comando quedar铆a de la siguiente manera.

$ chmod 777 upload.py

Una vez hecho esto, los permisos de lectura (r), escritura(w) y ejecuci贸n (x) se encuentran asignados a los 3 tipos de usuarios (user, group, other).

$ ls -l upload.py 
-rwxrwxrwx@ 1 eduardo  staff  476 Sep 27 16:37 upload.py

Si queremos que: Solo el propietario (user) posea todos los permisos (lectura, escritura y ejecuci贸n), debemos ejecutar:

$ chmod 700 upload.py
$ ls -l upload.py 
-rwx------@ 1 eduardo  staff  476 Sep 27 16:37 upload.py

Si deseamos que: El propietario tenga todos los permisos (Lectura, escritura y ejecuci贸n), y los otros 煤nicamente permisos de lectura, el comando quedar铆a de la siguiente manera.

$ chmod 702 upload.py
$ ls -l upload.py 
-rwx----w-@ 1 eduardo  staff  476 Sep 27 16:37 upload.py

Recuerda, el orden es importante (User, group, other).

  • Del indice 1 al indice 3 -> User
  • Del indice 4 al indice 6 -> Group
  • Del indice 7 al indice 9 -> Other

El indic茅 0 denotar archivo, directorio o link. 馃構

Si aun no te queda del todo claro, no te preocupes, es un tema complicado.

Aqu铆 un par m谩s de ejemplos.

File attributes Descripci贸n
-rwx------ Archivo con permisos de lectura, escritura y ejecuci贸n para el usuario propietario
-rw------- Archivo con permisos de lectura y escritura para el usuario propietario
-rw-r--r- Archivo con permisos de lectura y escritura para el usuario propietario. Permisos de lectura para miembros del grupo y otros
lrwxrwxrwx Link simb贸lico con permisos de lectura, escritura y ejecuci贸n para el propietario, miembros del grupo y otros
drwxr-x--- Directorio con permisos de lectura, escritura y ejecuci贸n para el propietario. El propietario puede crear, eliminar o renombrar archivos dentro del directorio. Miembros del grupo 煤nicamente pueden acceder.
lrw-rw---- Link simb贸lico. El propietario y miembros del grupo tienen permisos de lectura y escritura.
-rw-rw-rw Archivo donde los permisos de lectura y escritura son permitidos para los 3 tipos de usuarios


Ejercicios

Se que el tema es algo complejo, por ello te comparto un par de ejercicios para que puedas practicar. 馃嵑

  • Dado un archivo en el sistema. Modifica los permisos para que solo el usuario propietario pueda modificarlo.
  • Dado un archivo en el sistema. Modifica los permisos para que solo miembros del grupo y otros puedan ejecutarlo.
  • Dado un archivo en el sistema. Modifica los permisos para que los 3 tipos de usuarios puedan leer y escribir en 茅l.
  • Dado un directorio en el sistema. Modifica sus permisos para que solo los propietarios tengan acceso a 茅l.
M谩s Tips y Ejercicios 馃悕

Adquiere una subscripci贸n PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 馃敁
Nuevo l铆mite: Incrementa tu l铆mite de ejercicios por semana. 馃殌
Contenido 煤nico: Recibe semanalmente recursos exclusivos de Python (Videos, Art铆culos y Capitulos del libro PyWombat, comienza como desarrollador Python. 馃悕