![如何列出当前用户可以访问的文件?](https://linux22.com/image/1045647/%E5%A6%82%E4%BD%95%E5%88%97%E5%87%BA%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
出于安全审计的目的,我想检查我的系统的用户,并确保他们没有超过我希望的文件系统访问权限。
我想要一些以ls -l
类似格式输出的内容,但仅针对一个用户(及其组):
r-x /var
r-x /var/spool
r-x /var/spool/cron
--T /var/spool/cron/atjobs
一旦我获得了经过审查的用户列表应该能够看到,我可以为其他用户再次生成此文件,并查看它们有何不同。有意义吗?
我想强调的是,这需要评价当前用户的自然权限、组权限甚至 ACL 权限。本质上是测试每个阶段。我不确定我是否关心粘性位和类似的东西,drwx
但我们会看看这会走向何方 :)
答案1
到目前为止我所能构建的最好的东西是使用 bash 的测试:
find . -exec bash -c 'd=-;r=-;w=-;x=-; [[ -d {} ]] && d=d; [[ -r {} ]] && r=r; [[ -w {} ]] && w=w; [[ -x {} ]] && x=x; echo "$d$r$w$x {}"' \;
输出示例:
drwx ./dlls/mscoree/tests
-r-- ./dlls/mscoree/tests/metahost.o
-rw- ./dlls/mscoree/tests/metahost.c
-r-x ./dlls/mscoree/tests/mscoree_test-stripped.exe.so
-r-- ./dlls/mscoree/tests/testlist.c
-rw- ./dlls/mscoree/tests/Makefile.in
-r-- ./dlls/mscoree/tests/debugging.o