Remove the last first-run sudoers grant the installer wrote
install/post-install/first-run-mode.sh shipped on quattro between53e26115and75cb4f71, and its final body writes `Cmnd_Alias FIRST_RUN_CLEANUP = /usr/bin/rm -f /etc/sudoers.d/first-run, /bin/rm -f /etc/sudoers.d/first-run`. The predicate's case listed only the two `/bin/rm` spellings, so that line fell through to the user-spec test, failed it, and the whole file read as hand-written. The migration then left it alone and wrote its machine marker, which is permanent: on an offline install from that window the account keeps passwordless `/usr/bin/systemctl` for good, and nothing looks at the file again. Adding the string is the whole fix. The test now carries all nine bodies the installer wrote across both locations rather than the eight from install/preflight. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-Authored-By: Codex XHigh <codex@openai.com>
This commit is contained in:
co-authored by
Claude Opus 5
Codex XHigh
parent
96404be37b
commit
e3b566bae8
@@ -109,7 +109,9 @@ sudoers_hash_is_active() {
|
||||
# touch the network. Any failure in between leaves the grant on the machine with
|
||||
# nothing left to retry it.
|
||||
#
|
||||
# The installer rewrote this file eight times, and only the last four carry both
|
||||
# The installer rewrote this file nine times across two locations -- the last two
|
||||
# bodies came from install/post-install/first-run-mode.sh, whose cleanup alias
|
||||
# names /usr/bin/rm as well as /bin/rm -- and only the later ones carry both
|
||||
# Cmnd_Alias lines, so keying on those would walk past the earlier ones. Instead
|
||||
# require every active line to be one the installer itself emitted, plus at least
|
||||
# one line that is unmistakably this grant: its own self-cleanup. One
|
||||
@@ -128,7 +130,8 @@ first_run_sudoers_is_generated() {
|
||||
continue
|
||||
;;
|
||||
"Cmnd_Alias FIRST_RUN_CLEANUP = /bin/rm -f /etc/sudoers.d/first-run" | \
|
||||
"Cmnd_Alias FIRST_RUN_CLEANUP = /bin/rm -f /etc/sudoers.d/first-run, /bin/rm -f /etc/sudoers.d/99-omarchy-installer-reboot")
|
||||
"Cmnd_Alias FIRST_RUN_CLEANUP = /bin/rm -f /etc/sudoers.d/first-run, /bin/rm -f /etc/sudoers.d/99-omarchy-installer-reboot" | \
|
||||
"Cmnd_Alias FIRST_RUN_CLEANUP = /usr/bin/rm -f /etc/sudoers.d/first-run, /bin/rm -f /etc/sudoers.d/first-run")
|
||||
seen_marker=1
|
||||
continue
|
||||
;;
|
||||
|
||||
@@ -115,9 +115,12 @@ WantedBy=multi-user.target
|
||||
EOF
|
||||
}
|
||||
|
||||
# Every distinct body install/preflight/first-run-mode.sh wrote across its eight
|
||||
# rewrites, oldest first. Only the last four carry both Cmnd_Alias lines, so a
|
||||
# predicate keyed on those would leave the first four grants on disk.
|
||||
# Every distinct body the first-run-mode installer wrote across its nine rewrites,
|
||||
# oldest first. Only the later ones carry both Cmnd_Alias lines, so a predicate
|
||||
# keyed on those would leave the earlier grants on disk. The last body is the one
|
||||
# install/post-install/first-run-mode.sh shipped until it was retired: its cleanup
|
||||
# alias names /usr/bin/rm as well as /bin/rm, and it still grants passwordless
|
||||
# /usr/bin/systemctl.
|
||||
first_run_variants=(
|
||||
'installer ALL=(ALL) NOPASSWD: /usr/bin/ufw
|
||||
installer ALL=(ALL) NOPASSWD: /usr/bin/ufw-docker
|
||||
@@ -166,6 +169,14 @@ installer ALL=(ALL) NOPASSWD: /usr/bin/ufw
|
||||
installer ALL=(ALL) NOPASSWD: /usr/bin/ufw-docker
|
||||
installer ALL=(ALL) NOPASSWD: /usr/bin/gtk-update-icon-cache
|
||||
installer ALL=(ALL) NOPASSWD: SYMLINK_RESOLVED
|
||||
installer ALL=(ALL) NOPASSWD: FIRST_RUN_CLEANUP'
|
||||
'Cmnd_Alias FIRST_RUN_CLEANUP = /usr/bin/rm -f /etc/sudoers.d/first-run, /bin/rm -f /etc/sudoers.d/first-run
|
||||
Cmnd_Alias SYMLINK_RESOLVED = /usr/bin/ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
||||
installer ALL=(ALL) NOPASSWD: /usr/bin/systemctl
|
||||
installer ALL=(ALL) NOPASSWD: /usr/bin/ufw
|
||||
installer ALL=(ALL) NOPASSWD: /usr/bin/ufw-docker
|
||||
installer ALL=(ALL) NOPASSWD: /usr/bin/gtk-update-icon-cache
|
||||
installer ALL=(ALL) NOPASSWD: SYMLINK_RESOLVED
|
||||
installer ALL=(ALL) NOPASSWD: FIRST_RUN_CLEANUP'
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user