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

You are not allowed to run sudo #95

Open
chuacw opened this issue Jul 28, 2024 · 11 comments
Open

You are not allowed to run sudo #95

chuacw opened this issue Jul 28, 2024 · 11 comments
Labels
Help Wanted Contributions welcome here! Issue-Bug Something isn't working

Comments

@chuacw
Copy link

chuacw commented Jul 28, 2024

Sudo for Windows version

1.0.0

Windows build number

10.0.20348.2582

Other Software

No response

Steps to reproduce

On Windows Server 2022, in an Administrator cmd.exe window,

sudo c:\windows\system32\cmd.exe

image

Expected Behavior

Expect cmd to run

Actual Behavior

Got "You are not allowed to run sudo" instead.

@chuacw chuacw added Issue-Bug Something isn't working Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting labels Jul 28, 2024
@zadjii-msft
Copy link
Member

That error message is specific to when the user is not a member of the admins group:

sudo/sudo/src/helpers.rs

Lines 181 to 185 in 5fd6a79

pub fn can_current_user_elevate() -> Result<bool> {
let current_token = current_process_token()?;
let elevation_type: TOKEN_ELEVATION_TYPE = get_token_info(*current_token)?;
Ok(elevation_type == TokenElevationTypeFull || elevation_type == TokenElevationTypeLimited)
}

sudo/sudo/src/main.rs

Lines 343 to 347 in 5fd6a79

if !can_current_user_elevate()? {
// Bail out with an error. main(0) will then print the error message to
// the user to let them know they aren't allowed to run sudo.
return Err(ERROR_REQUEST_REFUSED.into());
}

sudo/sudo/src/main.rs

Lines 311 to 313 in 5fd6a79

_ if hr == HRESULT::from_win32(ERROR_REQUEST_REFUSED.0) => {
eprintln!("{}", r::IDS_SUDO_DISALLOWED.get());
}

Are you either:

  • running with over-the-shoulder elevation (where your local user account isn't an admin, and you're running cmd as another admin user)?
  • Running with UAC entirely disabled?

@zadjii-msft zadjii-msft added the Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something label Jul 31, 2024
@chuacw
Copy link
Author

chuacw commented Aug 1, 2024

As mentioned, this was the "Administrator" account, and it's a member of Administrators.
UAC is totally disabled, set at "Never notify"

@microsoft-github-policy-service microsoft-github-policy-service bot added Needs-Attention The core contributors need to come back around and look at this ASAP. and removed Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something labels Aug 1, 2024
@zadjii-msft
Copy link
Member

UAC is totally disabled, set at "Never notify"

I'm betting that's what it is. I'd guess what's happening here is the same thing Terminal had to deal with - there's a difference between running elevated with a split token, vs the "UAC entirely disabled" scenario. Heck, right above that, there's even:

sudo/sudo/src/helpers.rs

Lines 116 to 124 in 5fd6a79

pub fn is_running_elevated() -> Result<bool> {
// TODO!
// Do the thing Terminal does to see if UAC is entirely disabled:
// Which is basically (from Utils::CanUwpDragDrop)
// const auto elevationType = wil::get_token_information<TOKEN_ELEVATION_TYPE>(processToken.get());
// const auto elevationState = wil::get_token_information<TOKEN_ELEVATION>(processToken.get());
// if (elevationType == TokenElevationTypeDefault && elevationState.TokenIsElevated)
//

Looks like that check doesn't happen till after the can_current_user_elevate one. That should be easy enough for someone to rearrange the ordering of.

@zadjii-msft zadjii-msft added Help Wanted Contributions welcome here! and removed Needs-Attention The core contributors need to come back around and look at this ASAP. Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting labels Aug 1, 2024
@riverar
Copy link

riverar commented Aug 17, 2024

@zadjii-msft Is this a supported OS target?

@zadjii-msft
Copy link
Member

I dunno if I can comment on the big-picture "is UAC disabled supported". I suppose it should be, at least from the perspective of sudo. Seems like it'd be easy enough for us to just shortcut the "can you elevate" and just do the thing (even tho you don't need sudo at all at that point)

@riverar
Copy link

riverar commented Aug 19, 2024

@zadjii-msft Was referring to sudo running on Windows Server 2022. I thought sudo was only targeting newer versions.

@zadjii-msft
Copy link
Member

Oh yea I don't see why not. Sudo might be "targeting" newer versions, but it should work all the way back to, like, windows 7:

All it really needs is ConDrv, and that's been there for a loooong time now. Only reason we haven't backported it to win10 yet is because backporting takes a lot of paperwork to fill out 🤷

@riverar
Copy link

riverar commented Aug 20, 2024

Cool thanks! I was looking to pitch in a fix here but wanted to verify running in this config was supported before I spun my wheels.

@CberYellowstone
Copy link

Is there any progress on this issue?

@trueuto

This comment has been minimized.

@riverar
Copy link

riverar commented Dec 17, 2024

That discussion was had in #23 and is unrelated to this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Help Wanted Contributions welcome here! Issue-Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants