首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何按路径对所有者/组进行索引并在以后应用它们?

如何按路径对所有者/组进行索引并在以后应用它们?
EN

Stack Overflow用户
提问于 2012-07-25 00:10:24
回答 2查看 132关注 0票数 0

我在这里的目标是遍历整个文件系统,获取绝对路径、文件所有者和文件组,并将它们存储在一个文件中,以便稍后通过脚本重新应用“已知”文件的所有权。

注意:需要安装'acl‘包。

这是我到目前为止所知道的:

代码语言:javascript
运行
复制
find / -exec ./fileog.sh {} \;

./fileog.sh的内容:

代码语言:javascript
运行
复制
getfacl -R "$2" | awk 'NR==1, NR==3 {print $3}' | paste -s -d ',' >> ./ogindex.txt

问题是,我得到以下错误:

代码语言:javascript
运行
复制
getfacl: : No such file or directory

但如果我这样做,它就会起作用:

代码语言:javascript
运行
复制
find / -exec getfacl -R "$2" {} \;

自己尝试一下:)

代码语言:javascript
运行
复制
getfacl -R ./some.file | awk 'NR==1, NR==3 {print $3}' | paste -s -d ','

我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-25 00:42:05

您不应该同时使用findgetfacl -R,或者应该更加谨慎地使用它们。

find已经递归了,所以你会以这种方式多次访问每个文件。

我会这样解决这个问题:

代码语言:javascript
运行
复制
find / -exec stat -c '%n,%U,%G' {} \; >> ./ogindex.txt

如果您需要剥离前导/,这将是一个很小的后处理。

注意:假设stat支持通过-c进行格式化;并不是所有版本的stat都是相同的。

另外,我强烈建议您不要以这种格式存储此信息。如果文件名中包含逗号,会发生什么情况?如果你使用user,group,filename,它会更安全,因为你可以把第二个逗号之后的所有东西都当作文件名。当然,这仍然容易受到精心编制的文件名的攻击。

票数 0
EN

Stack Overflow用户

发布于 2012-07-25 00:17:53

find中运行fileog.sh,只给他一个参数(filename,{}):

代码语言:javascript
运行
复制
-exec ./fileog.sh {} \;

可以在脚本中以$1而不是$2的身份访问此文件名。

您必须在脚本中编写$1而不是$2,或者必须将缺少的参数添加到-exec中的te脚本。

ogeindex.txt片段

代码语言:javascript
运行
复制
etc,root,root
etc/ucf.conf,root,root
etc/gshadow,root,shadow
etc/sudoers.d,root,root
etc/sudoers.d/README,root,root
etc/motd.tail,root,root
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11634980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档