这可能会被认为是一个愚蠢的问题,因为系统上的每个文件和目录都可以并且将有权阻止普通用户查看各种文件 - 但为了增加安全性和上下文太长而无法进入:可以移动有多个数据库针对不同的用户群体?或者每个用户都如此?
目标是限制对普通用户甚至不应该知道存在的文件的知识或访问 - 但 root 和 sudo 帐户仍然应该能够使用 root mlocate 数据库查看系统中的所有内容。
我之前只是限制了对 mlocate 数据库的读取访问,但这在当前系统上不是一个选项。如果有一种方法可以为多个安装进行线程迁移,我只需要两个,并且没有存储限制,仅供参考。谢谢,
答案1
mlocate
默认情况下,仅显示用户具有访问权限的文件。至少在我的 CentOS 7 版本上:
例如:
% rpm -qf /usr/bin/locate
mlocate-0.26-8.el7.x86_64
% locate /root/.ssh
% sudo locate /root/.ssh
/root/.ssh
/root/.ssh/authorized_keys
/root/.ssh/known_hosts
这是有效的,因为locate
setgid 并且数据文件被锁定到该组:
% ls -l /usr/bin/locate
-rwx--s--x 1 root slocate 40520 Apr 10 2018 /usr/bin/locate
% sudo ls -al /var/lib/mlocate
total 142820
drwxr-x--- 2 root slocate 4096 Feb 23 03:38 .
drwxr-xr-x 45 root root 4096 Dec 6 2018 ..
-rw-r----- 1 root slocate 146233302 Feb 23 03:38 mlocate.db
事实上,普通用户甚至无法找到数据库文件:-)
% locate '/var/*mlocate*'
/var/lib/mlocate
% sudo locate '/var/*mlocate*'
/var/lib/mlocate
/var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db.khYLWG
setgid 选项也可以在 FreeBSD 上运行。