Hello fellow lemmings

I am a long-time i3 user and have decided to switch to Sway. I have encountered a weird error which has left me utterly bamboozled.

I am using Ubuntu 24.04 which has gone from 20.04 -> 22.04 -> 24.04. It has Ubuntu-Gnome, i3 and Sway currently installed.

The issue

The error that I’m facing is when I’m using Sway, I simply don’t have sudo access.

This is what the error looks like

$ sudo visudo
[sudo] password for xavier666:
Sorry, user xavier666 is not allowed to execute '/usr/sbin/visudo' as root on <HOSTNAME>.

When I switch back to i3, my permissions are fine for the same user. I have not done any crazy modifications to the sudoer’s file as far as I can remember.

PS: I have added a command to no-sudo xavier666 ALL = NOPASSWD: /usr/bin/brightnessctl

The “fix”

I temporarily solved it by adding xavier666 ALL=(ALL:ALL) ALL to the sudoer’s file.

IMO, I think this should not be required. I don’t remember ever adding the default user to the file for all the installations that I have done. (But this is the first time I’ve installed Sway)

Logs/Outputs

Running sudo -l without the fix (on Sway)

Matching Defaults entries for xavier666 on <HOSTNAME>:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User xavier666 may run the following commands on <HOSTNAME>:
    (root) NOPASSWD: /usr/bin/brightnessctl

When I run the same command on i3, i get this (ALL : ALL) ALL extra line in the output. And when I run sudo -l with my fix on Sway, (ALL : ALL) ALL is present and the permission issue is fixed.

What is causing Sway to remove the root permission for the user?

Note: I’m just asking for the standard sudo behaviour. I’m not trying to run GUI applications as root.

  • BaumGeist@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    1 day ago

    (Why are there % signs)

    Good question, here’s the explanation man sudoers offers:

    The definitions of what constitutes a valid alias member follow.
    
           User_List ::= User |
                         User ',' User_List
    
           User ::= '!'* user name |
                    '!'* #user-ID |
                    '!'* %group |
                    '!'* %#group-ID |
                    '!'* +netgroup |
                    '!'* %:nonunix_group |
                    '!'* %:#nonunix_gid |
                    '!'* User_Alias
    
           A User_List is made up of one or more user names, user-IDs
           (prefixed with ‘#’), system group names and IDs (prefixed with%and%#’ respectively), netgroups (prefixed with+’), non-Unix
           group names and IDs (prefixed with%:’ and%:#’ respectively),
           and User_Aliases. Each list item may be prefixed with zero or more
           ‘!’ operators.  An odd number of!’ operators negate the value of
           the item; an even number just cancel each other out.  User
           netgroups are matched using the user and domain members only; the
           host member is not used when matching.
    

    TL;DR % lets the system know the following word is a group name, instead of a username