install コマンド
installコマンドはファイルのコピーと同時にパーミッションや所有者を設定するコマンド。-mオプションでパーミッション、-oオプションで所有者、-gオプションでグループを指定してコピーできる。cp、chown、chmodを組み合わせるより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
\第一線のプログラマーの行動原理を学べる!/
