如何查找所有特定用户(而不是当前用户)可执行的所有文件

6

如何查找所有特定用户(非当前用户)可以执行的文件

对于当前用户,我可以这样做

find /some/start/dir -executable

现在我想做的事情是:查找所有用户“josh”可以执行的文件(通过“其他”权限,“用户”权限和“组”权限)。当然,我不知道用户“josh”的密码,因此我无法 su 到该用户。

2个回答

3

在/etc/passwd中查找“josh”的用户ID。

然后运行:find /some/start/dir -type "f" -uid <ID> -perm 111


不,它只会查找由此UID拥有但此用户无法执行的文件! - Alex G.P.
你是对的。-executable 只能检查当前用户的权限,因为它使用了 access() 系统调用。我编辑了答案,这个解决方案可行。但请记住,ACL 或其他访问模型可能仍会拒绝可执行性(-execute 不会继承此问题)。假设您不使用 ACL 或扩展安全机制,这种方法将运作良好。 - Ionic

1

我知道这是一个旧的帖子,但最近我必须这样做,而且它仍然相关。

既然我们谈论的是*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命令可以很容易地过滤掉这些文件。

谢谢Tim,这真的为我节省了很多时间。很难找到如此完整的答案。感谢! - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接