如何为用户组启用 sudo 权限以 apt-get 安装任何内容

如何为用户组启用 sudo 权限以 apt-get 安装任何内容

我想授予组安装软件的权限,而无需输入 root/sudo 密码。我使用的是 Linux Mint 20.3 Cinnamon。

我创建了一个名为“basicsudo”的小组。

我首先输入

$ which apt-get  
/usr/bin/apt-get

然后

sudo visudo

然后我添加了以下行

%basicsudo ALL=(ALL) NOPASSWD: /usr/bin/apt-get install

/etc/sudoers.tmp

[...]
# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

%basicsudo ALL=(ALL) NOPASSWD: /usr/bin/apt-get install
# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Groups and Users我通过使用菜单中的 GUI将组分配给用户。为了检查这个我已经跑了

$ groupname Alice 
Alice, basicsudo

从我的帐户。

当以 Alice 身份登录时,这一点得到确认

$ groups
Alice, basicsudo

但是当尝试以 Alice 身份执行以下行时,我没有成功:

$ sudo apt-get install python3-pip  
[sudo] password for Alice:           
Sorry, user Alice is not allowed to execute '/usr/bin/apt-get    install python3-pip' as root on computername.

很明显,a)系统提示我输入密码,b)尽管输入了密码,但我无法执行它。

执行此操作的正确方法是什么?

答案1

改变:

%basicsudo ALL=(ALL) NOPASSWD: /usr/bin/apt-get install

%basicsudo ALL=(ALL) NOPASSWD: /usr/bin/apt-get install *

man sudoers

命令名是完全限定的文件名,其中可能包含 shell 样式的通配符...简单的文件名允许用户使用他们希望的任何参数运行命令。但是,您也可以指定命令行参数(包括通配符)。或者,您可以指定“”来指示该命令只能在没有命令行参数的情况下运行...

如果 Cmnd 具有关联的命令行参数,则 Cmnd 中的参数必须与用户在命令行上给出的参数完全匹配(或者匹配通配符(如果有))...

所以:

苏多尔斯 意义
%basicsudo ALL= /usr/bin/apt-get "" apt-get不带参数运行
%basicsudo ALL= /usr/bin/apt-get apt-get使用任何参数运行
%basicsudo ALL= /usr/bin/apt-get install apt-get install没有更多参数运行
%basicsudo ALL= /usr/bin/apt-get install * apt-get install使用更多参数运行

相关内容