如何通过 SSH 检查文件权限

如何通过 SSH 检查文件权限

首先,我对此很陌生,所以如果这是非常基础的或者我听起来太无知,请原谅我。

我想检查 VPS 上特定目录中的所有文件,以确保文件为 644,目录为 755。FTP 是不可能的,因为文件/目录太多了。SSH 似乎是最合理的选择,但在我使用 chmod 权限之前,我想看看我将更改什么。有没有办法查找和显示不符合此条件的文件/目录?

提前感谢您的任何见解。

答案1

作为对 David Spillett 答案的改进,使用单个 find 命令怎么样?我认为它比所有管道和对 grep 的调用更简洁一些。此外,它还消除了一些可能引发问题的边缘情况。

find . -type f ! -perm 644应该会找到所有没有 -rw-r--r-- 权限的文件。对于目录,您可以使用find . -type d ! -perm 755

一旦您对所看到的内容感到满意,您甚至可以将 chmod 组合到同一个命令中:

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

答案2

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

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

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

如果要扫描其他目录,请用它替换“。”,例如:

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

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

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

另外,你可以-v从 grep 中删除选项来查找文件/目录匹配,如果您想将这些列为健全性检查。

默认情况下,使用find也会扫描子目录。如果只扫描一个目录而不扫描其子目录,您可以直接通过 输出,ls -lgrep不用使用findxargs

当您运行时chmod请记住您可以指定选项-v以便它列出它在执行操作时所做的事情和不会改变的事情 - 这对于确保您给出了正确的命令很有用。

答案3

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

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

答案4

看看这个问题的第一个答案是否适合您:查看权限@stackoverflow

相关内容