Linux基础

一、Linux简介

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

在计算机科学中,shell 俗称外壳(用来区别于内核),它类似于Windows的DOS,够接收用户的命令并翻译给操作系统执行,是用户与操作系统(内核)之间的桥梁(中间人)。

在这里插入图片描述

shell开机自启,如果没有shell,我们无法使用Linux。

  • 查看正在使用的shell:echo $SHELL
  • 查看系统支持的shell:cat /etc/shells

在这里插入图片描述

shell与终端的区别:
终端:接收用户的输入,并传递给shell程序,接收程序输出并展示到屏幕
shell:接收并解析用户的命令给操作系统执行,将结果输出到终端。

三、SSH系统服务

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

在这里插入图片描述
将其更改为
在这里插入图片描述
更改之后,允许root账户登录

(2)搜索PermitEmptyPasswords

在这里插入图片描述
更改为

在这里插入图片描述
更改之后,允许空密码登录

3、重启SSH服务

  • service ssh restart

其他命令:

  • 使用命令行模式开启SSH服务: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

在这里插入图片描述
使用Xshell远程连接:

  • rz:上传文件
  • sz:下载文件

四、vim编辑器

VM编辑器是Unix及Linux系统下标准的编辑器,相当于Windows系统中的记事本,它的强大不逊色于任何文本编辑器,是我们使用Linux系统不可缺少的工具。

vim具有程序编辑的能力,其会依据文件扩展名或者文件内的开头信息,判断该文件的内容,自动执行该程序的语法判断式,再以颜色显示程序代码与一般信息,可以辨别语法的正确性。

vim加入了许多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。这些功能可以帮助我们在Linux上进行一些配置文件的修改。

vim编辑器模式

命令模式(默认):刚进入vim的时候,默认为命令模式,可以复制行、删除行等

输入模式:可以输入内容

模式转换

  • i:在当前光标所在字符的前面,转为输入模式
  • I:在当前光标所在行的行首,转为输入模式
  • Esc:输入模式转为命令模式
  • a:在当前光标所在字符的后面,转为输入模式
  • A:在光标所在行的行尾,转为输入模式
  • o:在当前光标所在行的下方,新建一行,转为输入模式
  • O:在当前光标所在行的上方,新建一行,转为输入模式
  • s:删除光标所在字符,转为输入模式
  • x:删除光标所在字符,留在命令模式
  • dd:删除光标所在行
  • r:替换光标所在字符
  • yy:复制一行
  • p:粘贴

命令模式下,关闭、保存文件

  • Shift + 冒号
  • w:保存
  • q:退出
  • wq:保存退出
  • x:保存退出
  • q!:强制退出
  • w!:强制保存,管理员权限

查找

  • /正则:从当前位置向后查找
  • ?正则:从当前位置向前查找

五、Linux常用命令

帮助命令:在 Linux 环境中,如果遇到困难,可以使用帮助命令来取得帮助

  • 输出cat命令的帮助:cat --help
  • 输出date命令的帮助:date --help

常用系统工作命令
系统状态检测命令:查看Linux配置系统的基本命令
工作目录切换命令:在Linux中,工作目录指的是用户当前在系统中所处的位置

Linux命令手册

echo——用于在终端输出字符串或变量提取后的值

  • echo [字符串]
  • echo [$变量]
  • 将123写入到1.txt中(>覆盖内容,>>追加内容):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键退出

  • top [参数]
  • top
    PID:进程号
    USER:用户
    COMMAND:名称

kill [进程号]——杀死某个进程

ps——查看进程

ifconfig——用于获取网卡配置与网络状态等信息

  • ifconfig
  • ifconfig [网络设备] [参数]

ip a——可以查看IP
ip add——可以查看IP

uname——用于查看系统内核与系统版本等信息

  • 查看版本:uname -a
  • 查看uname帮助文档:uname --help

who——用于查看当前登入主机的用户终端信息

id——查看当前登入主机的用户终端信息

whoami——查看当前登入主机的用户终端信息

history——用于显示历史执行过的命令

  • 执行历史号为32的命令:!32

pwd——用于显示用户当前所处的工作目录

cd——用于切换工作路径

  • 切换到root目录:cd ~
  • 切换到home目录(主目录):cd /
  • 回到上一级:cd ..

ls——用于显示目录中的文件信息,目录为蓝色,普通文件为白色,压缩包为白色

  • 查看当前目录的状态(d开头代表路径,l开头代表目录,-开头代表文件):ls -l

ll——查看文件详情

  • d 目录
  • - 文件
  • l 链接
  • r 可读
  • w 可写
  • x 可执行

六、文本文件编辑命令

cat——用于查看纯文本文件(内容较少的)

  • 打开a文件:cat a
  • 打开a文件,在有内容的行前添加行数:cat a -b
  • 读取用户信息:cat /etc/passwd

more——用于查看纯文本文件(内容较多的)

  • 回车键往下查看内容
  • Ctrl + b 往上查看内容
  • 等于号显示当前行数
  • 等于号后输入数字,意味着在当前行数下添加该数字的行数
  • v 可以调用vim编辑器
  • q 退出

head——用于查看纯文本文档的前N行

  • 输出a文件的前10个字符:head a -c 10
  • 输出a文件的前5行:head a -n 5
  • 输出文件头:head a -q

wc——用于统计指定文本的行数、字数、字节数

  • 统计字节数:wc a -c

stat——用于查看文件的具体存储信息和时间等信息

  • 格式化输出123:stat -c 123 a

七、文件目录管理命令

touch——用于创建空白文件或设置文件的时间,创建时间和最近改动时间无法更改

  • 创建3个空白文件:touch 1.txt 2.txt 3.txt
  • 将1.txt文件的时间更改为1天前:touch -d "1 day ago" 1.txt
  • 设置时间格式:touch -t 2008080808.08 1.txt

mkdir——用于创建空白的目录

  • 创建text目录:mkdir text
  • 创建多级目录:mkdir hello/test/ -p
  • 创建test2目录,设定权限为可读可写可执行:mkdir hello/test2 -m 777

cp——用于复制文件或目录

  • 将a文件复制到a2:cp a a2
  • 将hello目录复制到hello2,r命令是递归,可以复制文件:cp hello/ hello2 -r
  • p命令可以复制格式、权限:cp hello/ hello2 -r -p
  • b命令可以产生备份文件:cp hello/ hello2 -r -b

mv——用于移动文件或将文件重命名

  • 将1.txt文件移动到hello目录下:mv 1.txt hello/
  • 将hello2目录移动到hello目录下:mv hello2/ hello/
  • 将所有txt文件移动到hello目录下:mv *.txt hello/

file——用于查看文件的类型

  • 查看1.txt文件的类型:file 1.txt
  • 不显示文件名称:file 1.txt -b
  • 版本信息:file 1.txt -v

八、打包压缩命令

tar——用于对文件进行打包压缩或解压,压缩-cvf,解压-xvf(c为压缩,x为解压,v为路径,f为文件)

  • 打包(没有压缩)当前目录下的所有txt文件,放到root目录下,命名为a.tar.gz: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

  • 压缩所有txt文件为1.zip:zip 1.zip *.txt
  • 解压1.zip:unzip 1.zip

九、搜索命令

which——用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。

使用which命令,可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令,此命令会去搜索$PATH环境变量中的目录路径,可以使用echo $PATH 查看。

  • 查找id命令: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慢。

  • 查找root目录下命名为hello的目录或文件:find /root/ -name hello
  • 不区分大小写:find /root/ -iname hello
  • 指定文件类型(f表示文件,d表示目录):find /root/ -name 1.txt -type f
  • 指定权限查找:find /root/ -name hello.txt -perm 777
  • -exec command {} \;或-ok command {} \;将查找到的文件执行command操作,-ok是交互的,需要用户确认,-exec不用,{}\;之间有空格,固定格式,{}表示命令的参数,即为所找到的文件,\是转义,;表示命令结束
    列举hello路径下的文件:find /root/ -name hello -exec ls {} \;
    列举hello所在的路径:find /root/ -name hello -exec pwd {} \;
    直接执行指令:find /root/ -name hello -exec whoami \;

grep——一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。

  • 在filename文件中查找python:grep "python" filename
  • 在多个文件中查找python:grep "python" filename filename1 filename2
  • 显示所有的进程,匹配所有带ssh服务的进程(a代表显示所有的进程,j代表命令格式):ps -ajx | grep ssh

grep可以与find结合使用

  • 列出a目录下的所有文件,通过grep匹配出hello(|是管道符,作用是将左边的输出当右边的输入,即将find /a命令的输出结果当作grep hello命令的输入进行过滤):find /a | grep hello

十、文件管理权限命令

chmod——进行文件的权限修改,Linux中文件和目录的权限有所不同

文件的权限:

  • r:可以读文件,数值为4
  • w:可以写文件,数值为2
  • x:可以执行文件,数值为1
  • 赋予可读可写可执行:chmod 777 文件名

目录的权限:

  • x r:可以复制(cp)和查看(ls)目录的内容(即文件和目录),同时还需要可执行权限
  • x w:可以在目录里创建文件(touch)和目录(mkdir)和删除文件(rm)和目录(rmdir),同时需要可执行权限
  • x x:可以进入目录(cd)和执行文件

Linux用户及权限管理

  • 26
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈-剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值