[pacman-dev] [PATCH] Adding support for sudo when user is not root and root privileges are required

Allan McRae allan at archlinux.org
Sun Mar 22 03:00:31 UTC 2015


On 22/03/15 11:44, Lorenzo Mureu wrote:
> This patch adds support for sudo in pacman.
> Now, when you run some unharmful (informative) command with pacman all
> is fine, but if you try some potentially harmful command (like
> installing or removing packages, or syncing) it stops telling you that
> you must be root.
> 
> While this behaviour is perfectly fine, and that can be what most users
> want, I'd prefere that when root previleges are needed pacman acquired
> them directly with sudo.
> 
> This is accomplished this way:
> 1) A new configuration file option is provided: UseSudo.
>    If it is not set pacman will behave normally, as always (i.e. prints
>    an error)
>    It is set than it will use sudo if needed
> 
> 2) As a direct consequence of 1) the configuration structure defined in
>    config.h and config.c has a new field: usesudo.
>    == 1 means "use sudo"
>    == 0 means "never use sudo"
>    Its value is set according to the configuration file.
>    That is: if user set UseSudo in pacman.conf then usesudo=1 else
>    usesudo=0
> 
> 3) In pacman.c I created a copy of argv (because getopt re-arranges the
>    array) and extended it so that, when passed as a parameter to execvp,
>    it will run as if it was ` exec sudo pacman "$@" ` in bash
>    There ARE some problems, but I could eventually fix them, if needed,
>    if the patch was to be accepted.
> 
>    1) sargv, the "sudo"-execvp-copy of argv is always created and populated.
>       It wouldn't be necessary if getopt didn't re-order argv's elements
>       I could put its allocation and initialization inside an if that
>       checks usesudo, but I don't know if that is OK with pacman's
>       main() flow.
> 
> Anyway, I hope this patch isn't too ugly (this is the first I cooperate
> to a big program). If it is, please tell me and I'll fix it.
> 

Hi,

Thanks for the contribution.  I suggest in future that you always
discuss adding features like this with the main project developers
before preparing a patch.

In this case, I see very limited advantage of this approach over using
an alias.

Allan


More information about the pacman-dev mailing list