Administrar permisos y propietarios


Índice:

      Enlaces

      Niveles de Permisos

      Tipos de Permisos

         Permisos especiles

      Comandos

      Ver los permisos clásicos junto con los octales

      ls -l

      chmod

         a) chmod [ugoa][+-=][rwx] fichero

         b) Mediante números decimales.

         c) Permisos especiales

         Opciones del comandos

         La opción --reference y su uso

      chown

      ACL - Listas de Control de Acceso

         getfacl

         setfacl


Actualización: 24 noviembre de 2025



Enlaces  ⮴  

Gestión de permisos de archivos y directorios


Niveles de Permisos  ⮴  

.- Usuario: Propietario del archivo, se representa con la letra U, es quien

crea el archivo o directorio.


.- Grupo: Grupo propietario del archivo, se representa con la letra G, gene-

ralmente cada usuario pertenece al menos a un grupo de trabajo.


.- Otros o Resto de usuarios: se representa con la letra O, aquí se agrupan

al resto de usuarios o grupos con el cual el propietario no tiene

ningún vínculo, es decir el resto de usuarios del sistema


.- ACL - Listas de control de acceso


Tipos de Permisos  ⮴  

En cada uno de los niveles de permisos se pueden asignar los siguientes permisos


.- Sim presmiso (-):

..- Ningún tipo de permiso sobre el archivo o directorio


.- Lectura (r):

..- En archivos Puede listar, copiar o visualizarlo.

..- En Directorios pueden ver el contenido, se pueden listar a través del

comando ls


.- Escritura (w):

..- En archivos significa que se puede modificar o borrar el contenido,

incluso puede modificar los permisos.

..- En Directorios significa que puede crear, eliminar archivos y direc-

torios dentro de ese directorio.


.- Ejecución (x):

..- En archivos significa que se puede ejecutar el contenido.

..- En Directorios significa que podemos entrar en la carpeta (comando cd).


Permisos especiles  ⮴  

Existen tres permisos especiales que añadir a los básicos comentados anterior-

mente, estos son:


SetUID o SUID (s): Este permiso sólo se puede añadir al nivel de permisos del

usuario (u). Si el fichero tiene permisos de ejecución, este

permiso hará que el usuario que lo ejecute lo haga con los

mismos privilegios que el usuario propietario del fichero.

Si el fichero posee permisos de ejecución, al activar este

permiso la x se sustituirá por una s minúscula, pero si no

lo posee, se sustituirá por una S mayúscula. Si se añade el

permiso a un directorio, este permiso se ignora.

SetGID o GUID (s): Este permiso sólo se puede añadir al nivel de permisos del

grupo (g). Si el fichero tiene permisos de ejecución, este

permiso hará que el usuario que lo ejecute lo haga con los

mismos privilegios que el del grupo propietario del fichero.

Si el fichero posee permisos de ejecución, al activar este

permiso la x se sustituirá por una s minúscula, pero si no

lo posee, se sustituirá por una S mayúscula. Si se añade el

permiso a un directorio, hará que todos los ficheros que se

creen en su interior tengan como propietario de grupo al

grupo de este directorio y no al del grupo principal del

usuario que lo creó el fichero.

Sticky (t): Este permiso sólo se puede añadir al nivel de permisos del resto.

Al activarlo en un directorio se consigue que los ficheros

que cree un usuario dentro de él sólo puedan ser editados y

eliminados por ese mismo usuario (utilizado en directorios

temporales). Si el directorio posee permisos de ejecución,

al activar este permiso la x se sustituirá por una t minús-

cula, pero si no lo posee, se sustituirá por una T mayúscula.

Si se añade este permiso a un fichero, este permiso se ig-

norará.

Comandos  ⮴  

ls

chmod

chown



Ver los permisos clásicos junto con los octales  ⮴  

  stat -c '%a' archivo

  stat -c '%A %a' archivo


ls -l  ⮴  

Este comando lista los premisos y propietarios de archivos y carpetas


drwxr-xr-x 2 root root  4096 abr  5 18:30 imagenes


Estos códigos se dividen en cuatro grupos:


d  rwx  r-x  r-x


1    -> d: El primer carácter es el tipo de archivos (*)


2-4  -> rwx: Premisos del propietarios


5-7  -> r-x: Premisos del grupo


8-9  -> r-x: Premisos de otros


(*) Tipo de archivos:


–   archivo

d   directorio

l   enlace simbólico.

c   dispositivo de caracteres.

b   dispositivo de bloques.

p   tubería.

s   socket.


chmod  ⮴  

Permite modificar los permisos de los archivos o directorios, mediante dos

sintaxis diferentes


chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

chmod [OPTION]... --reference=RFILE FILE...

chmod [ugo][+-=][rwx] fichero


a) chmod [ugoa][+-=][rwx] fichero  ⮴  

Donde:


[ugoa] indica a quién se aplican los cambios:

u: propietario del archivo.

g: grupo del archivo.

o: otros usuarios (ni el propietario ni los que pertenecen al grupo).

a: todos (cuando se usa, reemplaza a ugo).


[+-=] define qué hacer con los permisos:

+: añadir permiso.

-: eliminar permiso.

=: establecer el permiso exactamente (reemplazar los permisos actuales).


[rwx] representa una combinación de los caracteres r, w y x, que denotan

los permisos:

r: permiso de lectura.

w: permiso de escritura.

x: permiso de ejecución.


De esta manera simplemente debemos indicar el nivel al que nos referimos, si

queremos añadir permisos (+), eliminar un permiso (-) o asignar los permisos

tal y como se especifica sin añadir ni eliminar (=), y por último el tipo de

permiso.


      chmod g+x fichero

      chmod ugo+rw fichero

      chmod =x fichero

      chmod go-wx fichero

      chmod u=rwx,g=rw,o=r fichero


b) Mediante números decimales.  ⮴  

Se necesitarán tres números decimales entre 0 y 7, que representarán a cada

uno de los niveles en este orden usuario, grupo y otros, y al convertir el

número decimal a binario sabremos qué permisos se establecen.


Permisos:


.- r (lectura)          :   4

.- w (escritura)        :   2

.- x (acceso/ ejecución):   1

.- - (sin acceso)       :   0


Ejemplo: chmod 746 imagenes


7 -> Suma permisos propietaro: rwx

4 -> Suma permisos grupos:     r--

6 -> Suma premisos otros:      rw-


c) Permisos especiales  ⮴  

1) chmod [ugo][+-=][st] fichero


2) Mediante número decimales


A los tres números que representarían los permisos básicos comentados an-

teriormente se le añadiría un número nuevo a la izquierda de éstos que

sería el resultado de los tres permisos especiales siguiendo la siguiente

combinación:


Decimal SetUID (s) SetGID (s) Sticky (t)

0       0         0           0

1       0         0           1

2       0         1           0

3       0         1           1

4       1         0           0

5       1         0           1

6       1         1           0

7       1         1           1


Por ejemplo, si quisiéramos establecer los siguientes permisos

rwx rwx --- y activar los permisos SetUID y SetGID:


ss- rwx rwx --- = 110 111 111 000 = 6 7 7 0


chmod 6770 fichero


Opciones del comandos  ⮴  

-R : recursivo

-f : silenciosa

-v : da un diagnóstico de todos los archivos afectados.

-c : similar a -v pero sólo en casos que los cambios se hayan realizado.

--reference=RFILE: Establece los permisos para que coincidan con los permisos

del archivo RFILE, ignorando cualquier MODE especificado.


La opción --reference y su uso  ⮴  

La opción --reference en el comando chmod proporciona una forma conveniente de

copiar permisos de acceso de un archivo o directorio a otro. Esta opción per-

mite aplicar rápida y fácilmente los permisos de acceso de una fuente a otra.

Esto puede ser especialmente útil cuando necesitas unificar los permisos de

acceso entre elementos del sistema de archivos.


La sintaxis para usar la opción --reference es la siguiente:


chmod --reference=RFILE archivo


--reference=RFILE: este argumento especifica la ruta al archivo o directorio

desde el cual se copiarán los permisos de acceso.

archivo: este es el archivo o directorio de destino para el cual deseas es-

tablecer los permisos de acceso, de acuerdo con la fuente especifi-

cada.


Es importante tener en cuenta que --reference no solo añade o elimina permisos

específicos, sino que sobrescribe completamente los permisos de acceso del

elemento de destino.


chown  ⮴  

Cambia el propietario del archivo o carpeta.


chown [OPTION]... [OWNER][:[GROUP]] FILE...


Ejemplo: chown juanp:root imagenes


juanp -> nombre del nuevo propietario

root  -> nombre del nuego grupo


Se pueden cambiar ambos u sólo uno de ellos.



Opciones del comando


-R : recursivo

-f : silenciosa

-v : da un diagnóstico de todos los archivos afectados.

-c : similar a -v pero sólo en casos que los cambios se hayan realizado.


ACL - Listas de Control de Acceso  ⮴  

Las ACLs (Access Control Lists) proveen un mecanismo para especificar permisos

en archivos y directorios mucho más potente y flexible que el sistema estándar

de permisos que trae el propio sistema Linux.

Información ACL


getfacl  ⮴  

Utilizaremos el comando getfacl para visualizar los permisos que posee un ar-

chivo o directorio en concreto:

    getfacl /mnt/disco_2


    # file: disco_2/

    # owner: root

    # group: root

    user::rwx

    group::r-x

    other::r-x


El comando ls nos permitirá saber si un archivo o directorio tiene ACLs defi-

nidos, pero no cuales, si al ver los detalles del mismo aparece un signo + a

continuación de los permisos:

    ls -l

    drwxrwxr-x+ 2 root root 4096 nov  7 11:35 disco_2


setfacl  ⮴  

Utilizaremos el comando setfacl para establecer las ACLs a un archivo o direc-

torio. La sintaxis será indicando los siguientes valores:


[ugo]:[nombre_usuario_o_grupo]:[permiso]


Con el parámetro -m añadimos o modificamos los permisos actuales:

    setfacl -m u:alumno:rwx /mnt/disco_2/

    setfacl -m u:alumno:7 /mnt/disco_2/


Con el parámetro -x eliminamos a un usuario o grupo:

    setfacl -x u:alumno /mnt/disco_2/


Con el parámetro -R lo realizamos de manera recursiva en todos los subdirecto-

rios y archivos existentes:

    setfacl -R -m u:alumno:rwx /mnt/disco_2/


Con el parámetro -b eliminamos todas las ACLs existentes:

    setfacl -b -R /mnt/disco_2/


Si ahora comprobáramos las ACLs obtendríamos el siguiente resultado:

    getfacl /mnt/disco_2/


    # file: disco_2/

    # owner: root

    # group: root

    user::rwx

    user:alumno:rwx

    group::r-x

    other::r-x


El problema de las ACLs es que por defecto no se heredan en los archivos y di-

rectorios que se crean posteriormente dentro de un directorio que ya tiene las

ACLs asignadas. Para conseguir este funcionamiento, debemos asignar las ACLs

por defecto a los directorios.


Esto lo conseguimos con el parámetro -d.

    setfacl -d -m u:alumno:rwx /mnt/disco_2/

    setfacl -d -x u:alumno /mnt/disco_2/


En este caso, todos los archivos que se creen dentro de este directorio posee-

rán las mismas ACLs que las asignadas a su directorio padre. Si comprobamos en

este caso las ACLs de este directorio, la salida es algo diferente a la ante-

rior:

    getfacl /mnt/disco_2/


    # file: disco_2/

    # owner: root

    # group: root

    user::rwx

    user:alumno:rwx

    group::r-x

    other::r-x

    default:user::rwx

    default:user:alumno:rwx

    default:group::r-x

    default:other::r-x


Con el parámetro -k eliminaremos todas las ACLs por defecto asignadas:

  setfacl -R -k /mnt/disco_2/