Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991年10月5日(第一次正式向外公布时间)。Linux存在许多不同的版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备上,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux 这个词本身只表示 Linux 内核,但人们已经习惯了使用 Linux 来形容整个基于 Linux 内核,并且使用GNU工程各种工具和数据库的操作系统。
Linux 的发行版说简单点,就是将 Linux 内核与应用软件做一个打包。
下载地址
在计算机科学中,shell 俗称外壳(用来区别于内核),它类似于Windows的DOS,够接收用户的命令并翻译给操作系统执行,是用户与操作系统(内核)之间的桥梁(中间人)。
shell开机自启,如果没有shell,我们无法使用Linux。
shell与终端的区别:
终端:接收用户的输入,并传递给shell程序,接收程序输出并展示到屏幕
shell:接收并解析用户的命令给操作系统执行,将结果输出到终端。
SSH服务是目前比较可靠,专门为远程登录服务器和其他网络服务提供安全的协议。相当于Windows的远程桌面协议(mstsc)。
SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Telnet,具有较高的安全性。
SSH提供了口令和密钥两种用户验证方式,这两者都是通过密文传输数据的。
SSH对我们主要的作用是:操作远程服务器系统
Kali配置SSH服务:
1、安装leafpad
apt-get install leafpad
2、使用编辑器打开SSH配置
leafpad /etc/ssh/sshd_config
(1)搜索PermitRootLogin
(2)搜索PermitEmptyPasswords
3、重启SSH服务
service ssh restart
其他命令:
service ssh start
service ssh status
4、登陆测试
使用xshell、MobaXterm、putty等工具测试。
使用本机cmd远程连接:
(1)查看虚拟机IP,在Kali终端允许命令
ip a
(2)打开本机cmd,先查看能否与Kali远程连接
ping 192.16.2.3
(3)在本机cmd运行以下命令
ssh root @192.16.2.3
输入远程连接Kali账户的密码即可,注意密码是不可见的,输入回车即可
使用MobaXterm远程连接:
一般使用MobaXterm,免费,且支持协议较多,安装简单,图形化界面较好,缺点是没有中文版。
点击Session,选择SSH,填入远程连接地址、账户名,输入密码
连接好后,就可以将虚拟机挂起,直接通过MobaXterm使用虚拟机了。
虚拟机挂起,IP一般不会改变,可以持续连接,但如果关机了,IP就会改变了。如果IP改变了,重新设置一边就可以了。
如果出现乱码,设置一下字体即可,Sessions -> 右键IP -> Edit session
rz
:上传文件sz
:下载文件VM编辑器是Unix及Linux系统下标准的编辑器,相当于Windows系统中的记事本,它的强大不逊色于任何文本编辑器,是我们使用Linux系统不可缺少的工具。
vim具有程序编辑的能力,其会依据文件扩展名或者文件内的开头信息,判断该文件的内容,自动执行该程序的语法判断式,再以颜色显示程序代码与一般信息,可以辨别语法的正确性。
vim加入了许多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。这些功能可以帮助我们在Linux上进行一些配置文件的修改。
vim编辑器模式
命令模式(默认):刚进入vim的时候,默认为命令模式,可以复制行、删除行等
输入模式:可以输入内容
模式转换
i
:在当前光标所在字符的前面,转为输入模式I
:在当前光标所在行的行首,转为输入模式Esc
:输入模式转为命令模式a
:在当前光标所在字符的后面,转为输入模式A
:在光标所在行的行尾,转为输入模式o
:在当前光标所在行的下方,新建一行,转为输入模式O
:在当前光标所在行的上方,新建一行,转为输入模式s
:删除光标所在字符,转为输入模式x
:删除光标所在字符,留在命令模式dd
:删除光标所在行r
:替换光标所在字符yy
:复制一行p
:粘贴命令模式下,关闭、保存文件
查找
帮助命令:在 Linux 环境中,如果遇到困难,可以使用帮助命令来取得帮助
cat --help
date --help
常用系统工作命令:
系统状态检测命令:查看Linux配置系统的基本命令
工作目录切换命令:在Linux中,工作目录指的是用户当前在系统中所处的位置
Linux命令手册
echo——用于在终端输出字符串或变量提取后的值
echo 123 > 1.txt
echo $SHELL
rm——删除文件
rm 1.txt
date——用于显示及设置系统的日期或时间
data [选项] [指定的格式]
date
date "+%Y-%m-%d"
date -d "1 day ago"
date -s 20080808
date -s "20080808 01:01:01"
poweroff——用于关闭系统
poweroff
reboot
——重启
init——需要root权限
init0
init3
init5
init6
top——显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率等,使用q键退出
PID:进程号
USER:用户
COMMAND:名称
kill [进程号]
——杀死某个进程
ps
——查看进程
ifconfig——用于获取网卡配置与网络状态等信息
ifconfig
ifconfig [网络设备] [参数]
ip a
——可以查看IP
ip add
——可以查看IP
uname——用于查看系统内核与系统版本等信息
uname -a
uname --help
who
——用于查看当前登入主机的用户终端信息
id
——查看当前登入主机的用户终端信息
whoami
——查看当前登入主机的用户终端信息
history
——用于显示历史执行过的命令
!32
pwd
——用于显示用户当前所处的工作目录
cd
——用于切换工作路径
cd ~
cd /
cd ..
ls
——用于显示目录中的文件信息,目录为蓝色,普通文件为白色,压缩包为白色
ls -l
ll
——查看文件详情
d
目录-
文件l
链接r
可读w
可写x
可执行cat
——用于查看纯文本文件(内容较少的)
cat a
cat a -b
cat /etc/passwd
more
——用于查看纯文本文件(内容较多的)
head
——用于查看纯文本文档的前N行
head a -c 10
head a -n 5
head a -q
wc
——用于统计指定文本的行数、字数、字节数
wc a -c
stat
——用于查看文件的具体存储信息和时间等信息
stat -c 123 a
touch
——用于创建空白文件或设置文件的时间,创建时间和最近改动时间无法更改
touch 1.txt 2.txt 3.txt
touch -d "1 day ago" 1.txt
touch -t 2008080808.08 1.txt
mkdir
——用于创建空白的目录
mkdir text
mkdir hello/test/ -p
mkdir hello/test2 -m 777
cp——用于复制文件或目录
cp a a2
cp hello/ hello2 -r
cp hello/ hello2 -r -p
cp hello/ hello2 -r -b
mv——用于移动文件或将文件重命名
mv 1.txt hello/
mv hello2/ hello/
mv *.txt hello/
file——用于查看文件的类型
file 1.txt
file 1.txt -b
file 1.txt -v
tar——用于对文件进行打包压缩或解压,压缩-cvf,解压-xvf(c为压缩,x为解压,v为路径,f为文件)
tar -cvf /root/a.tar.gz *.txt
gzip——一般与tar一起使用,tar只负责打包并未做压缩,使用 -z 选项可以调用gzip压缩,完成打包压缩
tar -zcvf /root/a2.tar.gz *.txt
tar -zcvf abc.tar.gz a.txt b.txt c.txt
tar -xvf a2.tar.gz -C /root/hello
zip——压缩效率比不上gzip
zip 1.zip *.txt
unzip 1.zip
which
——用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
使用which命令,可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令,此命令会去搜索$PATH环境变量中的目录路径,可以使用echo $PATH 查看。
which id
whereis
——与which命令相似,whereis也可以查找到命令的绝对路径。两者不同的是,which会列出这个命令的别名记录,而whereis会显示出这个命令的帮助文档所在位置。
whereis id
locate
——根据文件名来搜索文件的命令。区别于 find 命令,locate 命令无需指定路径,直接搜索即可,运行速度较快,可以根据关键字列出所有文件。
locate 命令在 mlocate.db 数据库下搜索,这个数据库位于 /var/lib/mlocate/mlocate.db,它包含了系统里所有文件的索引,并且会在每天早上由 cron 工具自动更新。但是 locate 命令有个弊端,它无法搜索当天所创建的文件,因为它的数据库一般只在早上更新一次,我们可以使用 updatedb 命令手动去更新它的数据库。
updatedb
locate 1.txt
find——用于在一个目录(及子目录)中搜索文件,可以指定一些匹配条件,如按文件名、文件类型、用户等条件查找文件。默认从当前路径开始检索,其搜索速度比locate慢。
find /root/ -name hello
find /root/ -name 1.txt -type f
find /root/ -name hello.txt -perm 777
-exec command {} \;或-ok command {} \;
将查找到的文件执行command操作,-ok
是交互的,需要用户确认,-exec
不用,{}
和\;
之间有空格,固定格式,{}
表示命令的参数,即为所找到的文件,\
是转义,;
表示命令结束find /root/ -name hello -exec ls {} \;
find /root/ -name hello -exec pwd {} \;
find /root/ -name hello -exec whoami \;
grep——一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。
grep "python" filename
grep "python" filename filename1 filename2
ps -ajx | grep ssh
grep
可以与find
结合使用
|
是管道符,作用是将左边的输出当右边的输入,即将find /a
命令的输出结果当作grep hello
命令的输入进行过滤):find /a | grep hello
chmod——进行文件的权限修改,Linux中文件和目录的权限有所不同
文件的权限:
r
:可以读文件,数值为4w
:可以写文件,数值为2x
:可以执行文件,数值为1chmod 777 文件名
目录的权限:
x r
:可以复制(cp
)和查看(ls
)目录的内容(即文件和目录),同时还需要可执行权限x w
:可以在目录里创建文件(touch
)和目录(mkdir
)和删除文件(rm
)和目录(rmdir
),同时需要可执行权限x x
:可以进入目录(cd
)和执行文件Linux用户及权限管理