KUMICO

COLUMN

【Linux Tipsシリーズ】平凡なソフトウェア開発者が自分Linuxを作ってみた⑦

今回のコラムもBuildrootを題材にします。 今まで作成してきたRaspberryPiイメージには管理者ユーザーである「root」ユーザーしか定義されていない状態となっており、セキュリティや運用面に関して良い状態とは言えませんので、今回は一般ユーザーの追加をしてみようと思います。

ユーザーの追加を行う

「root」でログインした後に一般ユーザーを作成すれば解決することですが、Buildrootにはイメージ生成時に一般ユーザーも作成しておく機能があるので、その機能を使ってみたいと思います。

イメージ生成時に一般ユーザーを作成するには、Buildrootのドキュメントの「9.6. Adding custom user accounts」に、〝「BR2_ROOTFS_USERS_TABLES」にmakeusers 構文に従った通常のテキストファイルを設定する〝と書かれていますが、makeuser構文がわかりませんので、makeuser構文の確認から行います。

makeusers 構文とは、Buildroot独自の構文で、Buildrootのドキュメントの「Chapter 26. Makeusers syntax documentation」に詳細が記述されており、スペース(半角空白)で区切られたフィールドのリストで、1 行に 1 人のユーザー定義を行う形式となっています。

この構文についての詳細はBuildrootのドキュメントを参照していただくこととして、本コラムでは簡単な説明とします。

1行の構成は下図のようになっており、“comment”フィールドを除き、省略することはできません。

ò╢

図 1 makeusers構文構成

各フィールドの設定内容は以下のとおりです。

  • username
    登録したい一意なユーザー名(ログイン名)を設定します。

  • uid
    ユーザーに割り当てる一意な番号を設定します。 使用したい番号がなければ“-1”を指定するとBuildrootが一意な番号を割り当てます。

  • group
    ユーザーが所属するメイングループを設定します。

  • gid
    メイングループに割り当てる一意な番号を設定します。使用したい番号がなければ“-1”を指定するとBuildrootが一意な番号を割り当てます。

  • password
    ユーザーが使用するログインパスワードを設定します。

  • home
    ユーザーのホームディレクトリをフルパスで設定します。

  • shell
    ユーザーが使用するshellをフルパスで指定します。

  • groups
    サブグループ(メイングループ以外にユーザーを所属させたいグループ)を設定します。複数に所属させたい場合はカンマ(”,”)で区切って記述します。

  • comment
    コメントを自由形式で記述できます。 この“comment”フィールドを除き、他の全てのフィールドは必須フィールドとなっており、makeusers 構文はフィールドの区切りにスペースを使用しているため、このフィールドを除きスペースを使用することはできません。 また、このフィールドを含むすべてのフィールドでコロン(”:“)は使用できません。

usernameやgroupには“root”を使用できません、またuid,gidに“0”を使用することはできません。 使用可能な文字列や値、構文の規則に関しては、Buildrootのドキュメントで確認してください。

makeusers 構文がある程度理解できたので、一般ユーザーを定義します。 本コラムでは下表の設定で一般ユーザーを作成したいと思います。

表 1 コラム用ユーザー定義

フィールド名 設定値

uid、gid はBuildrootに設定してもらいます。

メイングループ以外のグループには所属しません。

username column_user
uid -1
group fsi_column
gid -1
password column
home /home/column_user
shell /bin/sh
groups
groups Column Test User

本コラムでは設定ファイルは「~/br2-external/configs」配下に保存していますので、今回のmakeusers 構文のテキストファイルも「~/br2-external/configs」に作成します。

~$ cd ~/br2-external/configs
~/br2-external/configs$ echo “column_user -1 fsi_column -1 =column /home/column_user /bin/sh – Column Test User ” > add_user_accounts.lst

本コラムでは、makeuser構文テキストファイルを「add_user_accounts.lst」としています。

パスワードフィールドに設定している文字列“=column”は、間違いではなく、先頭に“=”を付けるとBuildrootが暗号化をしてパスワードファイルを作成してくれます、詳しくはBuildrootのドキュメントを参照してください。

makeusers 構文のテキストファイルを作成したので、そのファイルのパスを「BR2_ROOTFS_USERS_TABLES」に設定します。
Buildrootの設定を開き、「System configuration」->「Path to the users tables:」に“~/br2-external/configs/add_user_accounts.lst”と入力して(図 2 BR2_ROOTFS_USERS_TABLES設定 参照)保存を行い、「make」を実行します。

ここでは、「make xconfig」を使用しています。

Screenshot from 2021-05-24 21-22-06

図 2 BR2_ROOTFS_USERS_TABLES設定

生成されたイメージファイルをマイクロSDに書き込んでRaspberryPiを起動し、今回作成したユーザーである“column_user”でログインしてみましょう。
「buildroot login:」の箇所に“column_user”、「Password:」は“column”と入力するとログインできます。
ログインしたら、ユーザー情報を確認するコマンド(“id”コマンド)を実行し、Buildrootが設定した“uid”と“gid”を確認してみます(図 3 column_userでログイン 参照)。

col_uid

図 3 column_userでログイン

“uid”と“gid”は共に 1000 となっています。 次はユーザー情報の詳細が記述されているフィルを参照し、「makeusers 構文のテキスト」で指定した通りに登録されているか確認してみます。

ユーザー情報の詳細は「/etc/password」に記述されており、makeusers 構文と同じく1行に1人のユーザーが定義されています。構文もmakeusers 構文に似ていますが、定義の順序が異なり、区切りがコロン(“:”)になっています(図 4 passwordファイル構成 参照)。

password_file

図 4 passwordファイル構成

「/etc/password」を表示すると、“column_user:x:1000:1000:Column Test User:/home/column_user:/bin/sh” と記述されている行があり(図 5 ユーザー情報確認 参照)、ユーザー名やコメント、ホームディレクトリ等、所属グループを除いて「makeusers 構文のテキスト」で指定した通りに登録されていることが確認できました。

col_group

図 5 ユーザー情報確認

所属グループに関しては「/etc/group」に記述されていますので、「/etc/group」を表示します。 “fsi_column:x:1000:”と記述されている行があり、「makeusers 構文のテキスト」で指定したグループに属していることが確認できました。

「/etc/group」の構文は、「/etc/password」と同一です(図 6 groupファイル構成 参照)。

group_file

図 6 groupファイル構成

本コラムではユーザーを1人追加しただけですが、読者の皆さんは複数ユーザーの追加やサブグループの設定等してみてください。

個別相談も承っております。下記よりお申し込みください。

個別相談会申し込み

関連記事

OTHER COLUMN

MORE  

まこちゃんブログ

NEWS

MORE  

PARTNER

  • Intel
  • Xilinx

お探しの組み込み製品はキーワードで検索!