yorikasa
2025年6月23日 18時28分
いつもお世話になっております。
==========
製品型番:AG6221
ABOSバージョン:3.21.3-at.7
カーネルバージョン:Linux armadillo 5.10.236-1-at #2-Alpine Tue Apr 22 02:43:01 UTC 2025 armv7l Linux
3G/LTE モジュール情報 (Debianのみ):
その他:
ABOS-Webのバージョン:Version: 1.7.4
==========
ABOS-Webのパスワードをエンドユーザーに入力してもらうようにする方法について質問させていただきます。
ABOS-Webを利用するためには、「3.1.5.1. initial_setup.swu の作成」にもある通り、パスワードの設定が必要かと思います。
こちら、パスワードの設定なしで出荷しエンドユーザーにパスワードを設定していただくため、「https://:58080/new_password」へアクセスだけは許可できるように設定を変更することはできないのでしょうか?
パスワードは、取扱説明書等のドキュメントで公開することで、初回にArmadilloを出荷した際に変更していただくよう促すことは可能かと思いますが、パスワードを変更せずに利用する可能性もあるため、出来るなら初期状態でパスワードを設けたくないと思った次第です。
よろしくお願いいたします。
コメント
yorikasa
yorikasa
マルティネさん
教えていただいた内容について対応してみたのですが、new_passwordにアクセスが出来ませんでした。
/etc/shadowと/etc/init.d/abos-webについて確認したところ、内容はあっているように思えます。
# cat /etc/shadow | grep abos-web abos-web-admin:!:19963:0:99999:7::: # cat /etc/init.d/abos-web #!/sbin/openrc-run # SPDX-License-Identifier: MIT pidfile="/run/abos-web.pid" name="abos-web" command="/usr/bin/$name" command_background="yes" start_stop_daemon_args="--user abos-web-admin:abos-web-admin" depend() { need net } generate_tls_key() { local cert=/etc/atmark/abos_web/tls/cert.pem \ key=/etc/atmark/abos_web/tls/key.pem \ keep_old="" if ! [ -e "$cert" ]; then einfo "ABOS Web certificate missing, generating certificate..." elif [ "$(date +%s)" -lt 1707171804 ]; then # date it too old, NTP was not obtained -- skip checking date return elif ! openssl verify -CAfile "$cert" "$cert" >/dev/null 2>&1; then einfo "ABOS Web certificate is not valid, regenerating it" # keep old key for debug mv "$cert" "$cert.old" mv "$key" "$key.old" keep_old=1 else # certificate is present & valid return fi mkdir -p /etc/atmark/abos_web/tls || return # accept a handful of avahi addresses local altnames="DNS.1:armadillo.local" i for i in $(seq 2 16); do altnames="$altnames, DNS.$i:armadillo-$i.local" done # and localhost and containers 'host' aliases: altnames="$altnames, DNS.17:localhost" altnames="$altnames, DNS.18:host.containers.internal" # .. as well as their IP altnames="$altnames, IP.1:127.0.0.1, IP.2:::1, IP.3:10.88.0.1" openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -x509 \ -nodes -days 3650 -subj '/CN=armadillo.local' \ -addext "subjectAltName = $altnames" -batch \ -out "$cert" -keyout "$key" \ || return chown -R abos-web-admin: /etc/atmark/abos_web/tls persist_file "$cert" "$key" ${keep_old:+"$cert.old" "$key.old"} } declare_avahi_service() { # this file stays in ram, so we do not advertise abos-web # if we do not start it if [ -d /etc/avahi/services ]; then cat > /etc/avahi/services/abos-web.service <<'EOF' <?xml version="1.0" standalone='no'?><!--*-nxml-*--> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h abos-web</name> <service> <type>_https._tcp</type> <port>58080</port> </service> </service-group> EOF fi } start() { # prepare tls self-signed certificate pair if none found generate_tls_key declare_avahi_service default_start } stop_pre() { # remove avahi announce rm -f /etc/avahi/services/abos-web.service }
> すでに入力した場合は initial_setup.desc を直接に編集して abos-web-admin のパスワード変更行を usermod -p '!' abos-web-admin に変更してください
こちらについてなのですが、既にパスワードを空の状態の状態で利用していた場合、以下のようにdescに追加すると挙動が変わってしまい、アクセス拒否のままになってしまうのでしょうか?
私の認識誤りがございましたら、コメントをいただけますと幸いです。
# set abos-web-admin swdesc_command --description "setting passwords" \ "usermod -p '!' abos-web-admin"
どうぞよろしくお願いいたします。
yorikasa
at_dominique.m…
yorikasaさん
> 教えていただいた内容について対応してみたのですが、new_passwordにアクセスが出来ませんでした。
> /etc/shadowと/etc/init.d/abos-webについて確認したところ、内容はあっているように思えます。
頂いた内容をコピーして試しましたが、問題なく abos-web が起動して、接続時にパッスワードを設定できるようになっています。
「new_passwordにアクセスできない」ということことは abos-web が起動して、ページに弾かれてるということでしょうか?
それともサービスが起動してないでしょうか?
前者(起動している)の場合は「/usr/libexec/abos-web/get_pw_hash.sh」と「 curl -w'\n' -k -u :any https://172.16.1.10:58080/api/swu/versions」を実行してみていただけますか?
後者(起動してない)の場合は「ps aux|grep abos-web」と「rc-service abos-web restart」の出力を提供していただけますか?
> こちらについてなのですが、既にパスワードを空の状態の状態で利用していた場合、以下のようにdescに追加すると挙動が変わってしまい、アクセス拒否のままになってしまうのでしょうか?
パスワードが空な状態で実行した場合に影響ないはずですので、desc ファイルに常に実行しても問題ありません。
一般的には確かに「!」は「ロックされてる」パスワードですので、通常のシェルアカウントの場合はロックしてしまうコマンドですが、abos-web-admin のユーザーアカウントは abos-web サービス内で確認していて、以下の様に処理しています:
* パスワードハッシュが ! で始まる場合は /etc/init.d/abos-web サービスで、「one-time cert」がない(= initial setup 実施済み)と起動しないようにしています。こちらの挙動を修正していただいたので、これでも起動するようになります(または今月末のアップデートでABOSWEB_ALLOW_EMPTY_LOGIN の変数で起動できるようになります)
* サービス起動後に接続する際に、パスワードハッシュが「!」の場合に新しいパスワードを設定できるようになります(細かいですがパスワードを設定した後に「passwd -l」等で「ロック」をかけると、パスワードハッシュに ! を先頭に追加しますがハッシュが残ってますので、その場合はログインできません)
> /etc/init.d/abos-webについてですが、他にもABOS上に配置したいファイルがあったので、update_baseos_lpmn.tarに含めて、initial_setup時にinit.dへ配置するようにdescファイルを修正しました。
> initial_setupで配置するのが良くなかったりするのでしょうか?
問題ないと思います。
initial_setup.desc の内容を編集すると管理しづらい(initial setup を一度インストールしたら再びインストールできないので、毎回初期化しないといけない)ので、推奨としては別の desc ファイルで tar 等を展開していただいて、initial setup と組み合わせる時に「mkswu -o initial_setup_and_custom.swu initial_setup.desc custom.desc」等で一つの swu に複数の desc ファイルを組み込む形を推奨しています…が、結果としては同じなので、ファイルを同時に配布する事自体は問題ないと考えています。
よろしくお願いします
yorikasa
at_dominique.m…
2025年6月23日 18時51分
マルティネです。
> ABOS-Webのパスワードをエンドユーザーに入力してもらうようにする方法について質問させていただきます。
>
> ABOS-Webを利用するためには、「3.1.5.1. initial_setup.swu の作成」にもある通り、パスワードの設定が必要かと思います。
> こちら、パスワードの設定なしで出荷しエンドユーザーにパスワードを設定していただくため、「https://:58080/new_password」へアクセスだけは許可できるように設定を変更することはできないのでしょうか?
> パスワードは、取扱説明書等のドキュメントで公開することで、初回にArmadilloを出荷した際に変更していただくよう促すことは可能かと思いますが、パスワードを変更せずに利用する可能性もあるため、出来るなら初期状態でパスワードを設けたくないと思った次第です。
すみません、あまり考えてなかったケースです。
abos-web 単体の動きとしてはパスワードが設定されてないと確かに new_password で設定できるようになりますが、initial setup がインストールされた Armadillo でパスワードがないと abos-web が起動できないようになってますね…
対応は難しくないですが今月のリリースはもうしめてしまって、7月で対応しようと思います。
それまでは
* mkswu --init 時に abos-web のパスワードが問われる時に空のパスワードを入力してください。すでに入力した場合は initial_setup.desc を直接に編集して abos-web-admin のパスワード変更行を
usermod -p '!' abos-web-admin
に変更してください(インストール済みで試したい場合はabos-ctrl certificates reset
で再びインストールできます。空の入力で生成してすでにパスワードを設定した場合はリセットされませんのでその場合は初期化してください。)* /etc/init.d/abos-web の start() 関数を直接に編集して、頭部分の 「
# refuse to start if password has not been set
」if 部分を削除してください:* persist_file /etc/init.d/abos-web で永続化して再起動してみてください。
アップデートでこのファイルが上書きされます。7月のアップデートで変数を使ってテストを追加しますので、その時は
/etc/atmark/abos_web/init.conf
にABOSWEB_ALLOW_EMPTY_LOGIN=1
を記載していただければ、パスワードを設定してなくても起動するようになります。よろしくお願いします。