GNU Bash

Bash

Tutorial Bash: Manipulación de permisos de archivos y directorios con chmod, chown y chgrp

Bash/Shell: Aprende a manipular permisos de archivos y directorios con chmod, chown y chgrp. Mejora la seguridad y gestión de tu sistema con esta guía completa.

Explicación de la notación simbólica y octal para permisos

En Bash y Shell, la manipulación de permisos de archivos y directorios es fundamental para la gestión y seguridad del sistema. Los permisos se pueden representar tanto en notación simbólica como en notación octal, y es crucial entender ambas para utilizar los comandos Linux, especialmente chmod, de manera efectiva en tus Bash scripts.

Notación simbólica

La notación simbólica utiliza caracteres para representar los permisos de lectura (r), escritura (w) y ejecución (x) para el propietario del archivo, el grupo y otros usuarios. La estructura es la siguiente:

  • Primer carácter: tipo de archivo (- para archivo regular, d para directorio, l para enlace simbólico, etc.).
  • Siguientes tres caracteres: permisos del propietario del archivo.
  • Siguientes tres caracteres: permisos del grupo del archivo.
  • Últimos tres caracteres: permisos para otros usuarios.

Ejemplo de permisos simbólicos:

-rwxr-xr--

En este caso:

  • rwx (lectura, escritura, ejecución) para el propietario.
  • r-x (lectura, ejecución) para el grupo.
  • r-- (lectura) para otros usuarios.

Notación octal

La notación octal es una representación numérica de los permisos, donde cada dígito octal corresponde a un conjunto de permisos. Los permisos se dividen en tres categorías (propietario, grupo y otros) y cada categoría se representa por un dígito octal (0-7).

Los valores octales se calculan sumando:

  • 4 para lectura (r)
  • 2 para escritura (w)
  • 1 para ejecución (x)

Por ejemplo:

  • rwx = 4 + 2 + 1 = 7
  • r-x = 4 + 0 + 1 = 5
  • r-- = 4 + 0 + 0 = 4

Así, los permisos -rwxr-xr-- se representarían en notación octal como 754.

Ejemplos de uso en comandos

Para cambiar permisos usando la notación simbólica:

chmod u+x,g-w,o+r archivo.txt

Consola con los comandos de arriba.

Este comando añade permiso de ejecución al propietario (u+x), quita permiso de escritura al grupo (g-w) y añade permiso de lectura a otros (o+r).

Para cambiar permisos usando notación octal:

chmod 754 archivo.txt

Consola con los comandos de arriba.

Este comando establece los permisos a rwxr-xr-- directamente.

Comparación y uso práctico

La notación simbólica es más intuitiva y legible, especialmente cuando se necesita modificar permisos específicos sin alterar otros. La notación octal es más compacta y eficiente para establecer permisos completos en una sola operación. Ambas notaciones son esenciales en el manejo de permisos en Bash scripts y al trabajar con comandos Linux en general.

Conocer ambas notaciones permite flexibilidad y precisión en la gestión de archivos y directorios, facilitando la administración de sistemas mediante Shell.

Comando chmod para cambiar permisos

El comando chmod en Bash se utiliza para cambiar los permisos de archivos y directorios. Este comando es fundamental en la gestión de permisos en sistemas operativos basados en Unix y Linux, y su uso correcto es esencial para la seguridad y administración del sistema. Aquí se explican las formas más comunes de usar chmod.

Uso básico de chmod

El comando chmod puede emplearse tanto con notación simbólica como con notación octal para definir los permisos.

Ejemplos de uso con notación simbólica:

chmod u+r archivo.txt
chmod g-w directorio
chmod o+x script.sh

En estos ejemplos:

  • u+r añade permiso de lectura al propietario de archivo.txt.
  • g-w quita permiso de escritura al grupo para directorio.
  • o+x añade permiso de ejecución para otros usuarios en script.sh.

Ejemplos de uso con notación octal:

chmod 755 archivo.txt
chmod 644 documento.txt
chmod 700 script.sh

En estos ejemplos:

  • 755 establece permisos de lectura, escritura y ejecución para el propietario, y permisos de lectura y ejecución para el grupo y otros en archivo.txt.
  • 644 establece permisos de lectura y escritura para el propietario, y solo lectura para el grupo y otros en documento.txt.
  • 700 establece permisos de lectura, escritura y ejecución solo para el propietario en script.sh.

Cambiar permisos recursivamente

Para cambiar los permisos de un directorio y todos sus subdirectorios y archivos, se utiliza la opción -R (recursiva):

chmod -R 755 /ruta/al/directorio

Consola con los comandos de arriba.

Este comando aplica los permisos 755 a todos los archivos y subdirectorios dentro de /ruta/al/directorio.

Uso avanzado de chmod con opciones especiales

Además de los permisos básicos, chmod permite configurar permisos especiales como el setuid, setgid y el sticky bit.

  • Setuid (Set User ID): Permite que los archivos ejecutables se ejecuten con los privilegios del propietario del archivo. Se representa con un 4 al inicio de los permisos octales.
chmod 4755 archivo_setuid
  • Setgid (Set Group ID): Permite que los archivos ejecutables se ejecuten con los privilegios del grupo del archivo y que los directorios hereden el grupo del directorio padre. Se representa con un 2 al inicio de los permisos octales.
chmod 2755 archivo_setgid
  • Sticky bit: Se utiliza en directorios para que solo el propietario de un archivo pueda eliminar o modificar el archivo, incluso si otros usuarios tienen permisos de escritura en el directorio. Se representa con un 1 al inicio de los permisos octales.
chmod 1755 directorio_sticky

Verificación de permisos

Después de cambiar los permisos, es crucial verificar que se hayan aplicado correctamente. Esto se puede hacer utilizando el comando ls -l:

ls -l archivo.txt

Este comando muestra los permisos actuales de archivo.txt en notación simbólica.

Integración en Bash scripts

El uso de chmod en Bash scripts es común para automatizar la configuración de permisos. Aquí un ejemplo de cómo podría integrarse en un script:

#!/bin/bash

# Cambiar permisos de un archivo
chmod 644 /ruta/al/archivo.txt

# Cambiar permisos de un directorio recursivamente
chmod -R 755 /ruta/al/directorio

Este script cambia los permisos de archivo.txt a 644 y de todos los archivos y subdirectorios dentro de /ruta/al/directorio a 755.

El dominio del comando chmod y su correcta aplicación en Bash scripts y comandos Linux es esencial para cualquier ingeniero de software que trabaje en entornos Unix o Linux, garantizando así un control preciso sobre los permisos de archivos y directorios en el sistema.

Uso de chown para cambiar la propiedad de archivos y directorios

El comando chown en Bash se utiliza para cambiar la propiedad de archivos y directorios. Esto es fundamental en la gestión de permisos en sistemas operativos basados en Unix y Linux, ya que permite asignar y modificar el propietario y el grupo de un archivo o directorio. El uso correcto de chown es esencial para la seguridad y administración del sistema.

Para cambiar la propiedad de un archivo o directorio, la sintaxis básica del comando chown es la siguiente:

chown [opciones] nuevo_propietario[:nuevo_grupo] archivo_o_directorio

Ejemplos básicos de uso

Para cambiar el propietario de un archivo llamado archivo.txt a un usuario llamado usuario:

chown usuario archivo.txt

Para cambiar tanto el propietario como el grupo de un archivo llamado archivo.txt a usuario y grupo respectivamente:

chown usuario:grupo archivo.txt

Consola con los comandos de arriba.

En estos ejemplos:

  • usuario es el nuevo propietario del archivo.
  • grupo es el nuevo grupo del archivo.

Cambiar la propiedad recursivamente

Para cambiar la propiedad de un directorio y todos sus subdirectorios y archivos, se utiliza la opción -R (recursiva):

chown -R usuario:grupo /ruta/al/directorio

Este comando cambia el propietario y el grupo de todos los archivos y subdirectorios dentro de /ruta/al/directorio a usuario y grupo respectivamente.

Uso avanzado con opciones especiales

  • Opción --reference: Cambia la propiedad de un archivo o directorio utilizando otro archivo como referencia:
chown --reference=archivo_referencia archivo_destino

Este comando asigna al archivo_destino el mismo propietario y grupo que archivo_referencia.

  • Opción -h: Cambia la propiedad de un enlace simbólico en lugar del archivo al que apunta:
chown -h usuario:grupo enlace_simbólico

Verificación de propiedad

Después de cambiar la propiedad, es crucial verificar que se haya aplicado correctamente. Esto se puede hacer utilizando el comando ls -l:

ls -l archivo.txt

Este comando muestra el propietario y grupo actuales de archivo.txt.

Integración en Bash scripts

El uso de chown en Bash scripts es común para automatizar la configuración de propiedad. Aquí un ejemplo de cómo podría integrarse en un script:

#!/bin/bash

# Cambiar propietario de un archivo
chown usuario /ruta/al/archivo.txt

# Cambiar propietario y grupo de un directorio recursivamente
chown -R usuario:grupo /ruta/al/directorio

Este script cambia el propietario de archivo.txt a usuario y de todos los archivos y subdirectorios dentro de /ruta/al/directorio a usuario y grupo.

Dominar el comando chown y su correcta aplicación en Bash scripts y comandos Linux es esencial para cualquier ingeniero de software que trabaje en entornos Unix o Linux, garantizando así un control preciso sobre la propiedad de archivos y directorios en el sistema.

Comando chgrp para cambiar el grupo propietario

El comando chgrp en Bash se utiliza para cambiar el grupo propietario de archivos y directorios. Este comando es fundamental en la gestión de permisos en sistemas operativos basados en Unix y Linux, permitiendo ajustar el control de acceso a los recursos del sistema. A continuación se explica cómo utilizar chgrp de manera efectiva en tus comandos Linux y Bash scripts.

Para cambiar el grupo propietario de un archivo o directorio, la sintaxis básica del comando chgrp es la siguiente:

chgrp [opciones] nuevo_grupo archivo_o_directorio

Ejemplo básico de uso:

chgrp desarrolladores proyecto.txt

En este ejemplo:

  • desarrolladores es el nuevo grupo propietario del archivo proyecto.txt.

Cambiar el grupo recursivamente

Para cambiar el grupo propietario de un directorio y todos sus subdirectorios y archivos, se utiliza la opción -R (recursiva):

chgrp -R desarrolladores /ruta/al/directorio

Este comando cambia el grupo propietario de todos los archivos y subdirectorios dentro de /ruta/al/directorio a desarrolladores.

Uso avanzado con opciones especiales

  • Opción --reference: Cambia el grupo propietario de un archivo o directorio utilizando otro archivo como referencia:
chgrp --reference=archivo_referencia archivo_destino

Este comando asigna al archivo_destino el mismo grupo propietario que archivo_referencia.

Verificación del grupo propietario

Después de cambiar el grupo, es crucial verificar que se haya aplicado correctamente. Esto se puede hacer utilizando el comando ls -l:

ls -l archivo.txt

Este comando muestra el grupo propietario actual de archivo.txt.

Integración en Bash scripts

El uso de chgrp en Bash scripts es común para automatizar la configuración de grupo propietario. Aquí un ejemplo de cómo podría integrarse en un script:

#!/bin/bash

# Cambiar el grupo propietario de un archivo
chgrp desarrolladores /ruta/al/archivo.txt

# Cambiar el grupo propietario de un directorio recursivamente
chgrp -R desarrolladores /ruta/al/directorio

Este script cambia el grupo propietario de archivo.txt a desarrolladores y de todos los archivos y subdirectorios dentro de /ruta/al/directorio a desarrolladores.

Dominar el comando chgrp y su correcta aplicación en Bash scripts y comandos Linux es esencial para cualquier ingeniero de software que trabaje en entornos Unix o Linux, garantizando así un control preciso sobre el grupo propietario de archivos y directorios en el sistema.

Usuario administrador y creación de usuarios

En sistemas operativos basados en Unix y Linux, la gestión de usuarios es crucial para mantener la seguridad y el control del acceso a recursos del sistema. En esta sección, se explicará cómo el usuario administrador (root) puede crear y gestionar usuarios utilizando comandos Linux en Bash y Shell. Estos comandos son esenciales para la administración del sistema y la automatización mediante Bash scripts.

Usuario administrador (root)

El usuario administrador, comúnmente conocido como "root", tiene privilegios completos en el sistema. Esto incluye la capacidad de leer, modificar y eliminar cualquier archivo, así como la posibilidad de cambiar permisos y propiedades de archivos y directorios. Para ejecutar comandos como root, se utiliza el comando sudo seguido del comando deseado.

Ejemplo de uso de sudo:

sudo comando

Para obtener una Shell con privilegios de root, se puede usar:

sudo -i

Es importante usar los privilegios de root con precaución, ya que cualquier error puede tener consecuencias graves para el sistema.

Creación de usuarios

Para crear nuevos usuarios en el sistema, se utiliza el comando useradd. Este comando permite añadir usuarios de manera eficiente y configurar varios parámetros, como el directorio home y el shell predeterminado.

Ejemplo básico de creación de un usuario:

sudo useradd nombre_usuario

Este comando crea un nuevo usuario llamado nombre_usuario con configuraciones predeterminadas.

Para especificar un directorio home y un shell predeterminado:

sudo useradd -m -d /home/nombre_usuario -s /bin/bash nombre_usuario
  • -m: Crea el directorio home si no existe.
  • -d: Especifica el directorio home.
  • -s: Define el shell predeterminado.

Asignación de contraseñas

Después de crear un usuario, es necesario asignarle una contraseña. Esto se realiza mediante el comando passwd:

sudo passwd nombre_usuario

El sistema solicitará la nueva contraseña y su confirmación.

Modificación de usuarios

El comando usermod permite modificar las propiedades de los usuarios existentes. Por ejemplo, para cambiar el shell predeterminado de un usuario:

sudo usermod -s /bin/zsh nombre_usuario

Para añadir un usuario a un grupo adicional:

sudo usermod -aG grupo_adicional nombre_usuario
  • -aG: Añade el usuario a un grupo sin eliminarlo de otros grupos.

Eliminación de usuarios

Para eliminar un usuario, se utiliza el comando userdel. Es posible eliminar solo la cuenta del usuario o también su directorio home y archivos asociados.

Eliminar solo la cuenta del usuario:

sudo userdel nombre_usuario

Eliminar la cuenta del usuario y su directorio home:

sudo userdel -r nombre_usuario
  • -r: Elimina el directorio home y los archivos del usuario.

Gestión de grupos

La gestión de grupos es igualmente importante para controlar el acceso a los recursos del sistema. El comando groupadd se utiliza para crear nuevos grupos:

sudo groupadd nombre_grupo

Para eliminar un grupo:

sudo groupdel nombre_grupo

Ejemplos en Bash scripts

La automatización de la creación y gestión de usuarios y grupos mediante Bash scripts es una práctica común en la administración de sistemas. Aquí un ejemplo de un script que crea un usuario, le asigna una contraseña y lo añade a un grupo:

#!/bin/bash

# Crear un nuevo usuario
sudo useradd -m -d /home/nuevo_usuario -s /bin/bash nuevo_usuario

# Asignar una contraseña
echo "nuevo_usuario:contraseña" | sudo chpasswd

# Añadir el usuario a un grupo
sudo usermod -aG grupo_adicional nuevo_usuario

Este script crea un usuario llamado nuevo_usuario, le asigna la contraseña contraseña y lo añade al grupo grupo_adicional.

El dominio de la gestión de usuarios y grupos mediante comandos Linux en Bash y Shell es esencial para cualquier ingeniero de software que trabaje en entornos Unix o Linux. Estos conocimientos permiten un control preciso sobre el acceso a los recursos del sistema, garantizando así la seguridad y eficiencia en la administración del sistema.

Certifícate en Bash con CertiDevs PLUS

Ejercicios de esta lección Manipulación de permisos de archivos y directorios con chmod, chown y chgrp

Evalúa tus conocimientos de esta lección Manipulación de permisos de archivos y directorios con chmod, chown y chgrp con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Bash

Accede a todas las lecciones de Bash y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Principales Distribuciones De Linux

GNU Bash

Introducción Y Entorno

Instalar Ubuntu En Windows Con Wsl

GNU Bash

Introducción Y Entorno

Introducción A Shell Y Bash

GNU Bash

Introducción Y Entorno

Comandos De Navegación Pwd, Cd Y Ls

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Manipulación De Archivos Y Directorios

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Comprimir Y Descomprimir Archivos En Bash Con Tar Y Gzip

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Manipulación De Permisos De Archivos Y Directorios Con Chmod, Chown Y Chgrp

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Enlaces Simbólicos Y Duros

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Redirección Y Tuberías

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Gestión De Procesos Con Ps, Htop Y Pgrep

GNU Bash

Gestión De Procesos Y Servicios

Gestión De Servicios Con Systemd

GNU Bash

Gestión De Procesos Y Servicios

Configuración De Bash

GNU Bash

Interacción Con El Sistema

Redes Y Comunicación Con Ifconfig, Ip Y Netstat

GNU Bash

Interacción Con El Sistema

Transferencia De Archivos Y Comunicación Remota Con Ssh

GNU Bash

Interacción Con El Sistema

Gestión De Paquetes Y Dependencias Y Actualización Del Sistema

GNU Bash

Interacción Con El Sistema

Variables Y Tipos De Datos

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Operadores

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Sintaxis De Control De Flujo

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Expresiones Regulares Y Manipulación De Texto

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Definición Y Uso De Funciones

GNU Bash

Sintaxis Y Creación De Scripts En Bash

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la notación simbólica y octal para permisos en Bash/Shell.
  • Utilizar el comando chmod para cambiar permisos de archivos y directorios.
  • Aplicar el comando chown para cambiar el propietario de archivos y directorios.
  • Emplear el comando chgrp para modificar el grupo propietario de archivos y directorios.
  • Cambiar permisos y propiedad de archivos de manera recursiva.
  • Integrar los comandos en scripts de Bash para automatizar la configuración de permisos y propiedades.
  • Gestionar usuarios y grupos en sistemas operativos basados en Unix y Linux.