Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 850634

Summary: acct-user.eclass: RDEPEND on a shell when ACCT_USER_SHELL is set.
Product: Gentoo Linux Reporter: Kobboi <gentoo>
Component: EclassesAssignee: Michał Górny <mgorny>
Status: UNCONFIRMED ---    
Severity: normal CC: floppym, gentoo, hasso.tepper, sam
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
See Also: https://bugs.gentoo.org/show_bug.cgi?id=457768
Whiteboard:
Package list:
Runtime testing required: ---

Description Kobboi 2022-06-08 14:20:00 UTC
Some acct-user/* packages set ACCT_USER_SHELL but do not RDEPEND on the package providing that shell. Maybe not obvious for /bin/sh (or do we have some virtual for shells?) but at least the ones that set the value to /bin/bash should depend on bash.

Might also be considered an issue with the packages in question instead of the eclass, not sure.

I am hitting this when trying to install packages with portage to a directory using ROOT=somedir, which I hope you consider to be a valid use case.

Reproducible: Always
Comment 1 Kobboi 2022-06-08 14:20:57 UTC
>>> Installing (214 of 2904) acct-user/git-0-r2::gentoo to /home/christophe/Projects/gentoo/app-misc/tracker/rootfs/
 * checking 2 files for package collisions
>>> Merging acct-user/git-0-r2 to /home/christophe/Projects/gentoo/app-misc/tracker/rootfs/
 * Adding user 'git' to your system ...
 *  - Userid: 196
 * A shell was specified but it does not exist!
Comment 2 Mike Gilbert gentoo-dev 2022-06-08 20:57:07 UTC
I think it would make more sense for individual user packages to put the relevant package in RDEPEND.

To do it in the eclass, we would need to maintain some kind of mapping from known ACCT_USER_SHELL values to package names.
Comment 3 Mike Gilbert gentoo-dev 2022-06-08 21:03:15 UTC
We have 3 existing values for SHELL in the gentoo repo:

/sbin/nologin (the default)
/bin/bash
/bin/sh

sys-apps/shadow provides /sbin/nologin.
app-shells/bash provides both /bin/bash and /bin/sh.

Both packages are in @system, so an explicit dependency on them is not strictly necessary.
Comment 4 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2022-06-09 04:51:57 UTC
I'm afraid this is not technically feasible within the framework.  ACCT_USER_SHELL is not a pre-inherit variable, and I don't think changing it at this point is really worth the effort, given that the need for any special need here is extremely rare.
Comment 5 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-07-01 07:37:24 UTC
*** Bug 855485 has been marked as a duplicate of this bug. ***
Comment 6 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-07-01 07:38:01 UTC
I think we should probably make it a pre-inherit variable. Having to accumulate hacks for new ROOTs and such is a pain.
Comment 7 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-07-01 07:38:38 UTC
(In reply to Sam James from comment #6)
> I think we should probably make it a pre-inherit variable. Having to
> accumulate hacks for new ROOTs and such is a pain.

... that is, we can change it, fix ebuilds in ::gentoo, and if ebuilds don't work correctly in overlays, then that's the same as plenty of other pre-inherit violations.