但我的问题是:系统如何知道这一点?我已经做好了
sudo chmod o-r /var/run/utmp
sudo chmod o-r /var/log/wtmp
我验证了我的用户无法运行w
或who
不再:命令输出为空,因为 utmp 和 wtmp 中的读取权限被拒绝。
那么系统是如何知道这一点的呢?信息泄露在哪里?
答案1
有关活动会话和登录用户的信息由系统登录(或者埃洛金德在非 systemd 系统上),任何用户都可以通过以下方式获取信息DBus接口:
$ busctl call org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ListUsers
a(uso) 2 1000 "jenkins" "/org/freedesktop/login1/user/_1000" 22437 "vtrefny" "/org/freedesktop/login1/user/_22437"
(来自具有两个用户且具有活动会话的系统的示例)。
该信息由 systemd 保存,因此更改w
/的权限who
不会“禁用”此信息。 DBus API 的某些部分是通过 polkit 保护但这些只是像关闭这样的“活动”操作,有关活动会话的信息对每个人都是公开的。