如何通过SSH检查文件权限

开始我对这个很新,所以请原谅我,如果这是非常基本的,或者我听起来太不了解。

我想检查我的VPS上的特定目录中的所有文件,以确保文件是644和目录是755. FTP是不可能的,因为有太多的文件/目录。 SSH似乎是最合理的select,但在我去chmod权限之前,我想看看我将改变。 有什么方法可以find并显示不符合这个标准的文件/目录吗?

提前感谢任何见解。

作为David Spillett的回答的一个改进,如何使用单个查找命令? 我认为它比所有的pipe道都干净,并且调用了grep。 此外,它削减了一些可能爆炸的边缘情况。

find . -type f ! -perm 644 find . -type f ! -perm 644应该find每个没有-rw-r -r–权限的文件。 对于目录,你可以使用find . -type d ! -perm 755 find . -type d ! -perm 755 find . -type d ! -perm 755

一旦你满意你所看到的,你甚至可以将chmod结合到相同的命令中:

find . -type f ! -perm 644 -exec chmod 644 {} \;
find . -type d ! -perm 755 -exec chmod 755 {} \;

 find . -type f | xargs ls -l | grep -v rw-r--r-- 

“find当前目录中的所有文件,传递给”ls -l“列出它们的详细信息,并且扫描所有行的ls输出(grep否定匹配的-v选项)包含”rw-r -r – “和目录:

 find . -type d | xargs ls -l | grep -v drw-r--r-- 

如果你想扫描另一个目录replace“。” 与它,如:

 find /path/to/directory -type f | xargs ls -l | grep -v rw-r--r-- 

如果某些文件/目录名称可能包含空格,可以使用find和xargs中的“使用0分隔string”选项,以避免错误:

 find . -type f -print0 | xargs -0 ls -l | grep -v rw-r--r-- 

另外,如果你想把它们列为完整性检查,你可以从grep中删除-v选项来find匹配的文件/目录。

使用find也会默认扫描子目录。 要扫描一个目录而不是子目录,只需要通过grep来输出ls -l ,而不是使用findxargs

当你运行chmod请记住你可以指定-v选项,这样它会列出它所做的事情,并且在执行操作时不会改变 – 这对于确保你已经给出正确的命令是有用的。

以下命令应该为您提供指定目录中所有文件的数字权限

  stat -c "%a %n" /path/to/files/* 

看看第一个答案是否适合你: 查看权限@堆栈stream