今天的几件事情记录
- 2019 年 11 月 6 日
- 筆記
01
—
SQL审核工具定制
最近在做SQL审核的东西,由于SQL审核工具Inception的底层是用C++编写的,重新拾起了C++,发现其中很多东西自己还没有忘记,为了SQL审核更加符合公司的业务逻辑,需要对Inception这个工具做一部分定制,定制的过程主要分为提示信息转义、原有逻辑删除、原有逻辑修改,现有逻辑添加。这两天已经完成了前三个部分,现在剩余最后一部分,现有逻辑添加,此部分需要从代码的底层入手,修改Inception的源代码,从而实现更加完善的SQL审核逻辑。
02
—
Linux命令之find
1.命令格式:
find pathname -options [-print -exec -ok]
2.命令功能:
用于在文件树中查找文件,并作出相应的处理。
3.命令参数:
pathname: find 命令所查找的目录路径。譬如用 . 来表示当前目录,用 / 来表示系统根目录。
-print:find 命令将匹配的文件输出到标准输出。
-exec:find 命令对匹配的文件执行该参数所给出的 shell 命令,相应命令的形式为 ’command‘ {} ; ,注意 {} 和 “ ;” 之间的空格。
-ok: 和 -exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell 命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行功能。
4.命令选项:
-name 按照文件名查找文件
-perm 按照文件权限来查找文件
-prune 使用这一选项可以使find 命令不在当前指定的目录中查找,如果同时使用 -depth 选项,那么 -prune 将被 find 命令忽略
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-mtime -n +n 按照文件的更改时间来查找文件, – n 表示更改时间距现在 n 天以内, + n 表示文件更改时间距现在 n 天以前。
find 命令还有 -atime和-ctime 选项,但他们都和 -m time 选项类似。
-nogroup 查找无有效所属组的文件,即该文件所属的组在 /etc/groups 中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在 /etc/passwd 中不存在。
-newerfile1 ! file2 查找更改时间比文件 file1 新但比文件 file2 旧的文件。
-type 查找某一类型的文件,诸如:
b 块设备文件
d 目录
c 字符设备文件
p 管道文件
l 符号链接文件
f 普通文件
-sizen:[c] 查找文件长度为 n 块的文件,带有 c 时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件 /etc/fstab 中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount 在查找文件是不跨越文件系统mount点
-follow 如果find 命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-aminn 查找系统中最后N分钟访问的文件
-atimen 查找系统中最后 n*24 小时访问的文件
-cminn 查找系统中最后 N 分钟被改变文件状态的文件
-ctime n 查找系统中最后 n*24小时被改变文件状态的文件
-mminn 查找系统中最后 N 分钟被改变文件数据的文件
-mtimen 查找系统中最后 n*24 小时被改变文件数据的文件
5.使用实例:
实例1:查找指定时间内修改过的文件
命令:
find-atime-2 查找48小时内修改过的文件
实例2:根据关键字查找
命令:
find . -name"*.log" 在当前目录查找以 .log 结尾的文件。 “.” 代表当前目录
实例3:按照目录或文件的权限来查找文件
命令:
find /opt/soft/test-perm 777 查找/opt/soft/test 目录下, 权限为 777 的文件
实例4:按照类型查找
命令:
find . -type f -name "*.log" 查找当前目录中以 .log 结尾的 普通文件
实例5:查找当前所有目录并排序
命令:
find . -typed | sort 组合命令,其实只要知道 find [PATH] [option] [argument] 就可以了, “| 管道” “sort” 命令随时可以跟任何命令组合使用。
实例6:按大小查找文件
命令:
find . -size +1000c-print
一个牛逼的命令: find . -name "*.*"|xargs grep "目标" 该命令可以在当前文件夹下的所有文件中寻找包含目标关键字的文件以及具体目标位置,主要可以应用在一个开源工程中寻找main函数。
03
—
Linux命令之chattr
此命令主要是用来改变文件的属性,此命令可以锁定文件,使得root用户也无法更改文件中的内容。
和chmod命令的区别:chmod命令只改写文件的读,写,执行权限,而chattr命令可以控制文件更底层的属性。
该命令的几种模式:
a:append,让文件或目录只能追加,不能删除;
b:不更新文件或目录的最后存取时间;
c:compress将文件或目录压缩后存放;
d:no dump将文件或目录排除在dump操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录,即硬盘空间被全部收回;
S:即时更新文件或目录;
u:预防意外删除,数据内容其实还存在磁盘中,可以用于undeletion。
应用举例:
1、用chattr命令防止系统中某个关键文件被修改: # chattr +i /etc/resolv.conf
然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件就要把i属性去掉: chattr -i /etc/resolv.conf
2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件: # chattr +a /var/log/messages