Linux / Comando install: copiar archivos y establecer permisos y propietario

install es un comando que copia archivos mientras realiza simultáneamente la gestión de permisos, propietario y grupo, marcas de tiempo y la creación del directorio de destino. Es una herramienta de GNU Coreutils adecuada para colocar resultados de compilación en rutas del sistema definidas, no para programas de instalación de paquetes.

En este artículo se explican la instalación de archivos ejecutables y de configuración, la creación de directorios con -d, la asignación de permisos y propiedad, la opción de eliminar símbolos de depuración y la diferencia con cp.

¿Qué es el comando install?

install copia el origen al destino y luego aplica los modos y atributos de archivo especificados. El modo de creación predeterminado generalmente es 0755, por lo que los archivos que no necesiten permisos de ejecución, como los archivos de configuración, deben especificarse con -m. Tiene un propósito diferente al de apt o dnf, que resuelven dependencias de software.

Sintaxis básica

install [OPCIONES] ORIGEN DESTINO
install [OPCIONES] ORIGEN... DIRECTORIO
install -d [OPCIONES] DIRECTORIO...

Los ejemplos son independientes y requieren archivos de origen existentes. Prepare copias de prueba antes de usar rutas del sistema y compruebe la implementación con install --version, install --help y man install: este artículo describe GNU install y otras implementaciones pueden diferir. Use comillas para rutas con espacios y -- antes de operandos que empiecen por guion.

Uso básico del comando install

Instalación de archivos ejecutables

Copia los archivos ejecutables a la ruta del sistema mientras se especifica el modo. Si se necesitan permisos de escritura en el directorio del sistema, incluya sudo en el comando.

sudo install -m 0755 mytool /usr/local/bin/mytool

Instalación de archivos de configuración

El siguiente ejemplo requiere que exista /etc/mytool. Cree y revise primero ese directorio con install -d o use -D si necesita crear sus padres. El modo 0644 permite lectura a otros usuarios; para un archivo con secretos, elija una política más restrictiva, como 0600 cuando solo deba leerlo su propietario. Revise y respalde cualquier destino existente antes de reemplazarlo.

sudo install -m 0644 mytool.conf /etc/mytool/mytool.conf

Crear directorio de destino

-d crea directorios y puede aplicar modo, propietario y grupo a los directorios indicados. La cuenta y el grupo myapp del ejemplo deben existir. En GNU, los padres que sea necesario crear se generan con 0755, independientemente de -m y de la máscara umask; revise por separado la política de esos padres. Una ruta ya existente también puede ver modificados sus atributos al ejecutar install -d sobre ella.

sudo install -d -m 0750 -o myapp -g myapp /var/lib/myapp

Verificar el modo después de la instalación

install realiza la copia de archivos y la asignación de permisos de una vez, pero generalmente no muestra un mensaje de éxito.

printf '#!/bin/sh\n' > demo-tool
install -m 755 demo-tool demo-tool-installed
stat -c '%a %n' demo-tool-installed

Ejemplo de salida:

755 demo-tool-installed

Este resultado solo verifica el modo de permisos del archivo objetivo. Verifique por separado si el script se ejecuta correctamente y si la ubicación de instalación coincide con la ruta del servicio.

Opciones principales

Opciones Descripción
-m MODE Especifique el modo de permisos para los archivos o directorios a instalar.
-o OWNER Especifique el usuario propietario. Por lo general, se requieren permisos adecuados.
-g GROUP Especifica el grupo propietario.
-d, --directory Crea el directorio y las rutas principales necesarias.
-D Después de crear todos los directorios principales del último argumento, instala el archivo.
-t DIR Especifica el directorio de destino como una opción.
-p, --preserve-timestamps Aplica la hora de acceso y modificación del archivo original.
-s, --strip Intenta eliminar la tabla de símbolos durante el proceso de instalación.
-C, --compare Evita cambios innecesarios en archivos si el contenido y algunos atributos son iguales.

Las opciones largas facilitan entender su significado y también ayudan a revisar scripts. Sin embargo, en scripts donde la portabilidad es importante, primero verifique si el sistema objetivo soporta esas opciones de extensión GNU.

Ejemplos de uso práctico

Instalar el archivo junto con la ruta principal.

-D crea los directorios padre que falten y después copia el archivo al destino. Para establecer una política específica en el directorio, use antes install -d y compruebe sus atributos. Copiar un archivo de unidad de systemd no activa por sí solo el servicio: su validación, recarga y arranque son pasos distintos. La opción -s de la tabla utiliza strip y solo debe aplicarse a binarios compatibles que lo requieran, no a scripts o archivos de configuración.

sudo install -D -m 0644 myapp.service /etc/systemd/system/myapp.service

Instalar varios archivos en un directorio

Si se especifica el directorio de destino al principio con -t, es fácil configurar dinámicamente la lista de archivos.

sudo install -m 0644 -t /usr/local/share/myapp templates/*.html

Verificar el resultado de la instalación

Compruebe que los archivos estén en la ruta correcta y que los permisos y la propiedad sean los esperados. Si es un ejecutable, también debe verificar las bibliotecas y la arquitectura necesarias en el sistema de destino.

stat -c '%A %U:%G %n' /usr/local/bin/mytool
file /usr/local/bin/mytool

Comparación de comandos relacionados con install

Comando / método Rol principal Situaciones adecuadas
install Copiar y establecer permisos y propiedad Colocar los productos de compilación y los archivos de configuración
cp Copia de archivos común Al gestionar la configuración de atributos como un paso separado
mkdir Creación de directorios normales Al crear la estructura del directorio de trabajo
apt·dnf Gestión de dependencias de paquetes y bases de datos Al instalar o actualizar paquetes de distribución

Precauciones al usar

No sustituye al gestor de paquetes

install es una herramienta de distribución de archivos y no maneja dependencias, registros de eliminación, actualizaciones ni verificación de integridad. Si el software se proporciona como un paquete de distribución, primero consulte al gestor de paquetes.

No confiar únicamente en el modo predeterminado

Especifique -m para que los archivos de configuración y las claves secretas no tengan permisos de ejecución o lectura excesivos.

Defina la política para sobrescribir archivos existentes

Si reemplaza directamente los archivos de configuración en el entorno de producción, podrían ocurrir fallas en el servicio o pérdida de cambios de los usuarios. Prepare procedimientos de respaldo, comparación, cambio atómico y reversión.

FAQ

¿El comando install instala paquetes de programas?

No. Es una herramienta que copia archivos a la ruta especificada y establece sus propiedades. No gestiona dependencias de paquetes.

¿Por qué usar install en lugar de cp?

Porque con una sola orden se puede especificar la copia junto con el modo de archivo, dueño y grupo, y la creación del directorio de destino, dejando claros los scripts de compilación y despliegue.

¿Se pueden crear solo directorios?

Use install -d DIRECTORIO. También se pueden especificar -m, -o, -g.

¿Cómo puedo mantener la marca de tiempo original?

Use -p o --preserve-timestamps.

Para comparar otras herramientas, consulte la Lista de comandos de uso frecuente en Linux. Para consultar las reglas y opciones, use Documentación oficial de GNU Coreutils install y Manual oficial de GNU Coreutils.