是否可以通过向用户授予执行 apt/apt-get 的权限,在没有 root 用户的情况下运行 apt 内务管理命令( apt-get autoremove
、 )。apt-get autoclean
看来你必须使用 root/sudo 来执行这些命令,否则会失败:
$ sudo cat /etc/sudoers
...
%sudo ALL=(ALL:ALL) ALL
%wheel ALL=(ALL) NOPASSWD: ALL
user ALL=(ALL:ALL) ALL
user ALL= (ALL) NOPASSWD: /usr/bin/apt-get
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
user ALL=(ALL) NOPASSWD: ALL
$ /usr/bin/apt-get autoremove
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
答案1
是的,大多数apt-get
命令需要以 root 身份运行,包括autoremove
和autoclean
。根据您的配置,这意味着
sudo apt-get autoremove
请注意,允许用户以 root 身份运行任何apt-get
命令实际上与授予他们完全 root 访问权限相同。 (用户可以准备一个软件包并安装它;该软件包可以包含用户想要的任何内容,包括 root-suid shell。另一个选择是安排dpkg
遇到配置文件冲突,在这种情况下可以要求打开一个root shell。)为了避免这种风险,您应该在以下位置完整指定命令sudoers
:
user ALL= (ALL) NOPASSWD: /usr/bin/apt-get autoremove
user ALL= (ALL) NOPASSWD: /usr/bin/apt-get autoclean
至少对于autoclean
,您可能会发现设置 cron 作业很有用。