Cambiar Permisos por Comandos en Linux con chmod
Tabla de contenido:
- Permisos de archivos de Linux
- Usando
chmod
- Método simbólico (texto)
- Método numérico
- Usando un archivo de referencia
- Cambia recursivamente los permisos del archivo
- Operando en enlaces simbólicos
- Cambio de permisos de archivos en masa
- Conclusión
En Linux, el acceso a los archivos se administra a través de los permisos, atributos y propiedad del archivo. Esto garantiza que solo los usuarios y procesos autorizados puedan acceder a los archivos y directorios.
Este tutorial cubre cómo usar el comando
chmod
para cambiar los permisos de acceso de archivos y directorios.
Permisos de archivos de Linux
Antes de continuar, expliquemos el modelo básico de permisos de Linux.
En Linux, cada archivo está asociado con un propietario y un grupo y se le asignan derechos de acceso de permiso para tres clases diferentes de usuarios:
- El propietario del archivo. Los miembros del grupo. Otros (todos los demás).
La propiedad del archivo se puede cambiar utilizando los comandos
chown
y
chgrp
.
Hay tres tipos de permisos de archivo que se aplican a cada clase:
- El permiso de lectura. El permiso de escritura. El permiso de ejecución.
Este concepto le permite especificar qué usuarios pueden leer el archivo, escribir en el archivo o ejecutar el archivo.
Los permisos de archivo se pueden ver con el comando
ls
:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
El primer carácter muestra el tipo de archivo. Puede ser un archivo normal (
-
), un directorio (
d
), un enlace simbólico (
l
) o cualquier otro tipo especial de archivo.
Los siguientes nueve caracteres representan los permisos del archivo, tres trillizos de tres caracteres cada uno. El primer triplete muestra los permisos del propietario, el segundo grupo de permisos y el último triplete muestra los permisos de todos los demás. Los permisos pueden tener un significado diferente según el tipo de archivo.
En el ejemplo anterior (
rw-r--r--
) significa que el propietario del archivo tiene permisos de lectura y escritura (
rw-
), el grupo y otros solo tienen permisos de lectura (
r--
).
Cada uno de los tres tripletes de permisos se puede construir con los siguientes caracteres y tener efectos diferentes, dependiendo de si están configurados en un archivo o en un directorio:
Efecto de permisos en archivos
Permiso | Personaje | Significado en el archivo |
---|---|---|
Leer |
-
|
El archivo no es legible. No puede ver el contenido del archivo. |
r
|
El archivo es legible. | |
Escribir |
-
|
El archivo no se puede cambiar ni modificar. |
w
|
El archivo puede ser cambiado o modificado. | |
Ejecutar |
-
|
El archivo no se puede ejecutar. |
x
|
El archivo puede ser ejecutado. | |
s
|
Si se encuentra en el triplete del
user
, establece el bit
setuid
. Si se encuentra en el triplete de
group
, establece el bit
setgid
. También significa que se establece la bandera
x
.
Cuando los indicadores
|
|
S
|
Igual que
s
pero la bandera
x
no está establecida. Esta bandera rara vez se usa en archivos. |
|
t
|
Si se encuentra en el triplete de
others
, establece el bit
sticky
.
También significa que se establece la bandera
|
|
T
|
Igual que
t
pero la bandera
x
no está establecida. Esta bandera es inútil en los archivos. |
Efecto de permisos en directorios (carpetas)
En Linux, los directorios son tipos especiales de archivos que contienen otros archivos y directorios.
Permiso | Personaje | Significado en el directorio |
---|---|---|
Leer |
-
|
El contenido del directorio no se puede mostrar. |
r
|
Se puede mostrar el contenido del directorio.
(por ejemplo, puede enumerar archivos dentro del directorio con
|
|
Escribir |
-
|
El contenido del directorio no puede modificarse. |
w
|
Los contenidos del directorio pueden ser alterados.
(por ejemplo, no puede crear archivos nuevos, eliminar archivos, etc.) |
|
Ejecutar |
-
|
El directorio no se puede cambiar a. |
x
|
El directorio se puede navegar usando
cd
. |
|
s
|
Si se encuentra en el triplete del
user
, establece el bit
setuid
. Si se encuentra en el triplete de
group
, establece el bit
setgid
. También significa que se establece la bandera
x
. Cuando el indicador
setgid
se establece en un directorio, los nuevos archivos creados dentro de él heredan la ID de grupo de directorio (GID), en lugar de la ID de grupo principal del usuario que creó el archivo.
|
|
S
|
Igual que
s
pero la bandera
x
no está establecida. Esta bandera es inútil en los directorios. |
|
t
|
Si se encuentra en el triplete de
others
, establece el bit
sticky
.
También significa que se establece la bandera
|
|
T
|
Igual que
t
pero la bandera
x
no está establecida. Esta bandera es inútil en los directorios. |
Usando
chmod
El comando
chmod
toma la siguiente forma general:
chmod MODE FILE…
El comando
chmod
permite cambiar los permisos en un archivo usando un modo simbólico o numérico o un archivo de referencia. Explicaremos los modos con más detalle más adelante. El comando puede aceptar uno o más archivos y / o directorios separados por espacio como argumentos.
Solo root, el propietario del archivo o el usuario con privilegios de sudo pueden cambiar los permisos de un archivo. Tenga mucho cuidado cuando use
chmod
, especialmente cuando cambie los permisos de forma recursiva.
Método simbólico (texto)
La sintaxis del comando
chmod
cuando se utiliza el modo simbólico tiene el siguiente formato:
chmod perms… FILE…
El primer conjunto de banderas (
), flags de usuarios, define qué clases de usuarios cambian los permisos para el archivo.
-
u
: el propietario del archivo.g
: los usuarios que son miembros del grupo.o
- Todos los demás usuarios.a
- Todos los usuarios, idénticos augo
.
Si se omite el indicador de usuarios, el predeterminado es
a
y los permisos que establece umask no se ven afectados.
El segundo conjunto de banderas (
), los indicadores de operación, definen si los permisos deben eliminarse, agregarse o establecerse:
-
-
Elimina los permisos especificados.+
Agrega permisos especificados.=
Cambia los permisos actuales a los permisos especificados. Si no se especifican permisos después del símbolo=
, se eliminan todos los permisos de la clase de usuario especificada.
Los permisos (
perms…
) se pueden establecer explícitamente utilizando cero o una o más de las siguientes letras:
r
,
w
,
x
,
X
,
s
t
. Use una sola letra del conjunto
u
,
g
y
o
cuando copie permisos de una clase de usuario a otra.
Al establecer permisos para más de una clase de usuario (
), use comas (sin espacios) para separar los modos simbólicos.
A continuación se muestran algunos ejemplos de cómo usar el comando
chmod
en modo simbólico:
-
Otorgue a los miembros del grupo permiso para leer el archivo, pero no para escribirlo y ejecutarlo:
chmod g=r filename
Elimine el permiso de ejecución para todos los usuarios:
chmod ax filename
Elimine repulsivamente el permiso de escritura para otros usuarios:
chmod -R ow dirname
Elimine los permisos de lectura, escritura y ejecución para todos los usuarios, excepto el propietario del archivo:
chmod og-rwx filename
Lo mismo también se puede lograr utilizando el siguiente formulario:
chmod og= filename
Otorgue permisos de lectura, escritura y ejecución al propietario del archivo, permisos de lectura para el grupo del archivo y ningún permiso para todos los demás usuarios:
chmod u=rwx, g=r, o= filename
Agregue los permisos de propietario del archivo a los permisos que tienen los miembros del grupo del archivo:
chmod g+u filename
Agregue un bit fijo a un directorio dado:
chmod o+t dirname
Método numérico
La sintaxis del comando
chmod
cuando se utiliza el método numérico tiene el siguiente formato:
chmod NUMBER FILE…
Al usar el modo numérico, puede establecer los permisos para las tres clases de usuario (propietario, grupo y todos los demás) al mismo tiempo.
El
NUMBER
puede ser un número de 3 o 4 dígitos.
Cuando se usa un número de 3 dígitos, el primer dígito representa los permisos del propietario del archivo, el segundo del grupo del archivo y el último todos los demás usuarios.
Cada permiso de escritura, lectura y ejecución tiene el siguiente valor numérico:
-
r
(lectura) = 4w
(escritura) = 2x
(ejecución) = 1 sin permisos = 0
El número de permisos de una clase de usuario específica está representado por la suma de los valores de los permisos para ese grupo.
Para averiguar los permisos del archivo en modo numérico, simplemente calcule los totales para todas las clases de usuarios. Por ejemplo, para otorgar permisos de lectura, escritura y ejecución al propietario del archivo, lea y ejecute permisos para el grupo del archivo y solo lea permisos para todos los demás usuarios, haría lo siguiente:
- Propietario: rwx = 4 + 2 + 1 = 7 Grupo: rx = 4 + 0 + 1 = 5 Otros: rx = 4 + 0 + 0 = 4
Usando el método anterior llegamos al número
754
, que representa los permisos deseados.
Para configurar las banderas
setuid
,
setgid
y
sticky bit
, use un número de cuatro dígitos.
Cuando se usa el número de 4 dígitos, el primer dígito tiene el siguiente significado:
- setuid = 4setgid = 2sticky = 1no cambios = 0
Los siguientes tres dígitos tienen el mismo significado que cuando se usa un número de 3 dígitos.
Si el primer dígito es 0, puede omitirse y el modo puede representarse con 3 dígitos. El modo numérico
0755
es el mismo que
755
.
Para calcular el modo numérico también puede usar otro método (método binario), pero es un poco más complicado. Saber cómo calcular el modo numérico con 4, 2 y 1 es suficiente para la mayoría de los usuarios.
Puede verificar los permisos del archivo en la notación numérica usando el comando
stat
:
stat -c "%a" filename
644
Aquí hay algunos ejemplos de cómo usar el comando
chmod
en modo numérico:
-
Otorgue permisos de lectura y escritura al propietario del archivo y solo permisos de lectura para los miembros del grupo y todos los demás usuarios:
chmod 644 dirname
Otorgue permisos de lectura, escritura y ejecución al propietario del archivo, permisos de lectura y ejecución para los miembros del grupo y ningún permiso para todos los demás usuarios:
chmod 750 dirname
Otorgue permisos de lectura, escritura y ejecución, y un bit fijo a un directorio dado:
chmod 1777 dirname
Establezca recursivamente permisos de lectura, escritura y ejecución para el propietario del archivo y ningún permiso para todos los demás usuarios en un directorio dado:
chmod -R 700 dirname
Usando un archivo de referencia
La opción
--reference=ref_file
permite configurar los permisos del archivo para que sean los mismos que los del archivo de referencia especificado (
ref_file
).
chmod --reference=REF_FILE FILE
Por ejemplo, el siguiente comando asignará los permisos del
file1
al
file2
Cambia recursivamente los permisos del archivo
Para operar recursivamente en todos los archivos y directorios bajo el directorio dado, use la opción
-R
(
--recursive
):
chmod -R MODE DIRECTORY
Por ejemplo, para cambiar los permisos de todos los archivos y subdirectorios bajo el directorio
/var/www
a
755
, usaría:
Operando en enlaces simbólicos
Los enlaces simbólicos siempre tienen permisos
777
.
Por defecto, al cambiar los permisos del enlace simbólico,
chmod
cambiará los permisos en el archivo al que apunta el enlace.
chmod 755 symlink
Lo más probable es que en lugar de cambiar la propiedad del objetivo, obtenga un error "no se puede acceder al 'enlace simbólico': permiso denegado".
El error se produce porque de forma predeterminada en la mayoría de las distribuciones de Linux, los enlaces simbólicos están protegidos y no puede operar en archivos de destino. Esta opción se especifica en
/proc/sys/fs/protected_symlinks
.
1
significa habilitado y
0
deshabilitado. Se recomienda no deshabilitar la protección de enlaces simbólicos.
Cambio de permisos de archivos en masa
A veces hay situaciones en las que necesitaría cambiar de forma masiva los permisos de archivos y directorios.
El escenario más común es cambiar recursivamente los permisos del archivo del sitio web a
644
y los permisos del directorio a
755
.
Usando el método numérico:
find /var/www/my_website -type d -exec chmod 755 {} ;
find /var/www/my_website -type f -exec chmod 644 {} ;
Usando el método simbólico:
find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ;
find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;
El comando
find
buscará archivos y directorios en
/var/www/my_website
y pasará cada archivo y directorio encontrado al comando
chmod
para establecer los permisos.
Conclusión
El comando
chmod
cambia los permisos del archivo. Los permisos se pueden establecer utilizando el modo simbólico o numérico.
Para obtener más información sobre
chmod
visite la página de manual de chmod.
Cómo restablecer los permisos del archivo NTFS en Windows 10/8/7
Restablecer los permisos del archivo NTFS es un programa gratuito que le permite fácilmente Restaure o restablezca los permisos de seguridad y archivos en Windows 10/8/7, sin usar la línea de comandos.
Cómo cambiar recursivamente los permisos del archivo en Linux
Linux es un sistema multiusuario y el acceso a los archivos se controla a través de los permisos, atributos y propiedad del archivo. En este artículo explicaremos cómo cambiar recursivamente los permisos de archivos y directorios.
Comando Chown en Linux (propiedad del archivo)
El comando chown le permite cambiar la propiedad del usuario y / o grupo de un archivo, directorio o enlace simbólico determinado. En este tutorial, le mostraremos cómo usar el comando chown a través de ejemplos prácticos.