Armadilloフォーラム

USBメモリを用いたSWUpdateによりatmarkユーザーおよびグループが削除できない

yorikasa

2024年5月8日 22時11分

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

現在atmarkユーザーおよびグループを削除するようにinitial_setup.descファイルを用意し、
未初期化のArmadilloに対してSWUpdateを実施しatmarkユーザーをロックではなく削除できるか試しております。
想定では、testuserが新たに作成されatmarkが削除されると思っていたのですが
再起動後にatmarkのユーザーとグループが戻っているように見えます。

確認の手順としては下記の通りです。

手順1.以下のようにdescファイルに対してtestuserの追加とatmarkの削除を記載する。

# user(testuser) create
swdesc_command --extra-os "groupadd testuser"
swdesc_command --extra-os "useradd -m -g testuser testuser"
swdesc_command --description "setting passwords" \
        "usermod -p '"'<パスワードのハッシュ値>'"' testuser"
 
# user(atmark) delete
swdesc_command --extra-os "userdel -f atmark"
 
# Fix account
swdesc_command --extra-os "persist_file /etc/shadow /etc/passwd /etc/group"

手順2.initial_setup.descを利用してswuファイルを作成する。
手順3.swuファイルを01_initial_setup.swuというファイル名でUSBメモリにコピーする。
手順4.「tail -f /var/log/messages」でアップデート内容をモニタする。(※この時COMで接続して操作しておりました)
手順5.手順3で用意したUSBメモリをArmadilloに接続する。
手順6. /var/log/messagesにエラーが発生せずに再起動することを確認する。

下記は再起動後にpersist_fileで保存したファイルの内容を表示した結果(抜粋)となります。

armadillo:~# cat /etc/group
root:x:0:root
~省略~
testuser:x:1001:
atmark:x:1000:★消えているはずの内容
 
armadillo:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/ash
~省略~
testuser:x:1001:1001::/home/lpmn:/bin/ash
atmark:x:1000:1000::/home/atmark:/bin/ash★消えているはずの内容
 
armadillo:~# cat /etc/shadow/etc/passwd
root:<パスワードのハッシュ値>:11004:0:::::
~省略~
testuser:<パスワードのハッシュ値>:11004::::::
atmark:!:11004::::::★消えているはずの内容

testuserの下にatmarkがあるため一度削除はされているものと想像しているのですが
swupdateによるatmarkの削除は出来ないのでしょうか?
もしくは、私のdescファイルの記載に不備がございますでしょうか?

~補足~

上記の動作を何度か確認するために下記のリンク先にある内容を参考に初期化済みのArmadilloに対して
initial_setup.swuをインストールできるよう変更して確認も行ってみましたがが結果は変わらずでした。
なお、変更する際は「testuser」を削除した状態で「persist_file /etc/shadow /etc/passwd /etc/group」を実行し再起動を行ってから手順4以降を試しております。

参考URL: https://armadillo.atmark-techno.com/blog/615/11778

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

コメント

at_dominique.m…

2024年5月9日 9時20分

yorikasaさん

お世話になっています、
マルティネです。

> 現在atmarkユーザーおよびグループを削除するようにinitial_setup.descファイルを用意し、
> 未初期化のArmadilloに対してSWUpdateを実施しatmarkユーザーをロックではなく削除できるか試しております。
> 想定では、testuserが新たに作成されatmarkが削除されると思っていたのですが
> 再起動後にatmarkのユーザーとグループが戻っているように見えます。

とても分かりにくいことになって申し訳ございません。この動作は不思議に思われますが想定どおりです:
base_os の更新の場合は全く関係のない /etc/passwd を展開しますので、追加されたユーザーが消えないために swupdate の最後の処理としてシステムの /etc/passwd(または shadow, group) から、展開された /etc/passwd に存在しないユーザーをコピーする仕組みがあります。

ロックされているユーザーはシステムに影響ないはずなので、それで問題ないと考えていましたが、改めて説明するとこの動作は base_os の展開の時以外に不要なので、今後のアップデートで extra_os.* の更新でユーザーを再追加しないように変更して、今回の desc ファイルが正しく動作するようにしようと思います(少し時間をいただきますがおそらく6月のアップデートに入ると思います)。

それまでにユーザーを削除したい場合は、汚いですが、`swdesc_command_nochroot` で実行中のシステムからもユーザーを削除するとコピー先がなくなってちゃんと削除されます(現在のバージョンでは両方の userdel が必要です):

$ cat userdel.desc 
swdesc_option version=1
# ユーザー削除
swdesc_command --extra-os 'userdel atmark'
# mkswu の修正までに現在実行中のシステムからも削除+永続化
swdesc_command_nochroot --extra-os 'userdel atmark; persist_file /etc/passwd /etc/shadow /etc/group'

この二つのコマンドを initial_setup に合わせても問題ないはずです。

お手数をお掛けしました、

よろしくお願いします。

マルティネさん

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

> とても分かりにくいことになって申し訳ございません。この動作は不思議に思われますが想定どおりです:
> base_os の更新の場合は全く関係のない /etc/passwd を展開しますので、追加されたユーザーが消えないために swupdate の最後の処理としてシステムの /etc/passwd(または shadow, group) から、展開された /etc/passwd に存在しないユーザーをコピーする仕組みがあります。
>
> ロックされているユーザーはシステムに影響ないはずなので、それで問題ないと考えていましたが、改めて説明するとこの動作は base_os の展開の時以外に不要なので、今後のアップデートで extra_os.* の更新でユーザーを再追加しないように変更して、今回の desc ファイルが正しく動作するようにしようと思います(少し時間をいただきますがおそらく6月のアップデートに入ると思います)。

上記についてありがとうございました。
正常な動作ということで承知しました。
アップデートについては、心待ちにしております。

> それまでにユーザーを削除したい場合は、汚いですが、`swdesc_command_nochroot` で実行中のシステムからもユーザーを削除するとコピー先がなくなってちゃんと削除されます(現在のバージョンでは両方の userdel が必要です):
>

> $ cat userdel.desc 
> swdesc_option version=1
> # ユーザー削除
> swdesc_command --extra-os 'userdel atmark'
> # mkswu の修正までに現在実行中のシステムからも削除+永続化
> swdesc_command_nochroot --extra-os 'userdel atmark; persist_file /etc/passwd /etc/shadow /etc/group'
> 

>
> この二つのコマンドを initial_setup に合わせても問題ないはずです。
>

こちらについてもありがとうございました。
確認してみます。