* bug#38800: Non-existent setuid programs make "guix system reconfigure" break mid-generation-switch
@ 2019-12-29 20:23 Jakub Kądziołka
2020-01-02 18:45 ` Ludovic Courtès
0 siblings, 1 reply; 2+ messages in thread
From: Jakub Kądziołka @ 2019-12-29 20:23 UTC (permalink / raw)
To: 38800
Steps to reproduce:
0. [IMPORTANT] Make sure you will be able to reconfigure your system
when all setuid binaries stop working (this includes sudo, which
makes this, IMHO, a serious bug).
Namely, either make sure you can log in as root, or keep a "sudo -s"
shell open. The latter is slightly more dangerous in the event of a
power outage.
I would also recommend running "guix pull" in this recovery shell, as
a root login shell will use root's profile, and not your own.
1. Add a non-existant file to your system configuration's
setuid-programs. For example,
(setuid-programs (cons*
#~(string-append #$bash "/bin/enoent")
%setuid-programs))
2. Reconfigure your system.
$ sudo guix system reconfigure /etc/config.scm
Actual behavior:
activating system...
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
building /gnu/store/0ay9wd3wz4x0f5mgmbdfs72w98qvm68z-switch-to-system.scm.drv...
making '/gnu/store/7vwa2xd378fgwrkgwif7pi6ymshsf2jc-system' the current system...
setting up setuid programs in '/run/setuid-programs'...
guix system: error: copy-file: No such file or directory: "/run/setuid-programs/enoent"
$ sudoedit /etc/config.scm
-bash: /run/setuid-programs/sudoedit: No such file or directory
$ ls -l /run/setuid-programs
total 0
Expected behavior: the running system is left untouched.
/run/setuid-programs is still populated with the previous generation's
setuid programs. The error message says that the source of the copy-file
doesn't exist, not the destination. (While the latter is technically
correct, it's utterly unhelpful)
3. [OPTIONAL] Run a rollback.
# guix system roll-back
Expected behavior: /run/setuid-programs gets populated again.
Actual behavior: /run/setuid-programs is still empty.
(Is this a separate bug with roll-back not restoring setuid-programs? No
idea, didn't test)
4. Remove the changes made to the configuration and run reconfigure
again.
# guix system reconfigure /etc/config.scm
Expected & actual behavior: system is back in (AFAIK) a well-defined
state.
Regards,
Jakub Kądziołka
^ permalink raw reply [flat|nested] 2+ messages in thread
* bug#38800: Non-existent setuid programs make "guix system reconfigure" break mid-generation-switch
2019-12-29 20:23 bug#38800: Non-existent setuid programs make "guix system reconfigure" break mid-generation-switch Jakub Kądziołka
@ 2020-01-02 18:45 ` Ludovic Courtès
0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2020-01-02 18:45 UTC (permalink / raw)
To: Jakub Kądziołka; +Cc: 38800-done
Hello,
Jakub Kądziołka <kuba@kadziolka.net> skribis:
> Steps to reproduce:
>
> 0. [IMPORTANT] Make sure you will be able to reconfigure your system
> when all setuid binaries stop working (this includes sudo, which
> makes this, IMHO, a serious bug).
>
> Namely, either make sure you can log in as root, or keep a "sudo -s"
> shell open. The latter is slightly more dangerous in the event of a
> power outage.
>
> I would also recommend running "guix pull" in this recovery shell, as
> a root login shell will use root's profile, and not your own.
> 1. Add a non-existant file to your system configuration's
> setuid-programs. For example,
>
> (setuid-programs (cons*
> #~(string-append #$bash "/bin/enoent")
> %setuid-programs))
>
> 2. Reconfigure your system.
>
> $ sudo guix system reconfigure /etc/config.scm
>
> Actual behavior:
>
> activating system...
> substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> building /gnu/store/0ay9wd3wz4x0f5mgmbdfs72w98qvm68z-switch-to-system.scm.drv...
> making '/gnu/store/7vwa2xd378fgwrkgwif7pi6ymshsf2jc-system' the current system...
> setting up setuid programs in '/run/setuid-programs'...
> guix system: error: copy-file: No such file or directory: "/run/setuid-programs/enoent"
> $ sudoedit /etc/config.scm
> -bash: /run/setuid-programs/sudoedit: No such file or directory
> $ ls -l /run/setuid-programs
> total 0
Good catch, I believe commit 7c4e4bac876190eae90635ba7d7f59892c31bcc6
fixes it.
> 3. [OPTIONAL] Run a rollback.
>
> # guix system roll-back
>
> Expected behavior: /run/setuid-programs gets populated again.
> Actual behavior: /run/setuid-programs is still empty.
>
> (Is this a separate bug with roll-back not restoring setuid-programs? No
> idea, didn't test)
It looks like a separate bug, yes. Could you report it separately?
Thanks!
Ludo’.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-01-02 18:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-29 20:23 bug#38800: Non-existent setuid programs make "guix system reconfigure" break mid-generation-switch Jakub Kądziołka
2020-01-02 18:45 ` Ludovic Courtès
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).