Linux / 명령어 / install - 파일 복사와 권한 설정
install은 파일을 복사하면서 권한, 소유자·그룹, 타임스탬프 처리와 대상 디렉터리 생성을 함께 수행하는 명령입니다. 패키지 설치 프로그램이 아니라 빌드 결과물을 정해진 시스템 경로에 배치하는 데 적합한 GNU Coreutils 도구입니다.
이 글에서는 실행 파일과 설정 파일 설치, -d로 디렉터리 생성, 권한·소유권 지정, 디버그 심볼 제거 옵션과 cp와의 차이를 설명합니다.
install 명령어란?
install은 원본을 대상에 복사한 뒤 지정한 파일 모드와 속성을 적용합니다. 기본 생성 모드는 일반적으로 0755이므로 설정 파일처럼 실행 권한이 필요 없는 파일은 -m으로 명시해야 합니다. 소프트웨어 의존성을 해결하는 apt나 dnf와는 목적이 다릅니다.
기본 문법
install [옵션] 원본 대상 install [옵션] 원본 ... 디렉터리 install -d [옵션] 디렉터리 ...
파일명이나 경로에 공백이 있으면 따옴표로 감싸고, 하이픈으로 시작하는 이름은 가능한 경우 -- 뒤에 지정합니다. 지원 옵션은 배포판과 GNU Coreutils 버전에 따라 다를 수 있으므로 install --help와 man install으로 현재 시스템의 설명을 확인하세요.
install 기본 사용법
실행 파일 설치하기
실행 파일을 시스템 경로로 복사하면서 모드를 지정합니다. 시스템 디렉터리에 쓸 권한이 필요하면 sudo를 명령에 명시합니다.
sudo install -m 0755 mytool /usr/local/bin/mytool
설정 파일 설치하기
설정 파일에는 실행 권한이 필요하지 않으므로 적절한 모드를 지정합니다. 기존 설정을 덮어쓰기 전에 별도 백업 정책을 마련하세요.
sudo install -m 0644 mytool.conf /etc/mytool/mytool.conf
대상 디렉터리 만들기
-d는 파일 복사가 아니라 디렉터리 생성 모드입니다. 누락된 부모 경로를 만들고 권한·소유권을 적용할 수 있습니다.
sudo install -d -m 0750 -o myapp -g myapp /var/lib/myapp
설치 후 모드 확인하기
install은 파일 복사와 권한 지정을 한 번에 수행하지만 일반적으로 성공 메시지를 출력하지 않습니다.
printf '#!/bin/sh\n' > demo-tool install -m 755 demo-tool demo-tool-installed stat -c '%a %n' demo-tool-installed
예시 출력:
755 demo-tool-installed
이 결과는 대상 파일의 권한 모드만 확인합니다. 스크립트가 실제로 올바르게 실행되는지, 설치 위치가 서비스 경로와 맞는지는 별도로 점검하세요.
주요 옵션
| 옵션 | 설명 |
|---|---|
-m MODE |
설치할 파일이나 디렉터리의 권한 모드를 지정합니다. |
-o OWNER |
소유 사용자를 지정합니다. 일반적으로 적절한 권한이 필요합니다. |
-g GROUP |
소유 그룹을 지정합니다. |
-d, --directory |
디렉터리와 필요한 부모 경로를 만듭니다. |
-D |
마지막 인수의 모든 상위 디렉터리를 만든 뒤 파일을 설치합니다. |
-t DIR |
대상 디렉터리를 옵션으로 지정합니다. |
-p, --preserve-timestamps |
원본 파일의 접근·수정 시각을 적용합니다. |
-s, --strip |
설치 과정에서 심볼 테이블 제거를 시도합니다. |
-C, --compare |
내용과 일부 속성이 같으면 불필요한 파일 변경을 피합니다. |
긴 옵션은 의미를 파악하기 쉽고 스크립트 검토에도 도움이 됩니다. 다만 이식성이 중요한 스크립트에서는 대상 시스템이 해당 GNU 확장 옵션을 지원하는지 먼저 확인하세요.
실전 활용 예제
부모 경로와 함께 파일 설치하기
-D는 최종 대상 파일 경로의 부모가 없을 때 함께 만듭니다. 디렉터리 자체의 별도 소유권 정책이 필요하면 install -d를 먼저 사용하는 편이 명확합니다.
sudo install -D -m 0644 myapp.service /etc/systemd/system/myapp.service
여러 파일을 한 디렉터리로 설치하기
-t로 대상 디렉터리를 앞에서 명시하면 파일 목록을 동적으로 구성하기 쉽습니다.
sudo install -m 0644 -t /usr/local/share/myapp templates/*.html
설치 결과 검증하기
파일이 올바른 경로에 있고 권한·소유권이 예상과 같은지 확인합니다. 실행 파일이라면 배포 대상 시스템에서 필요한 라이브러리와 아키텍처도 확인해야 합니다.
stat -c '%A %U:%G %n' /usr/local/bin/mytool file /usr/local/bin/mytool
install와 관련 명령 비교
| 명령·방법 | 주요 역할 | 적합한 상황 |
|---|---|---|
install |
복사와 권한·소유권 설정 | 빌드 산출물과 설정 파일 배치 |
cp |
일반적인 파일 복사 | 속성 설정을 별도 단계로 관리할 때 |
mkdir |
일반 디렉터리 생성 | 작업용 디렉터리 구조를 만들 때 |
apt·dnf |
패키지 의존성과 데이터베이스 관리 | 배포판 패키지를 설치·업데이트할 때 |
사용할 때 주의할 점
패키지 관리자를 대신하지 않는다
install은 파일 배치 도구이며 의존성, 제거 기록, 업데이트와 무결성 검증을 관리하지 않습니다. 배포판 패키지로 제공되는 소프트웨어라면 패키지 관리자를 우선 검토하세요.
기본 모드를 그대로 믿지 않는다
설정 파일과 비밀 키에 실행·읽기 권한이 과도하게 부여되지 않도록 -m을 명시하세요.
기존 파일 덮어쓰기 정책을 정한다
운영 환경의 설정 파일을 바로 교체하면 서비스 장애나 사용자 변경 손실이 생길 수 있습니다. 백업, 비교, 원자적 전환과 롤백 절차를 마련하세요.
FAQ
install 명령은 프로그램 패키지를 설치하나요?
아닙니다. 파일을 지정 경로에 복사하고 속성을 설정하는 도구입니다. 패키지 의존성은 관리하지 않습니다.
cp 대신 install을 쓰는 이유는 무엇인가요?
복사와 함께 파일 모드, 소유자·그룹, 대상 디렉터리 생성을 한 명령에서 명시할 수 있어 빌드·배포 스크립트가 분명해집니다.
디렉터리만 만들 수 있나요?
install -d 디렉터리를 사용합니다. -m, -o, -g도 함께 지정할 수 있습니다.
원본 타임스탬프를 유지하려면 어떻게 하나요?
-p 또는 --preserve-timestamps를 사용합니다.









