Armadilloフォーラム

コンテナ内でのユーザ追加や変更について

yamaie

2025年2月7日 14時01分

yamaieと申します。
ABOS上のコンテナで、コンテナ内でユーザを追加/変更することを検討しています。今後、900で開発するのですが、ABOSの事前調査ということで640を用いて検討を進めています。640の製品マニュアルにftpサーバの例になりますが、adduserでユーザアカウントを追加する手順が記載されており、コンテナ上でユーザを登録することはできたのですが、再起動すると追加したユーザは消えている状態になります。追加したユーザをコンテナで永続化させる方法はありますでしょうか。(ユーザは、コンテナ上で動作するソフトで動的に追加/変更/削除したいと考えており、Dockerfileでのユーザ追加では対応できません。)

コメント

at_satoshi.ohta

2025年2月7日 18時14分

太田です。

コンテナを再起動するとコンテナイメージを基にコンテナが再生成されるため、コンテナからはユーザー情報が消えます。

コンテナイメージにユーザー情報を含めずにユーザー情報を保持したいのであれば、Armadillo Base OSのユーザーデータディレクトリにユーザー情報の設定ファイルを保持しておき、コンテナ起動時に読み込む方法は考えられます。

ユーザーデータディレクトリであればpersist_fileコマンドは不要で、Armadilloを再起動してもデータは保持されます。
ユーザーデータディレクトリはロールバックが適用されるディレクトリ(/var/app/rollback/volumes)とロールバックされないディレクトリ(/var/app/volume)がありますが、この場合はロールバックが適用されない/var/app/volumeに配置するのが適切かと思います。
ユーザーデータディレクトリに関しては以下のURLをご参照いただければと思います。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

ただ、上記の方法を提案しておいて申し訳ないですが、adduserによって追加されるOS側のアカウントの設定ファイルの情報(/etc/shadow, /etc/passwd, /etc/group)をユーザーデータディレクトリに置くのはセキュリティ上推奨できません。
設計として、もしWebアプリケーションを作る場合であればDB側で認証するような設計にした方がセキュリティ上安全です。
ftp/scpなどを使うアプリケーションを作成する場合はOS側で認証が必要なためOS側にアカウントを作成する必要はありますが、
adduserが運用上本当に必要であるか検討してみるのもありかと思います。

また、ftpの場合であれば、virtual user 機能(vsftpd)もありますので、もし ftp をご使用の際はご検討いただければと思います。

どうぞよろしくお願いいたします。

yamaieです。お世話になっております。

> ftp/scpなどを使うアプリケーションを作成する場合はOS側で認証が必要なためOS側にアカウントを作成する必要はありますが、
> adduserが運用上本当に必要であるか検討してみるのもありかと思います。
> また、ftpの場合であれば、virtual user 機能(vsftpd)もありますので、もし ftp をご使用の際はご検討いただければと思います。
ユーザディレクトリにアカウントに関わる設定ファイルを配置する案は推奨されない旨、承知しました。ftpやsftp(ssh)を使用する必要があり、仮想ユーザでOSアカウントから切り離す方式を検討してみたいと思います。助言いただきましてありがとうございました。