'find'命令

时间:2020-02-23 14:40:36  来源:igfitidea点击:

如何查找具有特定深度的文件?

如果我们在不想扫描整个目录结构的情况下,或者我们希望在当前目录或者其子目录中限制搜索,则可以使用深度命令。

命令:

find ./-name *.gz 2>&1|grep -vi permiss

输出:

./test_level_1/test_level_2/test_level_3/test_level3.tar.gz
./test_level_1/test_level_2/test_level2.tar.gz
./test_level_1/test_level1.tar.gz

上面的命令应使用扩展名搜索所有文件.gz。
它应该递归地从所提到的目录中搜索指定的文件。
我们可以忽略"2>&1 | grep -vi permiss",这是为了忽略错误(权限拒绝)。

如果显示来自所有指令的文件,我们如何限制我们的搜索?

命令:

Find ./-maxdepth 3 -name *.gz 2>&1|grep -I permiss

输出:

./test_level_1/test_level_2/test_level2.tar.gz
./test_level_1/test_level1.tar.gz

使用最大深度查找命令3

如给定的命令所示,它应该从当前目录及其两个子目录中提取结果。

如何查找特定用户拥有的文件?

让我们假设我们有一个Web服务器并想象黑客已将恶意代码注入文件。
调查后,我们发现XYZ用户已完成。
但是,要修复它,我们希望列出XYZ用户拥有的所有文件。
在我们的情况下,这些是受影响的文件。
在这种情况下,以下命令应该。

命令:

find ./-user sfusate -name "*.txt" 2>&1|grep -I permiss

使用用户找到自己的文件

根据上面的屏幕截图,我们列出了文件,以确保它们由其他用户拥有。
'pwd'命令显示我们正在从同一目录运行下一个命令。
最后,"查找"标志作为"-User"的命令为我们提供了将扩展名列为".txt"的文件。
此外,由用户拥有,如上所示。

如何使用"查找"命令删除用户拥有的所有文件?

当我们希望删除该特定用户拥有的所有文件时,最佳使用用户拥有的所有文件都变得更有用。

扩展我们的黑客WebServer案例,一旦我们通过XYZ用户识别所有文件,我们希望删除这些文件的时间,可以使用以下命令。

命令:

find ./-user sfusate -name "*.txt" -exec rm {} \; 2>&1|grep -vi permiss

删除用户使用find命令拥有的所有文件

屏幕截图显示,我们列出了用户'sfusate'拥有的所有文件。
在下次执行中,我们正在删除扩展名为".txt的所有文件。
第三个命令确认,所有的'.txt。
'已删除当前目录下的文件及其用户"sfusate"所拥有的子目录。

如何查找具有特定文件权限的文件?

在这种情况下,我们的黑客很聪明。
他不是创建任何新文件或者更改所有权。
他正在调整文件权限,保持文件所有者未被触及。
他究竟在做什么?
他抓住了系统用户并将文件权限限制为该特定用户。

如果我们陷入这种情况,我们需要查找包含文件或者组的文件的文件。
为我们提供帮助,我们有以下命令。

命令:

find . -perm -g=w -type f -exec ls -l {} \; 2>&1|tail -n 5

输出:

-rwxrwxrwx. 1 ceyoung domain users 2315 Aug 28 00:12 ./monitordataload/setenv_dsmdevops.sh
-rwxrwxrwx. 1 ceyoung domain users 2251 Aug 28 00:12 ./monitordataload/setenv_dsmdevops_prod.sh
-rwxrwxrwx. 1 ceyoung domain users 2261 Aug 28 00:12 ./monitordataload/setenv_dsmdevops_tailoring.sh
-rwxrwxrwx. 1 ceyoung domain users 2405 Aug 28 00:12 ./monitordataload/updateRecord.sh
-rwxrwxrwx. 1 nikhshah domain users 2253 Aug 23 04:35 ./dsmdevops-19.8.0/README.md

对唯一组的写入权限的文件

给定的图像显示,当我们将参数传递为-g = w时,它应该显示必须向组写入权限的所有文件。
另一方面,当我们说G = W时,如第二个命令所示,它应该限制只显示只有写入权限的文件。

由于我们没有任何具有写入权限的文件,因此它显示为0结果。

如何使用"inode"和'find'命令删除文件?

现在,我们的黑客变得更聪明,这次他已经创建了使用文件名的现有文件的克隆,如下图所示。

显示inodes.

如在给定的示例中所示,我们有两个测试文件:

  • 测试?.txt.
  • test.txt.

让我们假设"测试?
.txt"文件受到攻击者创建的文件。
我们要删除此恶意代码/文件。
作为'?
'是一个唯一的字符,它不会在触发RM命令时作为参数。
如果我们点击命令'rm test *'。
它应该删除包含"test"这个词的所有文件。

为了克服这一点,一个人必须使用"inode"。
给定的图片显示显示inodes的命令。

命令:

ls -il

它应该为所有文件提供inodes,它显示在第1列中。
对于文件'test?
.txt'inode是266534

现在,让我们继续前进,如何用inode删除这些文件。

命令:

Find -inum 266534 -exec rm {} \;

如屏幕截图所示,当我们使用inode击中"LS"命令时,它应该显示"inode详细信息"的文件"测试?
.txt"。

使用查找和inode删除文件后,"ls"命令已成功删除该文件。