Ver los permisos clásicos junto con los octales
a) chmod [ugoa][+-=][rwx] fichero
b) Mediante números decimales.
La opción --reference y su uso
ACL - Listas de Control de Acceso
Actualización: 24 noviembre de 2025
.- 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
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).
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á.
stat -c '%a' archivo
stat -c '%A %a' archivo
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.
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
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
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-
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
-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 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.
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.
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.
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
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/