Linux find 命令权限被拒绝

Posted

技术标签:

【中文标题】Linux find 命令权限被拒绝【英文标题】:Linux find command permission denied 【发布时间】:2016-09-26 09:36:44 【问题描述】:

我想过滤掉不必要的信息“Permission denied”。 这些是命令“find -type f -name sources.list”的输出

find: './run/lxcfs': Permission denied
find: './run/sudo': Permission denied
find: './run/lvm': Permission denied
find: './tmp/systemd-private-99eef94819d84080adc7df3e60efee5b-systemd-timesyncd.service-HE48k9': Permission denied
find: './lost+found': Permission denied
find: './dev/vboxusb': Permission denied
find: './root': Permission denied
./etc/apt/sources.list
find: './etc/sudoers.d': Permission denied

我尝试使用“! -readable -prune”和上面的find 命令来抑制“权限被拒绝”信息,但它仍然不起作用。

【问题讨论】:

How can I exclude all "permission denied" messages from "find"?的可能重复 【参考方案1】:

以下内容对我有用:

find / -mount -readable -name "<whatever>" -print

这里我只想搜索根文件系统,而不是下降到任何已挂载的文件系统。因此 -mount。

引发错误的问题文件不可读(产生“权限被拒绝”)。因此 - 可读。

其余的很明显。

(注意:在 Ubuntu 16.04 中,/var/lib/lxcfs 中的文件不可读,即使对于 root 也是如此。以上解决了我的问题。)

【讨论】:

【参考方案2】:

这样的东西应该可以工作

find -type d ! -readable -prune -o -type f -name sources.list

【讨论】:

【参考方案3】:

首先你可以在

的帮助下检查文件夹的ACL
getfacl -R /foldername

如果特定文件夹有读取权限,则运行;

find foldername -type f -name sources.list

否则 跳过命令

【讨论】:

【参考方案4】:

试试下面的

find -type f -name sources.list 2>/dev/null

这将重定向stderr 输出流,用于报告所有错误,包括“访问被拒绝”错误,到空设备。

【讨论】:

非常感谢,不重定向流,是否可以绕过那些我没有读取权限的文件夹? 不确定,但是,afaik,不!

以上是关于Linux find 命令权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

仅搜索具有权限的目录 -find (Bash 4.2)

查找中的权限被拒绝:为啥我们需要 2>&1?

Linux命令-find命令

为啥使用CMD命令中的find命令总是拒绝访问?

Linux 错误消息:授予所有权限后权限被拒绝

Linux find 命令从跟目录下查找为啥会没有显示没有权限的错误