Permisos de Archivos y Directorios en UNIX

Permisos de Archivos y Directorios en UNIX

Se puede decir queun archivo es una colección de información; no obstante el sistema UNIX mantiene una variedad de información adicional que lo describe. La misma incluyen privilegios de acceso, el tipo de archivo, la fecha de la última modificación, el tamaño del archivo y la localización del mismo sobre el disco.

Las implicancias del tipo de archivo y privilegios tiene consecuencia a traves de todo el sistema UNIX. Muchas operaciones asumen un archivo de un tipo a otro. Por ejemplo no deberíamos usar el comando :
$ cd /usr/com1/mbox
porque /usr/com1/mbox  no es un directorio sino un archivo común conteniendo una correspondencia. Seguidamente el comando:
$ cat /usr/com1
producirá cualquier cosa sobre la pantalla porque /usr/com1/ es un directorio y no un archivo de texto.
Cada vez que nosotros accedemos a un archivo, el sistema chequea nuestros derechos o permisos de acceso. Los privilegios normalmente son colocados para que estemos completamente libres en nuestro directorio casa y nuestros vecinos tengan limitado el acceso. Algunos de los mensajes del UNIX simplemente tratan de decirnos que no estamos habilitados para acceder a ciertos archivos, debido a las protecciones que proporciona el sistema.
Primero de todo el sistema recuerda de que tipo es cada archivo. Los archivos son de varios tipos: directorio, archivos comunes o archivos especiales, ya sean estos últimos de tipo block o de tipo caracter. Recordemos que los directorios son archivos que el sistema manipula para mantener la estructura jerárquica del file-system, y los archivos comunes son archivos que el usuario usa para almacenar información. A los usuarios les está permitido leer información de un directorio, pero no pueden grabar un archivo de directorio.
En UNIX hay tres operaciones que pueden ser ejecutadas sobre un archivo: lectura, grabación y ejecución (reading, writing y executing).
Leer un archivo significa que el contenido del mismo esta disponible.
Grabar un archivo significa que el contenido de un archivo puede llegar a ser modificado o borrado.
Ejecutar un archivo puede significar o bien almacenar un archivo en memoria principal y ejecutar las instrucciones de máquina que están almacenadas en ese archivo, o leer un procedimiento shell en el cual dentro del mismo están ditintos comandos que se puedan ejecutar.
Cuando se trata de directorios, los modos de acceso son ligeramente distintos.Permiso de lectura para un directorio significa que diversos comandos les está permitido leer información en el directorio.
Por ejemplo en el caso del comandos l , el programa lee el directorio para descrubrir su contenido; si el mismo tiene permiso de lectura, es imposible descubrir que arhcivos están contenidos en ese directorio.
Es posible operar en directorios donde tienen denegados el permiso de lectura, solo que se necesita conocer el nombre del archivo que está dentro de ese directorio.
Los privilegios de escritura para un directorio, significa que le está permitido crear o borrar archivos en este directorio.
El denegar un permiso de escritura para cierto directorio, no significa que los archivos que estén dentro del mismo no puedan ser modificados; el privilegio de escritura está controlado por el propio archivo.
El permiso de ejecución para un directorio, significa que el sistema, buscará el directorio e el curso de un pathname completo para un archivo. Cuando especificamos un pathanme en lugar de un nombre de archivo simple, cada uno de esos directorios en el pathname es buscado por el nombre del p´roximo directorio en la secuencia. Si a nuestro sistema le pedimos:
$ cat /usr/bin/source/carta
entonces debemos tener permiso de ejecución (de busqueda), para los directorios usr, bin y source. Denegar un permiso de búsqueda en un directorio es una real protección en contra de las personas que pretenden acceder a los mismos. No podemos cambiarnos de directorio, a traves del comando cd, a directorios donde tienen denegados permisos de ejecución.
Cada archivo del sistea es propiedad de un usuario, y cada archivo está siempre asociado con un grupo en particular (en el sistema un grupo es un conjunto de usuarios que tienen algo en común, por ejemplo, típicos usuarios son usuarios de un departamento, o personas trabajando en conjunto en un proyecto, etc.). El esquema de protección de acceso a archivos depende del tipo de acceso que es requerido (lectura, escritura, ejecución) y quien hace los accesos. Hay un conjunto de privilegios para el propietario del archivos, otro para miembros de un mismo grupo y un tercero para otros (que no pertenecen al grupo). Estos privilegios se pueden visualizar cuando exhibimos el comando  l .
El propietario o dueño de un archivo está habilitado para controlar los permisos de este archivo, usando el comando chmod, que veremos posteriormente; así también tiene la posibilidad de modificar el grupo a ese archivo o al mismo propietario.
-rw-r–r–         1          com1   other    2322    Jun 12 12:00   arch1
| | | | | | | | | |
| | | | | | | r–        Permisos pertenecientes a otros.
| | | |r–              Permisos pertenecientes a grupos.
|rw-                 Permisos pertenecientes al usuario.
–                      Tipo de archivo (cuando aparece un "-" hace referencia a un archivo común)

Si en algún momento de nuestro trabajo decidimos modificar los privilegios para los archivos que vamos a generar invocamos al comando umask . Si queremos modificar los privilegios sobre archivos o directorios ya generados, usamos el comando chmod.

Comando umask
Sintaxis:          umask valor
Descripción:    El valor de un número de tres dígitos. Los tres dígitos representan los permisos de usuarios, grupos y otros respectivamente. El valor de un dígito define que permiso es dado y es mostrado en la siguiente tabla:
Dígito             Permisos
0                   Lectura y escritura (también de ejecución para directorio).
1                   Lectura y escritura.
2                   Lectura (también ejecución para el caso de directorios).
3                   Permiso de lectura.
4                   Escritura (también de ejecución para directorios).
5                   Escritura.
6                   Ejecución para el caso de directorios.
7                   Sin permisos.

Con esto podemos deducir los permisos que tenemos por default, siendo que para el caso de archivo los permisos son:
-rw-r–r– ………archi1
en el caso del directorio:
drwxr-xr-x ……..dir1
con esto vemos que el valor utilizado para el umask es 022.

Comando chmod
Sintaxis:          chmod modo archivo(s)
chmod [quien]+-=[permiso…] nombre-archivo(s)
Descripción:    El comando chmod cambia los permisos de acceso de un archivo o directorio especificado. El modo puede ser una expresión compuesta de letras y/o operandos (llamado modo simbólico) o un número (llamado modo absoluto).
El comando chmod usando modo simbólico tiene la forma:

                        chmod [quien]+-=[permiso…] nombre-archivo(s)
en  "quien" puede utilizarse tanto una o cualquier combinación de las siguientes letras:
a          (all), es decir todos, donde todos es tanto usuario, como grupo, como otros.
u          (user) indica usuario.
g          (group) indica grupo.
o          (other) indica otros.

Los operadores con:
+          asigna el permiso.
–           desasigna el permiso.
=          asigna los permisos indicados y borra todos los otros permisos (si existen). Si ningún
permiso es asignado, los permisos existentes son desasignados.

Los permisos pueden ser cualquier combinación de las siguientes letras:
x          de ejecución (eXecute).
r           de lectura (Read).
w         de escritura (Write).

El comando chmod usando modo absoluto tiene la forma:
chmod modo archivo(s)
donde "modo" es un número octal construído de la siguiente forma:
el permiso de lectura vale un 4, el permiso de escritura vale un 2 y el permiso de ejecución vale un 1. Sumando mediante esta denominación se obtiene un 0 como sin permiso y 7 con todos los permisos, o sea que :
0          000      —
1          001      –x
2          010      -w-
3          011      -wx
4          100      r–
5          101      r-x
6          110      rw-
7          111      rwx

Es decir que si queremos que archi1 tenga permisos de lectura y grabación solamente para usuario y dejar sin permisos para los demás debemos colocar:
$ chmod 600 archi1
El siguiente comando da a todos los usuarios permiso de ejecución para archi11 (modo simbólico):
$ chmod a+x archi1
El siguiente comando desasigna los permisos de lectura y grabación para el grupo y otros:
$ chmod go-rw archi1
El siguiente comando da todos los permisos a todos los usuarios (modo absoluto):
$ chmod 777 archi1


Comando chown
Sintaxis:          chown propietario archivo(s)
Descripción:    El comando chown cambia el propietario asociado con uno o varios archivos.
Ej. Si nos logeamos como com1:
$ pwd
/usr/com1
$ l
-rw-r- – r – –  1  com1  group . . . . . . . archi1
-rw-rw-rw-   1  com1  group . . . . . . . archi2
$ chown com2 archi*

Con esto hemos cambiado el propietario de los archivos y lo hemos llevado a que ahora cada propietario sea com2.
$ l
-rw-r- – r – –  1  com2  group . . . . . . . archi1
-rw-rw-rw-   1  com2  group . . . . . . . archi2

Si guisieramos ahora volver al punto de partida, es decir que los archivos sean de com1:
$ chown com2 archi*

… un mensaje de error nos indicara el sistema, porque ahora el propietario de los archivos es com2…

Comando chgrp
Sintaxis:          chgrp grupo archivo(s)
Descripción:    El comando chgrp modifica el grupo de cada archivo. El grupo puede ser un número decimal (correspondiente al identificador de grupo), o bien el nombre de un grupo encontrado en el archivo /etc/group.
Ej.
$ chgrp gp *
Modificamos todos los grupos de los archivos dentro de mi directorio al grupo gp.



También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *