15 – Los permisos en GNU/Linux

Estructura básica de permisos en directorios

En el caso de los directorios tenemos los mismo permisos, pero con un significado diferente.

  •  Permiso de lectura en un directorio
    Si un directorio tiene permiso de lectura, puedes ver los archivos que éste contiene. Puedes usar un “ls (list directory)” para ver su contenido, que tengas permiso de lectura en un directorio no quiere decir que puedas leer el contenido de sus archivos si no tienes permiso de lectura en ésos.
  •  Permiso de escritura en un directorio
    Con el permiso de escritura puedes agregar, remover o mover archivos al directorio.
  •  Permiso de ejecución en un directorio
    Ejecución te permite usar el nombre del directorio cuando estás accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa, por ejemplo, un directorio sin permiso de ejecución no sería revisado por el comando find.

Usuarios, Grupos y Otros

Ahora conocemos los 3 permisos y cómo agregar o remover éstos, pero estos 3 permisos son almacenados en 3 lugares diferentes llamados:
Usuario (u) proviene de user
Grupo (g) proviene de group
Otros (o) proviene de other

 

Permisos en formato numérico octal

La combinación de valores de cada grupo de los usuarios forma un número octal, el bit x es 20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces:

r = 4
w = 2
x = 1

La combinación de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es decir la suma de los bits encendidos:

– – – = 0 Sin permisos
– – x = 1 Ejecución
– w – = 2 Escritura
– w x = 3 Escritura y ejecución
r – – = 4 Lectura
r – x = 5 Lectura y ejecución
r w – = 6 Lectura y escritura
r w x = 7 Lectura, escritura y ejecución.

Las combinaciones octales más comunes son:

777 ( rwx/rwx/rwx )
755 ( rwx/r-x/r-x )
644 ( rw-/r—–/r—– )
655 ( rw-/r-x/r-x )

 

FORMATO NOTACIÓN NUMÉRICA
Permisos Valor Descripción
rw—— 600 El propietario tiene permisos de lectura y escritura.
rwx–x–x 711 El propietario lectura, escritura y ejecución, el grupo y otros solo ejecución.
rwxr-xr-x 755 El propietario lectura, escritura y ejecución, el grupo y otros pueden leer y ejecutar el archivo.
rwxrwxrwx 777 El archivo puede ser leído, escrito y ejecutado por quien sea.
r—– 400 El propietario puede leer el archivo, pero no puede modificarlo o ejecutarlo y por supuesto ni el grupo ni otros pueden hacer nada en él.
rw-r—– 640 El usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden hacer nada.

 

Permisos en modo simbólico

Otra manera de establecer los permisos de un archivo o directorio es a través de identificadores del bit (r,w, o x) de los permisos, como ya se vio anteriormente, pero ahora identificando además lo siguiente:

al usuario con la letra u
al grupo con la letra g
a otros usuarios con la letra o
a todos (usuario, grupo, otros) con la letra a (all, todos en inglés)
el signo + para establecer el permiso
el signo para eliminar o quitar el permiso

La sintaxis es muy simple chmod augo[+|-]rwx[,…] archivo[s]

así, por ejemplo, si queremos que otros tengan permiso de escritura sería chmod o+w archivo

todos los usuarios con permisos de ejecución chmod a+x archivo.

En este modo de establecer permisos, solo hay que tomar en cuenta que partiendo de los permisos ya establecidos se agregan o se quitan a los ya existentes.Veámoslo con ejemplos su manera de trabajar:

Actual chmod Resultado Descripción
rw—— a+x rwx–x–x Agregar a todos (all) permisos de escritura.
rwx–x–x go-x rwx—— Se eliminan permiso de ejecución para grupo y otros.
rwxr-xr-x u-x,go-r rw—x–x Al usuario se le quita ejecución, al grupo y otros se le quita lectura.
rwxrwxrwx u-x,go-rwx rw—— Al usuario se le elimina ejecución, al grupo y otros se eliminan todos los permisos.
r——– a+r,u+w rw-r–r– A todos se les agrega lectura, al usuario se le agrega escritura.
rw-r—— u-rw,g+w,o+x —rw—x Al usuario se le eliminan lectura y escritura, al grupo se le agrega lectura y otros se le agrega ejecución.

 

UMASK

Permisos preestablecidos con umask

El comando umask establece la máscara de permisos de directorio y de archivos. Es decir los nuevos directorios y archivos que se crean obtienen el valor de los permisos a partir de los valores de umask.

$> umask
0002
(o en formato simbólico con la opción -S)
$> umask -S
u=rwx,g=rwx,o=rx

Lo anterior indica que un directorio y archivos ejecutables se crearán con los permisos 775 y los archivos comunes con los permisos 664. Esto se logra restando de 777 el valor de umask (777-002) y (666-002) respectivamente. El primer valor de umask corresponde para valores de Sticky bit, GUID o SUID, que por default es 0.

$> umask
0002
(Creamos un archivo y según la máscara debemos de tener 666-002=664 o rw-rw-r–)
$> touch archivo
$> ll archivo
-rw-rw-r– 1 sergio sergio 0 sep 25 20:14 archivo
(Ahora creamos un directorio y según la máscara debemos de tener 777-002=775 o rwxrwxr-x)
$> mkdir dir
$> ls -ld dir
drwxrwxr-x 2 sergio sergio 4096 sep 25 20:20 dir

Para establecer el valor de la máscara, simplemente se usa el mismo comando umask seguido del valor de máscara que se desee:

$> umask 0022

comandos :

chmod
chown
ep