Skip to content

fix(macos): sudo が使えないユーザーではコンピュータ名・ユーザーアイコン設定をスキップする - #63

Merged
msageha merged 1 commit into
mainfrom
fix/skip-sudo-steps-for-non-admin
Aug 5, 2026
Merged

fix(macos): sudo が使えないユーザーではコンピュータ名・ユーザーアイコン設定をスキップする#63
msageha merged 1 commit into
mainfrom
fix/skip-sudo-steps-for-non-admin

Conversation

@msageha

@msageha msageha commented Aug 5, 2026

Copy link
Copy Markdown
Owner

概要

sudo を持たないユーザー (CI runner 等) で one-shot init を実行すると、system_settings.shuser_icon() が dscl への書き込みを無条件に sudo で実行するため、Password: プロンプトで失敗していた。computer_name() も (現状は COMPUTER_NAME 未設定で偶然スキップされているが) 設定すると同じ経路で失敗する。

sudo が使えない場合はこれらの手順を警告付きでスキップし、apply を完走できるようにする。どちらも CI runner には不要な cosmetic 設定のため、スキップによる実害はない。

変更内容

  • install/macos/system_settings.shhas_privilege() を追加 (debian/ubuntu の apt.sh / apt_gui.sh と同名・同役割)。root 短絡 + admin グループ所属 (macOS 既定の sudoers 対象) + sudo -n true で判定する。Linux 側と違い sudo -v を使わないのは、非 sudoer でも TTY にパスワードプロンプトが出てしまうため
  • computer_name() / user_icon() は冪等スキップ判定の後・sudo 実行の前に has_privilege を判定し、偽なら YELLOW の警告を stderr に出して return 0
  • tests/install/macos/system_settings.bats を新規追加 (4 件: 権限なし → skip して sudo を呼ばない / 権限あり → 従来どおり設定する、を computer_name / user_icon 双方で検証)

関連 Issue

なし (#61#62 revert の経緯の続き。brew upgrade の cask 問題は git-credential-manager のアンインストールで解消済みのため、本 PR は system_settings 側のみ対応)

動作確認

  • mise run pre-commit が通った
  • mise run test が通った (46 ok / 0 failures、新規 4 件含む)
  • mise run dry-run で意図した差分のみであることを確認した (install/ 配下のみの変更のため apply 対象に差分なし)

チェックリスト

  • テストを追加・更新した
  • ドキュメントを更新した (対象なし)
  • 破壊的変更が含まれる場合、その影響範囲を明記した

補足情報

user_icon() は dscl への書き込みを無条件に sudo で実行するため、sudoers に
居ないユーザー (CI runner 等) で one-shot init を実行するとパスワード
プロンプトで失敗していた。computer_name() も COMPUTER_NAME を設定すると
同じ経路で失敗する。debian/ubuntu 側の has_privilege に倣った判定を追加し、
sudo が使えない場合は警告を出してスキップする。macOS 版は sudo -v を使わず
admin グループ所属 + sudo -n で判定する (非 sudoer への TTY プロンプトを
避けるため)。
@msageha
msageha enabled auto-merge (squash) August 5, 2026 11:13
@msageha
msageha merged commit b732ec2 into main Aug 5, 2026
8 checks passed
@msageha
msageha deleted the fix/skip-sudo-steps-for-non-admin branch August 5, 2026 11:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant