はじめに

こんにちは!今回はaddgnupghomeコマンドについて解説します。

addgnupghomeは、GnuPG(GNU Privacy Guard)のホームディレクトリを初期化するコマンドです。新規ユーザーをシステムに追加したときに、そのユーザーのGnuPG環境をセットアップするのに使います。

暗号化・電子署名の管理を自動化する便利なコマンドですね。

addgnupghomeコマンドとは

addgnupghomeは、Debian系Linuxシステムの外部コマンドです。

新規ユーザーアカウント作成後に、そのユーザーの~/.gnupgディレクトリを初期化します。GnuPGの設定ファイルやディレクトリ構造を自動作成し、すぐに暗号化機能が使える状態にします。

useraddadduserコマンドの直後に実行することが多いです。

基本構文

1
addgnupghome USERNAME

USERNAMEには、GnuPG環境を初期化するユーザー名を指定します。

主なオプション

addgnupghomeコマンドには特殊なオプションはありません。ユーザー名のみを引数として指定します。

引数 説明
USERNAME GnuPG環境を初期化するユーザー名

使用例

例1: 基本的な使用方法

1
sudo addgnupghome testuser

実行結果:

1
(成功時は何も表示されない)

testuserユーザーのGnuPGホームディレクトリを初期化します。

例2: 新規ユーザー作成後に初期化

1
2
sudo adduser newuser --disabled-password
sudo addgnupghome newuser

実行結果:

1
2
3
4
5
6
Adding user `newuser' ...
Adding new group `newuser' (1001) ...
Adding new user `newuser' (1001) with group `newuser' ...
Creating home directory `/home/newuser' ...
Copying files from `/etc/skel' ...
(GnuPG環境が初期化される)

新規ユーザーを作成した直後に、GnuPG環境を初期化します。

例3: ホームディレクトリの確認

1
ls -la /home/testuser/.gnupg/

実行結果:

1
2
3
4
5
6
total 24
drwx------ 3 testuser testuser 4096 Jan  3 12:34 .
drwxr-xr-x 5 testuser testuser 4096 Jan  3 12:34 ..
-rw-r--r-- 1 testuser testuser  548 Jan  3 12:34 dirmngr.conf
-rw-r--r-- 1 testuser testuser 2622 Jan  3 12:34 gpg.conf
drwx------ 2 testuser testuser 4096 Jan  3 12:34 private-keys-v1.d

GnuPGホームディレクトリとその設定ファイルが作成されます。

例4: 複数ユーザーの初期化

1
2
3
sudo addgnupghome user1
sudo addgnupghome user2
sudo addgnupghome user3

実行結果:

1
(各ユーザーのGnuPG環境が初期化される)

複数ユーザーのGnuPG環境を一括初期化します。

例5: ディレクトリ構造の確認

1
sudo tree /home/testuser/.gnupg/

実行結果:

1
2
3
4
/home/testuser/.gnupg/
├── dirmngr.conf
├── gpg.conf
└── private-keys-v1.d

初期化されたディレクトリ構造を確認できます。

例6: GnuPGが正常に動作するか確認

1
sudo -u testuser gpg --version

実行結果:

1
2
3
gpg (GnuPG) 2.2.27
libgcrypt 1.9.2
libgpgme 1.15.1

初期化後、そのユーザーでGnuPGが正常に動作することを確認します。

例7: キーを生成してみる

1
sudo -u testuser gpg --gen-key

実行結果:

1
2
3
gpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
...

初期化後、キーペア生成などの操作が可能になります。

例8: パーミッションの確認

1
ls -ld /home/testuser/.gnupg/

実行結果:

1
drwx------ 3 testuser testuser 4096 Jan  3 12:34 /home/testuser/.gnupg/

セキュリティのため、.gnupgディレクトリは所有者のみアクセス可能です。

Tips・注意点

rootユーザーのみが実行可能

addgnupghomeを実行できるのはrootユーザーのみです。通常ユーザーが実行するとエラーが発生します。

既に初期化されていても大丈夫

既にGnuPG環境が存在する場合でも、重複実行しても安全です。必要なファイルは作成済みのため、特に影響ありません。

ホームディレクトリが必須

ユーザーのホームディレクトリが存在していない場合、addgnupghomeを実行する前にadduserで作成する必要があります。

パーミッションは自動で正しく設定

.gnupgディレクトリのパーミッションは700(所有者のみアクセス可能)で作成されます。セキュリティ上、手動で変更してはいけません。

実践的な使い方

新規ユーザー作成スクリプト

1
2
3
4
5
#!/bin/bash
USERNAME=$1
sudo adduser $USERNAME --disabled-password
sudo addgnupghome $USERNAME
echo "ユーザー $USERNAME を作成しました"

新規ユーザーを作成する自動化スクリプトに組み込めます。

システムメンテナンス時の一括初期化

1
2
3
for user in user1 user2 user3; do
  sudo addgnupghome $user
done

複数ユーザーのGnuPG環境を一括初期化します。

CI/CDパイプラインでの利用

1
2
3
4
#!/bin/bash
sudo useradd ciuser
sudo addgnupghome ciuser
sudo -u ciuser gpg --import /path/to/key.gpg

CI/CDシステムがコード署名に使用するGnuPG環境をセットアップします。

まとめ

addgnupghomeコマンドのポイント:

  • GnuPGホームディレクトリを初期化するコマンド
  • 新規ユーザー作成後に実行
  • ~/.gnupgディレクトリと設定ファイルを自動作成
  • rootユーザーのみが実行可能
  • 暗号化・署名機能をすぐに利用可能にする
  • よく使う組み合わせ: adduseraddgnupghome

セキュリティとプライバシー保護の観点から、新規ユーザー作成時にaddgnupghomeを実行することを習慣にしましょう。暗号化機能をすぐに利用できるようになります!