2011-05-24 45 views
4

如何找到可以由特定用户执行的所有文件(而不是目前的!)如何找到特定的用户(不是当前)

对于当前可执行的文件,我可以像

find /some/start/dir -executable 

但现在我想要做的事情是:找到所有用户'josh'可以执行的文件('其他'权限,'用户'权限和'组'权限)。当然,我不知道用户的'josh'密码,所以我不能su'ing。

回答

3

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

然后运行:查找/一些/开始/ DIR型 “F” -uid <ID> -perm 111

+0

不,它只是找到这个UID所拥有的文件,但不能被这个用户执行! – 2011-05-25 17:33:09

+0

你是对的。 -executable只能使用'access()'系统调用来检查当前用户的权限。 我编辑了答案,这个解决方案正在工作。尽管如此,请记住,ACL或其他访问模型仍可能拒绝可执行性(-execute不会继承当前用户的此问题)。 假设您不使用ACL或扩展安全机制,此方法将正常工作。 – Ionic 2011-05-26 12:12:05

0

我知道这是一个较老的线程,但我最近必须这样做,它仍然是相关的。

因为我们正在谈论的* 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会很容易地过滤出来。

相关问题