Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nixos/security: don't use sudo.extraRules for wheel rule #58396

Conversation

cmacrae
Copy link
Contributor

@cmacrae cmacrae commented Mar 26, 2019

Motivation for this change

Using security.sudo.extraRules to generate the resulting sudo
expression for the 'wheel' group causes problems with other
extraRules definitions for the 'wheel' group (see #58276)

Things done

These changes implement the same result, but ensure that the sudo
expression for the 'wheel' group is placed before any extraRules the
user may define.

  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Assured whether relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@@ -171,12 +171,6 @@ in

config = mkIf cfg.enable {

security.sudo.extraRules = [
{ groups = [ "wheel" ];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a [ (mkBefore { groups = ... }) ] might work

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess it should be mkBefore [ ... ], that is, mkBefore for the whole list. At least when I played around with these a bit, I needed to use it like that - thanks to an advise at IRC from @jD91mZM2.

@davidtwco
Copy link
Member

Have there been any updates on this? I just ran into the issue that this solves and it's a pretty confusing problem until you stumble upon this. For my purposes, security.sudo.extraRules doesn't work without this.

@aanderse
Copy link
Member

ping (triage)

@cmacrae cmacrae force-pushed the nixos-unstable/security_sudo_extraRules_fix branch 2 times, most recently from 59c154c to 23487c3 Compare January 15, 2020 11:28
@cmacrae
Copy link
Contributor Author

cmacrae commented Jan 15, 2020

My sincere apologies for ghosting on this PR, people! 😬
I forgot I'd had this open. I've rebased and pushed a change to use mkBefore instead.

I think it does need to be within the list, otherwise the resulting expression from the mkBefore will just be an attrset, but extraRules should be a list.

EDIT: Hmm, perhaps not (given the error from the hydra build). I'll try and get this working nicely

@jluttine
Copy link
Member

@cmacrae So you are sure it needs to be like:

security.sudo.extraRules = [
    (mkBefore {
        ...
    })
];

instead of

security.sudo.extraRules = mkBefore [
    {
        ...
    }
];

?

Can't remember the details anymore and I'm not familiar with these, but when I was trying to make these work, I needed to use the latter one, otherwise there was no effect. So that's why I wanted to double-check.

@cmacrae
Copy link
Contributor Author

cmacrae commented Jan 15, 2020

Thanks @jluttine! You're absolutely right 👍 Just testing this now

Using security.sudo.extraRules to generate the resulting sudo
expression for the 'wheel' group causes problems with other
'extraRules' definitions for the 'wheel' group (see NixOS#58276)

These changes implement the same result, but ensure that the sudo
expression for the 'wheel' group is placed before any 'extraRules' the
user may define.
@cmacrae cmacrae force-pushed the nixos-unstable/security_sudo_extraRules_fix branch from 23487c3 to 6870624 Compare January 15, 2020 11:53
@jtojnar
Copy link
Contributor

jtojnar commented Jan 20, 2020

Why do not the tests pick this up?

@stale
Copy link

stale bot commented Jul 18, 2020

Hello, I'm a bot and I thank you in the name of the community for your contributions.

Nixpkgs is a busy repository, and unfortunately sometimes PRs get left behind for too long. Nevertheless, we'd like to help committers reach the PRs that are still important. This PR has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.

If this is still important to you and you'd like to remove the stale label, we ask that you leave a comment. Your comment can be as simple as "still important to me". But there's a bit more you can do:

If you received an approval by an unprivileged maintainer and you are just waiting for a merge, you can @ mention someone with merge permissions and ask them to help. You might be able to find someone relevant by using Git blame on the relevant files, or via GitHub's web interface. You can see if someone's a member of the nixpkgs-committers team, by hovering with the mouse over their username on the web interface, or by searching them directly on the list.

If your PR wasn't reviewed at all, it might help to find someone who's perhaps a user of the package or module you are changing, or alternatively, ask once more for a review by the maintainer of the package/module this is about. If you don't know any, you can use Git blame on the relevant files, or GitHub's web interface to find someone who touched the relevant files in the past.

If your PR has had reviews and nevertheless got stale, make sure you've responded to all of the reviewer's requests / questions. Usually when PR authors show responsibility and dedication, reviewers (privileged or not) show dedication as well. If you've pushed a change, it's possible the reviewer wasn't notified about your push via email, so you can always officially request them for a review, or just @ mention them and say you've addressed their comments.

Lastly, you can always ask for help at our Discourse Forum, or more specifically, at this thread or at #nixos' IRC channel.

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Jul 18, 2020
@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Oct 3, 2020
@stale
Copy link

stale bot commented Jun 7, 2021

I marked this as stale due to inactivity. → More info

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Jun 7, 2021
@mhuesch
Copy link

mhuesch commented Aug 27, 2021

hi, is there some way I can help get this across the finish line?

@aanderse
Copy link
Member

@mhuesch sounds like there is an unresolved question yet:

Why do not the tests pick this up?

@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Aug 31, 2021
@stale
Copy link

stale bot commented Apr 18, 2022

I marked this as stale due to inactivity. → More info

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Apr 18, 2022
@AkechiShiro
Copy link
Contributor

AkechiShiro commented Sep 12, 2022

@mhuesch I'd like to help pick this up too, I'll be looking at the tests and hopefully PR a fix, and link this issue.

@mhuesch
Copy link

mhuesch commented Apr 17, 2023

it seems possible that this has been fixed independently / through some other mechanism? see 2 confirmations on #58276

@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Apr 17, 2023
@fpletz fpletz closed this Aug 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet