我希望普通用户能够更新locate
Linux 中命令使用的数据库。使用 的先前版本locate
(由 软件包提供mlocate
),我通过在 中添加以下条目来实现此目的/etc/sudoers
:
user ALL = (ALL) NOPASSWD: /usr/bin/updatedb
但是,这不适用于新版本locate
(由包提供plocate
),运行时会打印以下错误updatedb
:
/var/lib/plocate/: Permission denied
允许普通用户运行的最简单的方法是什么updatedb
?
PS:有一个与我类似的问题2012,但它适用于较旧的软件包,slocate
。
答案1
使用updatedb
w/o 的一种方法sudo
是使用doas
。
doas
配置为/etc/doas.conf
。该配置具有简单的结构:
permit nopass <user> as <another user> cmd <command>
例如,我的doas.conf
:
permit nopass pg as root cmd apt
permit nopass pg as root cmd dmesg
permit nopass pg as root cmd mount
permit nopass pg as root cmd umount
permit nopass pg as root cmd updatedb
有了它,我就可以运行命令apt
、、dmesg
和mount
,umount
而updatedb
无需sudo
。CLI 上的命令格式为
doas updatedb
了解更多信息: