2026-10-01

「/etc/login.conf.d」はOpenBSD 7.1で導入

OpenBSDではディレクトリ「/etc/login.conf.d」というものがあります。調べてみると、OpenBSD 7.1の「What's New」で次のように書かれています。

 Introduced support for storing capability databases in /etc/login.conf.d, allowing easy addition of custom login classes from packages and made rcctl(8) look for the login class in both login.conf and login.conf.d/${class}. 

 

パッケージで使われることを想定して導入されたようです。何か実例はないかと探してみると「databases/mariadb」に「mysqld.login」を見つけました。

 

またOpenBSDでは、「LOGIN.CONF(5)」で「Sites with very large /etc/login.conf files may wish to create a database version of the file, /etc/login.conf.db, for improved performance. Using a database version for small files does not result in a performance improvement.」と書かれています。OpenBSDでは「cap_mkdb」にかけるか否かはオプションです。ところがFreeBSDでは、「LOGIN.CONF(5)」では「Whenever to this, or the user's ~/.login_conf, file are made, the modifications will not be picked up until cap_mkdb(1) is used to compile the file into a database.」と書かれているように、「cap_mkdb」にかけなければなりません。

OpenBSDのログインクラスは手強い

今夏に手に入れたLet's note CF-SV8RDCVSにOpenBSD/amd64 7.9をインストールしました。OSを入れただけなので、日本語環境とか、GUIとか、これから設定していくことになります。何から手を付けようかと思いましたが、まず日本語環境として、ロケール「ja_JP.UTF-8」、日本語フォント、日本語入力などを済ませようと思います。

 

まず最初にロケールの設定です。要するに環境変数「LANG」に「ja_JP.UTF-8」を設定するわけです。ユーザのホームディレクトリにあるドットファイルでファイルで設定する方法がありますが、ここはログインクラスを使おうと思います。FreeBSDではファイル「~/.login_conf」に書くだけでした。同じようにするだけかと思ったら、これはFreeBSD独自拡張であって、OpenBSDでは参照されないことが判明しました。

 

一方でOpenBSDにはディレクトリ「/etc/login.conf.d」という拡張があります。ファイル「/etc/login.conf」との使い分けが良く分からないので、マニュアル「LOGIN.CONF(5)」を良く読んでみようと思います。せっかくなので各BSDのマニュアルに目を通しておこうと思います。

 

そもそもログインクラスとは何のために存在し、どのように使うことが想定されているのか、役割がよくわかりません。マニュアルに記載されているのは、書式とか、設定できる内容がほとんどです。偶に簡単な歴史が書かれていることもありますが、様々な環境でドットファイルに何を書き、何を書かないか、詳述されていることはなさそうです。何か参考になる資料があればと思います。