如何找到可以由特定用户执行的所有文件(而不是目前的!)如何找到特定的用户(不是当前)
对于当前可执行的文件,我可以像
find /some/start/dir -executable
但现在我想要做的事情是:找到所有用户'josh'可以执行的文件('其他'权限,'用户'权限和'组'权限)。当然,我不知道用户的'josh'密码,所以我不能su'ing。
如何找到可以由特定用户执行的所有文件(而不是目前的!)如何找到特定的用户(不是当前)
对于当前可执行的文件,我可以像
find /some/start/dir -executable
但现在我想要做的事情是:找到所有用户'josh'可以执行的文件('其他'权限,'用户'权限和'组'权限)。当然,我不知道用户的'josh'密码,所以我不能su'ing。
在/ etc/passwd中查找“josh”的用户标识。
然后运行:查找/一些/开始/ DIR型 “F” -uid <ID> -perm 111。
我知道这是一个较老的线程,但我最近必须这样做,它仍然是相关的。
因为我们正在谈论的* nix的权限,以接近这一个繁琐而彻底的方法是看该ID在系统上的成员:
即:
# assuming josh is a member of group "grpname"
find/-user josh -perm -100 # gets files owned by josh & are executable
find/-group grpname -perm -010 # gets files with grp ownership and executable
# via group
# Must be repeated for each group josh is in
find/-perm -001 # gets files executable by any user
注对于josh拥有但归“grpname”组所有的文件,可能会有一些重叠。 sort | uniq会很容易地过滤出来。
不,它只是找到这个UID所拥有的文件,但不能被这个用户执行! – 2011-05-25 17:33:09
你是对的。 -executable只能使用'access()'系统调用来检查当前用户的权限。 我编辑了答案,这个解决方案正在工作。尽管如此,请记住,ACL或其他访问模型仍可能拒绝可执行性(-execute不会继承当前用户的此问题)。 假设您不使用ACL或扩展安全机制,此方法将正常工作。 – Ionic 2011-05-26 12:12:05