基础linux知识
前言:由于在实际开发过程中服务器大多部署在linux系统下,所以特此来学习linux的基本操
作
1.1pwd
pwd命令的目的是打印当前目录,告诉你目前在哪里
比如我在kali终端中输入pwd,实际返回为/home/kali
1.2 ls
ls
可以列出当前目录下有什么文件
当然也可以查看不同目录的内容,比如
ls 文件地址
举个简单的例子,如果你想查看根目录的内容,只需要
ls /
即可,但这种操作只是查看操作,并不会触发跳转
ls有不同的显示方式,添加-l
可以以长列表的方式显示文件
例如ls -l
利用该显示方式可以查看文件的权限,所有者,所属组,文件大小,修改时间等详细信息
-h
可以以人类可阅读的模式显示当前的文件
由于本地可能存在一些隐藏文件,正常使用ls是无法查看的,这时候就要使用一些参数了
使用ls -a
或者ls --all
可以查看目录下的所有文件,包括隐藏文件
1.3 cd
cd 是改变目录的命令,具体用法为
cd 当前目录包含的文件夹名称
使用该命令可以进入该文件夹
如果想要跳转到前一个目录,可以使用
cd ..
跳转到前一个目录,有没有发现很眼熟,没错,之前在练习命令包含漏洞时使用的就是
这个方式进行跳转的
cd命令可以使用绝对路径,也可以使用相对路径,比如,cd ./../home/user
使用该命令跳转到上
1.4 mkdir
该指令的作用是在当前位置创建一个新的目录
1.5 rmdir
用于删除空目录,注意,只能删除空目录
1.6 cat
将内容输出,记得在php使用system命令利用cat输出php文件时内容会被渲染,所以一般使用tac去倒序输
出
1.7 find
find 命令用来从当前位置向下查找文件,查找到后会将文件的地址进行输出,具体的使用如下
find -name note.txt
这样可以查找到note.txt文件的位置
但需要注意的是,find使用的是精准查询,所以必须得精准输入文件的名称,和cat和tac命令一样
如果想要模糊查询,需要使用通配符*
或者?
来进行查询
1.8 grep
grep用于对文件内容进行字符串匹配,输出成功匹配的那一行
具体的使用
grep 模式 匹配字符串 文件名
需要注意的是 grep的文件匹配默认严格区分大小写,如果不想严格区分,需要使用模式-i
其他有用的模式如下:
-i
:忽略大小写进行匹配。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-c
:只打印匹配的行数。
还有其他的匹配模式我就不一一说明了
如果我们想在当前目录一级所有的下一级目录中进行查找,可以使用以下命令
grep -i -r hello ./
注意,grep是用来查找文件内容的
find 才是用来查找文件名的,需要分清楚
1.9 操作符
linux有很多操作符供我们使用
1.9.1 &
该操作符运行我们在后台执行命令
比如当你下载某个软件时,需要较长时间,这时候可以利用&将命令放在后台进行,转而去执行其他的
操作
使用的方法如下
& 你的命令
1.9.2 &&
还记得我们关于linux管道符那一节提过它吗,是的,没有什么区别
1.9.3 <
我们在命令执行漏洞那篇博客中也提过该操作符的使用方式,将后面文件内容作为前面命令的输入,常
常被用来进行绕过空格过滤,具体的也就不说了
1.9.4 >
大于号用于将内容输入在文件中,在原本的文件内容后追加内容
echo "11" > a.txt
这样就将11追加到了a.txt文件的末尾
1.9.5 >>
用法和>相同 ,但区别在于 >>将原来的内容进行了覆盖,而不是追加
2.0 wget
wget命令用于在linux环境下下载内容,使用较为简单
wget 文件的网络地址
即可
2.1 curl
curl同样也是用来下载的命令,具体的 使用如下
curl 文件网络地址 -o 下载下的文件重新更改的名称
当然你也可以省略后面的-o
2.2 ssh的使用
远程控制linux计算机的方法就是使用ssh,全程为Secure Shell 简称SSH ,ssh只是这杯之间以加密形式存在的协
议,使用加密技术在两台计算机中传输信息。
使用ssh登录计算机的方式很简单,只需要远程计算机的ip地址,和对方计算机的账号和密码
具体的操作如下
比如
ssh tryhackme@10.10.174.21
在该命令中tryhack是对方电脑的用户名,后面跟的是他的公网ip,
在执行该命令后输入对方用户的密码即可登录该账号
2.3 文件操作
这部分来学习linux中的文件操作
1 touch一般用于创建文件
使用方式为
touch 你要创建的文件
2 mkdir 用于创建文件夹
使用方式和touch 相同
3 rm 删除文件或者文件夹
使用方式为rm 参数 文件名
使用的参数有三种 -f 强制删除文件夹或者目录,删除前不进行询问
-i交互式删除,删除文件以及其子目录下的所有文件,删除前会询问用户是否确认
-r或者-R只会询问是否删除,不会一个个文件的询问
--preserve-root 保护根目录不被删除
4 mv 的作用有两个,一个是移动文件,具体的用法是
mv 文件名 地址
通过该操作可以将文件移动到对应的地址
第二个用法是给文件重命名,使用如下
mv 文件名1 文件名2
使用该 操作可以将文件1的名字更改为文件名2
5 cp 就是copy,用于复制文件
cp 文件1 文件2
将文件1的内容复制给文件2,如果不存在文件2则会自动生成一个
6 file 该命令的作用是确定文件的类型
具体的用法是file 文件名
2.4 权限和用户切换
如果当前的用户没有权限,可以使用su命令切换到其他用户
具体的用法:
su user2
后面的user2是你想要切换的用户,输入该命令后只用再去输入想要切换的用户的密码就可以切换到那个用户
2.5 公共目录
1 /etc : etc是etcetera的缩写,是用来存储操作系统的系统文件的常用位置,系统中用户的账号和密码就是存储在
该文件夹下的shadow和passwd文件夹下的。
2 /var :var是linux安装中的主要根文件夹之一,此文件夹存储系统上的应用程序经常访问或者写入的程序,比如
一些日志
3 /root : 该文件夹是root系统用户的主页,该文件夹除了作为root用户的主目录不做其他作用,而且root用户的
数据一般存储在/home/root
4 /tmp : 就是临时的缩写,该文件夹用于存储临时文件,任何用户都有写入和更改的权力,在渗透中可以作为存
储文件的地方
2.6 linux的文本编辑器
linux中内置的文本编辑器有两个,一个是nano,另一个是大名鼎鼎的vim
2.6.1 nano
nano的使用方式并不困难,具体是
nano 你要打开的文件路径
使用nano时存在不少的快捷键,具体见
2.6.2 vim
vim是更高级的一种文本编辑器,具有语法高亮,可自定义等特点,具体的内容比较多,在这里就不详细说了,以
后可能会单独开一篇博客介绍
2.7 用ssh协议在两台主机间传输数据
我们通过安全复制(SCP)技术实现上述操作,SCP允许将文件和目录从当前系统复制到远程系统,将文件和目录从
远程系统复制到当前系统,但前提是我们必须知道当前系统的用户和远程系统的用户名,ip,由于是ssh传输,也需
要,传输的同时需要对方的密码
使用格式为
scp 参数 原路径 目标路径
注意,远程路径的格式为用户名@ip地址:文件地址
以下是从本地复制到远程的方式
-r为递归复制
scp -r
如果我们没有
2.8 linux中的进程操作
进程是在计算机上运行的程序,他们由内核管理,每一个进程都有一个与之关联的id,也成为pid,pid根据进程开
始的顺序递增,比如第一个开启的进程pid就是1
我们可以使用ps
命令去查看当前在运行的程序以及它的pid,每个用户能查看的只是该用户正在运行的程序,如果
想要查看其他用户的程序需要使用ps aux
如果我们想要关闭某程序,需要使用kill
命令,具体的使用为
kill pid
pid输入你想要关闭程序的pid
还有一个有意思的命令是top,top命令可以查看系统上运行的进程的实时统计信息,这些信息将没10秒刷新一
次,而不是一次性
那我们如何启动进程呢?
这时候需要用到systemctl命令,使用该命令可以完成程序的启动,停止,自启动,取消自启动
用法如下
systemctl 操作 服务名
操作有start stop enable disable 四种类型
分别对应上述的四种操作
对于一些需要时间较长的操作,如果我们把它放在前台操作,将会占用很多时间,一般这时候我们将其放在后台操
作,方法就是在命令后面加空格后加上&
使用该操作就可以在后台运行了,如果想暂停后台操作,就是用ctrl加z。
如果想要彻底杀死该程序,可以考虑使用kill
想要把后台程序放回前台,只需要
fg 对应程序的pid
2.8linux自动化控制
可以使用linux本地的crontab来进行自动化控制,可以使用其来定时执行某操作
具体的由于个人用到的机会不大,就不详细介绍了,具体的可以见以下博客
2.9 维护系统 日志
在linux中,很多服务的结果都会留下日志,之前我们了解过,日志文件存储在/var/log文件夹
下,这些日志和服务是监视系统运行情况和保护系统的好方法,而且日志文件还包含了每个
请求的信息,允许开发人员或者管理员诊断性能问题或者调查入侵者的活动