install コマンド

installコマンドはファイルのコピーと同時にパーミッションや所有者を設定するコマンド。-mオプションでパーミッション、-oオプションで所有者、-gオプションでグループを指定してコピーできる。cpchownchmodを組み合わせるより1コマンドで簡潔に記述できる。

ディレクトリの作成については、installコマンドでパーミッションと所有者を指定してディレクトリを作成する を参照。

パーミッションと所有者を指定してコピーする

$ sudo install -m 644 -o app -g app myapp.conf /etc/myapp/myapp.conf
$ ls -l /etc/myapp/myapp.conf
-rw-r--r-- 1 app app 13 Aug 16 00:37 /etc/myapp/myapp.conf

所有者やグループの指定にはroot権限が必要である。コピー先に同名のファイルがすでに存在する場合も上書きされ、指定したパーミッションと所有者に揃う。

cp、chown、chmodとの比較

installコマンドを使わない場合、同じ結果を得るには3コマンド必要である。

$ sudo cp myapp.conf /etc/myapp/myapp.conf
$ sudo chown app:app /etc/myapp/myapp.conf
$ sudo chmod 644 /etc/myapp/myapp.conf

installコマンドを使うと、コピーと所有者・パーミッションの設定を1コマンドにまとめられる。

$ sudo install -m 644 -o app -g app myapp.conf /etc/myapp/myapp.conf

具体例

Makefile での利用

Makefileのインストールターゲットでは、installコマンドでファイル配置と権限設定を統一的に記述できる。

install:
	install -m 755 -o root -g root myapp /usr/local/bin/myapp

デプロイスクリプトでの利用

デプロイスクリプトで、アプリケーションの設定ファイルをアプリ実行ユーザーの所有として配置する。

#!/bin/bash
set -e

sudo install -m 640 -o deploy -g deploy config/production.conf /etc/myapp/production.conf