Linux系统安装
介绍:
什么是linux,Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
说的简单点,它就是一个操作系统
特点
- 免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
- 多用户多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
- 良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
- 丰富的网络功能
Unix是在互联网的基础上繁荣起来的,Linux的网络功能当然不会逊色。它的网络功能和其内核紧密相连,在这方面Linux要优于其他操作系统。在Linux中,用户可以轻松实现网页浏览、文件传输、远程登陆等网络工作。并且可以作为服务器提供WWW、FTP、E-Mail等服务。
- 可靠稳定的安全性能
Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。Linux由于需要应用到网络服务器,这对稳定性也有比较高的要求,实际上Linux在这方面也十分出色。
- 支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
系统安装
- 我们在生活中大部分使用的是windows操作系统,如何在windos上安装linux呢?
我们想要在自己的windows运行linux需要安装vmware环境,让linux运行在我们的windows操作系统之上,接下来进行VMware安装演示。
:::info
下载:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
下载完成之后进行安装:(安装步骤如下)
经过上述步骤安装结束,安装之后需要提供藏品密钥,百度查询即可。
:::
- linux系统安装,下图安装linux以ubuntu安装为例,后续会展开说明linux。
在安装linux之前,我们还需要知道哪些知识?
-
VMware的三种网络模式
-
通过VMware是怎么操作进行安装操作系统的
:::info
首先介绍VMware的三种网络模式 -
桥接模式 - 与物理机器在同一网段
-
nat模式 - 类似于网络中的nat地址转换,一个出网地址,nat内部是同一个网段。
-
仅主机模式 - 不能网其他与nat模式相同。
-
那么这三种模式怎么设置 设置–首选项–更改网络设置,即可进行设置。
:::
:::info
接下来以安装ubuntu为例,对VMware安装操作系统进行安装演示。
推荐从清华园镜像下载,速度比官网快。
下载地址:
https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/
下载完成之后,进行安装。
- 在完成上述操作之后,打开虚拟机进行安装。
至此安装完成 – 那么你们自己去思考一下,其他版本的linux也是这样安装,windows操作环境也是这样安装。
:::
上述介绍完了linux的运行环境的安装,以及linux的安装,接下来我们去说一下linux的历史以及linux的发行版本。
历史么,就是从uninx衍生过来的,不在过多的做解释。
发行版本么,然后我们去想一下,我们的口红,有迪奥等等品牌,linux同样也有很多品牌,接下里以两种著名的发行版本给大家做解释
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。
Debian,或者称Debian系列,包括Debian和Ubuntu等,我们所用的kali也属于这个系列。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建。Debian最具特色的是apt-get / dpkg包管理方式。
在实际使用中,所感受到的最大差别应是两个体系在安装软件时所用的软件包的安装方式不同,例如redhat的yum与RPM,debian的apt-get与dpkg。有关这方面知识我们会在下节课详述。
基础命令
mkdir命令
mkdir 创建目录
用法 mkdir [选项][目录名]
参数:-p创建多级目录,通俗易懂的说就是创建新的文件夹下面的文件夹
ls命令
命令用于显示指定工作目录下之内容
用法 ls [选项][目录]
参数:
-a 显示所有文件
-l 出文件名称外,也将文件形态、权限等等显示出来
-h 格式列出文件大小
常用 ls -al
pwd命令
以绝对路径的方式显示用户当前工作目录
用法pwd
pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
cd命令
切换目录命令
用法 cd [目录]
案例 cd cz
cd [绝对路径]
touch命令
创建文件命令
用法 touch [选项] [文件名]
案例: touch czsec
cp命令
拷贝命令
用法 cp [选项] [源文件] [目标位置]
参数: -r 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。(递归)
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。(保持默认属性)
案例
cp cz1 czsec
cp /root/cz/fsec1 czsec1
cp /root/czsec1/csec1 /root/czsec2
cp -r czsec cz3/cz4
mv命令
移动文件,或修改目录名字
用法:mv [选项] [源文件/源目录] [目录]
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。(直接覆盖不询问)
-n: 不要覆盖任何已存在的文件或目录。(不覆盖已存在的文件)
mv czsec c1
mv c1 czsec
mv cz cz1
mv 1.txt /root
rm命令
删除命令
用法 rm [选项] [文件|目录]
参数
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
上述命令是对linux文件的操作。
3. Linux 常用命令总结
3.1 Linux 的命令格式
linux命令的格式表现为:命令+选项+对象
COMMAND options arguments
具体说明:
COMMAND: 表示命令的名称, 如 ls 。
options:定义命令的执行特性,可以有长短两种选项:
- 长选项: 用 – 引导,后面跟完整的单词,如 --help
- 短选项: 用 - 引导,后面跟单个的字符, 如 -a
- 多个短选项可以组合使用,例如: -h -l -a == -hla, 但是长选项不能组合使用,如 --help后面就不能再跟另外一个单词了。
options也可以有自己的参数,注意:选项与选项之间、选项与参数之间、参数与参数之间必须有空格。
arguments:表示命令的作用对象,如上述示例中farmsec 就是ls命令的作用对象。
在Linux中严格区分大小写。
3.2 Linux 获取命令帮助的方式
使用-h,–help和man可以查看命令的帮助文件。
ping -h
cp --help
man cp
3.3 绝对路径与相对路径
绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,linux的绝对路径是指从根目录说起的。万物起源为/目录 。
例如: /dev/somedir/…、/etc/password
而相对路径则是从当前目录说起: 即 ./。例如在当前目录为根的情况下的./usr/bin和usr/bin是一个目录。
3.4 Tab键的使用
tab键的两大作用:
- tab补全:只需输入文件或目录名以及命令的前几个字符,然后按TAB键,如无相重的,完整的文件名或者命令立即自动在命令行出现;如有相重的,再按一下TAB键,系统会列出当前目录下所有以这几个字符开头的名字。
- tab键查看:在命令行下,只需输入例如m,再连续按两次TAB键,系统将列出所有以m开头的命令,(包括自定义的Bshell命令函数),对查找某些记不清楚的命令特有用。熟练使用tab键可提高工作效率。
3.5 四个特殊的文件名
. #代表当前目录
.. #代表上一级目录
- #代表上一个工作的目录
~ #代表家目录(root为/root,其他用户在/home下)
查看为文件相关命令
cat命令
用于查看文件的内容
用法:cat [选项] [文件]
案例:cat /etc/passwd
echo命令
输出指定内容
echo '[文本]'
案例 echo '123'
利用 > >> 也可以输出内容
案例
echo 11 > 111.txt
echo 11 >> 1.txt
more命令
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是,按空格键Space就往下一页显示,按Enier键显示文本的下一行内容,按 b键就会往回(back)一页显示,按q键退出。
用法:more [选项] [文件]
more /etc/passwd
less命令
less 与more类似,用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序按q键。
less [选项] [文件]
less /etc/passwd
head命令
命令用于查看文件的开头的内容。在默认情况下,head命令显示文件的头10行内容
用法:head [选项] [文件]
参数: -n 显示的行数
head -n 2 /etc/passwd
tail命令
tail文件尾部内容
用法 tail -n 2
案例:tail -n 2
wc 命令
wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数
用法:wc [选项] [文件]
参数:
-l 显示行数
-c 显示Bytes数
-w 显示字数
wc -l /etc/passwd
wc -c /etc/passwd
wc -w /etc/passwd
du 命令
du命令可查看文件使用空间
用法:du [选项] [文件]
参数:
-h 以K,M,G为单位,提高信息的可读性。
du -h /etc/passwd
df命令
df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
用法:df [选项]
参数:
-h 使用人类可读的格式
案例:
df -h
Linux 的文件结构
在Linux系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。
在Linux系统中文件后缀是没有作用的,后缀名只是为了能让自己能够更好的区别文件的作用。
Linux系统中的各类文件被Linux使用目录树进行管理, 所谓的目录树就是以根目录/为主,向下呈现分支状的一种文件结构。
与Windows 系统不同,Linux 系统没有C盘、D盘、E盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中。
这样做最明显的好处是,开发者仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源。举个简单的例子,Linux 中几乎所有读(读文件,读系统状态,读 socket,读PIPE)的操作都可以用read函数来进行;几乎所有更改(更改文件,更改系统参数,写 socket,写 PIPE)的操作都可以用write函数来进行。
不利之处在于,使用任何硬件设备都必须与根目录下某一目录执行挂载操作,否则无法使用。我们知道,本身Linux具有一个以根目录为树根的文件目录结构,每个设备也同样如此,它们是相互独立的。如果我们想通过Linux上的根目录找到设备文件的目录结构,就必须将这两个文件系统目录合二为一,这就是挂载的真正含义。
下面我们来逐一介绍Linux根目录下的各个目录:
/bin目录下包含了用户命令文件,也就是shell命令。
/boot包含了系统启动过程中所需要的所有内容。
/dev目录是设备文件或者专有文件的存放位置。
/etc目录包含了系统的配置文件。
/root用户专有的家目录。一个用户对自己的家目录拥有绝对的控制权。
/lib目录里面存放着共享库和内核模块。在系统的启动阶段和运行根文件系统的各种命令时,都需要用到这些共享库,所以必须与根文件放在一起。
/media与/mnt是常见的挂载点.
/opt目录系统附加软件的存放地址
/sbin目录必备的系统软件存放处。用户系统维护的软件和某些只限root用户使用的命令存储在/sbin /usr/sbin以及/usr/local/sbin目录下。
/srv目录某些服务进程启动以后,他们需要读取的数据会放在srv目录中。
/tmp目录存放临时文件。任何程序都不用对/tmp目录下的任何文件或目录负责。
/var目录包含着系统中绝大多数的随时变化着的数据,比如系统日志。/var的某些内容是不能共享给其他系统的,典型的就是/var/logs /var/run。当然某些是可以共享的,如/var/spool/news
vi编辑器
vi编辑器:vi是Linux系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们主要使用的文本编辑工具,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。 vi编辑器具有三种模式:一般模式、编辑模式、指令模式。 这三种模式可以通过观察vi界面的左下角判断。
在命令行执行vi [文件名] 命令可进入vi编辑器并编辑文件,如果没有同名文件则创建。
下面进行实例演示。
此时进入vi编辑的一般模式。
按 i 键可进入编辑模式
退出编辑模式 使用esc即可,就可以到达一般模式。
在一般模式下输入 : 即可进入命令模式,下面介绍一下常用的命令模式有哪些
w # 保存 write
q # 退出 quit
wq # 保存并退出
q! # 不保存强制退出
set nu # 显示行号
wq! # 强制保存并退出
一般模式下还可以进行的一些东西
/farmsec # 搜索“farmsec”内容
gg # 光标立马回到第一行
2 # 光标向下跳2行,以此类推
G # 移动到最后一行
dd # 删除当前行
d2j # 删除当前行和下两行
yy # 复制一行
y2y # 复制2行
p (小写) # 粘贴到光标之后
P (大写) # 粘贴到光标之前
linux两大体系
直接使用一个思维导图讲述一下,前文说到linux有两个发行版本,分别是debian和redhat,两个体系最直观的就是软件安装命令的不同,接下来用一张思维导图去完成两者的不同之处
Linux常用配置文件
用户相关
/etc/passwd
文件中保存的就是系统总所有用户和用户的主要信息
每一行有七个字段,以:为分隔符,每个字段所代表的含义不同,以root这一行来做示例
root:x:0:0:root:/root:/bin/bash
第一个字段为:用户名名称
第二字段为:密码表示,但是不是真正的密码,密码是在另一个文件当中,在早期的unix中,这里保存的就是真正的加密后的密码字符串
第三个字段为:UID,也就是用户的ID
第四字段为:GID,也称为用户的组ID
第五个字段为:用户的说明
第六个字段为:用户的家目录
第七个字段为:shell,也可以理解为用户登录之后所拥有的权限
/etc/shadow文件
用户保存的密码文件
这个文件的每行代表一个用户,同样的也是以:为分隔符。
root:$y$j9T$zYZWxsWIFARipgKCqjlJv/$lYIXCHtPa5qmyVtKvCmFjyIGLIdbXweLrC2wCV2RTtB:19415:0:99999:7:::
第一字段为:用户名称
第二个字段为:该用户加密后的密码,没有密码的用户则是*或者!!,是不能登录的
第三个字段为:密码何时修改过,这里显示的数字是从1970 年 1 日 1 日作为标准时间算的,每过去一天时间戳加1.如果是10000的话,那么就是1970年1月1日后的第10000天
第四个字段为:两次修改密码的时间间隔,如果是5,那么密码修改后5天内不能再更改,为0的话,是随时都可修改
第五个字段为:密码的有效期,是从第三字段之后开始算的,默认是99999
第六个字段为:密码到期修改前的警告天数,根据第五个字段算的,默认为7,则是到期前的7天开始警告
第七个字段为:密码到期后的宽限天数,为0是到期立马失效,-1是永远不失效
第八个字段为:用户失效的时间,同样是以时间戳表示的
第九个字段:这个字段暂时没有功能
/etc/group 文件
linux用户组的所有信息都存放在/etc/group文件当中,也就是passwd文件中GID的来源。
root:x:0:
第一个字段:用户组名称
第二个字段:用户组密码
第三个字段:对应的GID
第四个字段:用户列表,本字段可以为空
关于用户的相关命令
useradd
用于创建用户
创建uid 为 0 的用户
案例: useradd -o -u 0 aaa
groupadd
指定新建用户所属组
group czsec
useradd czsec1 -g czsec
usermod
更改用户和用户组
-l<帐号名称> #修改用户帐号名称。
-c<备注> #修改用户帐号的备注文字。
-g<群组> #修改用户所属的群组。
-G<群组> #修改用户所属的附加群组。
-d<登入目录> #修改用户登入时的目录。
-e<有效期限> #修改帐号的有效期限。
-f<缓冲天数> #修改在密码过期后多少天即关闭该帐号。
-L #锁定用户密码,使密码无效。
-s<shell> #修改用户登入后所使用的shell。
-u<uid> #修改用户ID。
-U #解除密码锁定。
删除用户和用户组
userdel fsec2
groupdel fsec123
passwd命令用于修改或添加用户的密码, 用法:passwd [user] 案例
passwd farmsec1
网络相关
Centos网卡配置文件存储于/etc/sysconfig/network-scripts/ifcfg-[网卡名]
DEVICE="eth0" #网卡名
HWADDR="00:0C:29:FD:FF:2A" #mac地址
NM_CONTROLLED="yes" #network mamager的参数,实时生效,不需要重启
ONBOOT="yes" #开机自动链接
IPADDR=192.168.1.31 #ip地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.1 #网关
BOOTPROTO=static #静态ip
设置网卡状态命令:
systemctl restart/stop/start/status network #重启/停止/启动/查看状态
service network restart/stop/start/status #重启/停止/启动/查看状态
2.2 设置网卡状态两种方法:
设置网卡状态命令:
systemctl restart/stop/start/status network #重启/停止/启动/查看状态
service network restart/stop/start/status #重启/停止/启动/查看状态
2.2.1 systemctl 和 service 命令
systemctl restart/stop/start/status network #重启/停止/启动/查看状态
service network restart/stop/start/status #重启/停止/启动/查看状态
2.2.2 nmcli 命令
nmcli c show #查看状态
nmcli c up/down [网卡名] #启动/关闭
nmcli c reload [网卡名] #重启
nmcli c modify enp0s3 ipv4.addresses 192.168.0.62/24
nmcli c modify enp0s3 ipv4.gateway 192.168.0.1
nmcli c modify enp0s3 ipv4.dns 8.8.8.8
2.4 查看网络IP的命令
ip a
ifconfig
4. sudo 与 su
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。
root用户需要设置普通用户的sudo权限,设置之后,普通用户在命令前加sudo即可使用管理员权限执行改命令。
4.1 sudo 配置文件
sudo配置文件存在于/etc/sudoers,root用户如想赋予普通用户sudo权限,则需要修改大概位于98行的内容:
97 ## Allow root to run any commands anywhere
98 root ALL=(ALL) ALL
99
100 ## Allows members of the 'sys' group to run networking, software,
101 ## service management apps and more.
102 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
103
104 ## Allows people in group wheel to run all commands
105 %wheel ALL=(ALL) ALL
106
107 ## Same thing without a password
108 # %wheel ALL=(ALL) NOPASSWD: ALL
如果给farmsec1用户添加sudo权限:
farm1 ALL=(ALL) ALL 如果给farmsec用户组添加sudo权限:
%farmsec ALL=(ALL) ALL
设计实验:
创建farm1;farm2;farm3;farm4,四个用户,其中farm1与farm2属于farmsec用户组。
然后给farm1用户和farm4用户添加sudo权限。并给farmsec用户组添加sudo权限
vi /etc/sudoers进行这些修改。
wq!强制保存。
下面我们将用这四个用户分别执行cat /etc/shadow命令和sudo cat /etc/shadow命令。
在正常情况下,只有root用户权限才能查看/etc/shadow文件的内容。而在刚刚的/etc/sudoers配置文件中,我们规定了farm1和farm4用户,及farmsec用户组具有sudo用户权限。在这些sudo用户执行命令时,只需在命令前加上sudo就可以申请用root用户权限执行该命令。
从上述结果中我们可以观察到,配置文件中规定的sudo用户和sudo用户组中的用户都可以借用root权限执行命令。只有farm3用户,它既不是sudo用户,也不在farmsec这个sudo用户组中,因此它无法使用root权限,他尝试使用高权限的行为也会被报告给root用户。
top 命令
top可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
w 命令
w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。 执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
last 命令
last命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
用法:last [选项]
last
last -5 #只显示5行
ps 命令
ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束。
用法:ps [选项]
-A 显示所有进程(同-e)
-a 显示当前终端的所有进程
-u 显示进程的用户信息
-o 以用户自定义形式显示进程信息
-f 显示程序间的关系
-x 显示所有程序,不以终端机来区分
-aux 显示所有包含其他使用者的行程
netstat 命令
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
用法:netstat [选项]
参数:
-a或--all:显示所有连线中的Socket;
-l或--listening:显示监控中的服务器的Socket;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-t或--tcp:显示TCP传输协议的连线状况;
-p或--programs:显示正在使用Socket的程序识别码和程序名称
netstat -an
netstat -anltp
losf命令
如果输入lsof命令提示:未找到命令。那么我们需要进行安装。安装命令为yum -y install lsof。
lsof|more
kill命令
kill命令用于结束进程。
用法:kill [选项] pid 案例:
kill -9 123456 #彻底杀死进程号为123456的进程
which 命令
which用于查找并显示给定命令的绝对路径,可以看到某个系统命令是否存在 用法:which [命令] 案例:
which cd
xargs命令
xargs是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。
案例:
cat 111 |xargs -n 3 #将内容进行排序,每行三个字段
基础命令3
awk 命令
awk是一种处理文本文件的语言,是一个强大的文本分析工具。
相比较屏幕处理的优点,awk在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。 awk也是一个非常棒的数据处理工具!相较于sed常常作用于一整个行的处理, awk则比较倾向于一行当中分成数个字段来处理。
awk处理过程: 依次对每一行进行处理,然后输出。
命令的基本格式是:awk '{print($1)}'
cat 1.txt|awk '{print($2)}' #打印出文本中每行的第二个字段
grep命令
grep这个名字来自于短语“global regular expression print”,所以我们能看出 grep 程序和正则表达式有关联。
本质上,grep 程序会在文本文件中查找一个指定的正则表达式,并把匹配行输出到标准输出。
命令格式: grep [options] [pattern] [filename]
cat passwd |grep root # 只显示带有root关键字的行
grep -e root passwd # 匹配有root的行
grep -v root passwd # 忽略匹配到的行
cat passwd |grep -E "root|sshd" # 包含多个可能性的行
cat passwd |grep -E '^r' # 以r开头的行
cat passwd |grep -E 'n$' # 以n结尾的行
grep “root” /etc/passwd /etc/shadow # 查询多个文件
grep "passwd" /etc -rn # -r 为递归 -n 显示关键字出现在第几行 在多级目录中对文本进行递归查找
find命令
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
这是一个超级复杂的命令,最简单的模式为:find 路径 -name [名字]。
案例
find / -size 1000k #从根目录查找大小为1000K的文件
find -name '1*' #在当前目录下查找文件名以1开始的文件
find / -name '1*' #从根目录查找文件名以1开始的文件
find / -user farmsec1 #从根目录查找属主为farmsec1的文件
find / -group farmsec #从根目录查找属组为farmsec的文件
find /etc -type f/d #按sock类型查找,f代表文件,d代表目录
find . -type f -mtime -7 #搜索7天内当前目录下修改过的文件(-7代表7天内,7代表前7天那一天,+7代表7天前)
find . -type f -mmin -10 #搜索10分钟内当前目录下修改过的文件
find . -atime -1 -type f #搜索当前目录下一天内被访问的文件(-1代表1天内,1代表前1天那一天,+1代表1天前)
find . -amin -10 -type f #搜索当前目录下10分钟内被访问的文件
find . -ctime -1 -type f #搜索当前目录下一天内状态被改变(列如权限)的文件(-1代表1天内,1代表前1天那一天,+1代表1天前)
find . -cmin -10 -type f #搜索当前目录下10分钟内状态被改变的文件
find . -perm 777 #搜索处当前文件下符合777权限的文件
远程命令
ssh ssh farmsec@192.168.0.149
rdesktop rdesktop 192.168.0.178
下载相关
curl
wget
练习
1.kali源的配置文件全路径
2.后缀为deb以及rpm的安装包安装命令分别为?
3.如何查看本机内核,命令为?查看最新内核的命令为?
4.使用root用户身份远程连接服务器(Centos虚拟机,此后操作在centos下完成)。
5.查看selinux状态
6.确认防火墙状态,并且设置为“开机自启”
7.建立用户czsec,并指定用户uid为0,且用户组为czsec1
8.退出root用户,使用czsec身份远程连接服务器,并确定用户身份
9.在家目录建立名为czcz的文件夹
10.查看新建立的文件夹的权限及属主属组
11.将/etc/shadow文件拷贝到czcz文件夹中,并改名为test
12.使用绝对路径的方式进入到czcz文件夹中
13.使用相对路径进入到czcz文件夹中
14.查看test文件内容
15.查看test文件的前3行
16.查看test文件的后5行
17.查看test文件的第7到10行
18.查看系统的全部进程并将结果保存到/var/cz目录中,命名为jc.txt
19.在jc.txt中,文件尾部添加一行内容:coding by czsec! (至少2种方式)
20.查看系统的进程,并找出与ssh相关的内容,结束除/usr/sbin/sshd外所有ssh进程,并确认是通过服务器端断开的访问连接.(使用一行命令)
21.在系统中另建立一个名为cz1的用户,使其拥有sudo权限
22.切换至cz1用户
23.将czcz文件夹中所有文件的属主改为cz1,属组改为czsec1
24.查找系统中名字以pass字段开头的文件(多种方式)
25.查找/var目录中的文件,且过去一天内被修改过权限
26.查找/etc目录中,文件包含password内容的文件 (多种方式)
27.使用一行命令提取主机中的所有可登录用户,并按照字母正常顺序排序,结果保存至家目录中的user.txt中
28.查找主机中所有uid为0的用户
29.将test文件中的所有:替换为+
30.切割test文件保存为每5行为一个文件
31.安装名为nginx的服务,并启动该服务
32.配置一个计划任务,用户root,每隔5小时的第46分钟执行命令echo hello >/root/hello.txt
33.在文件/etc/passwd中查找所有包含字符串oo或者ai的行。将找出的行按照原文的先后顺序拷贝到/root/cc文件中。
34.删除掉/var/log/audit/audit.log,然后数据恢复到/opt中
35.查看服务名为ssh所对应的进程id,再通过查询到的该id查找该进程打开的文件
36.查看网络连接状态,并提取出来源IP以及PID号(一行命令)
37.你现在有个一个文本文件,它的内容如下:
http://www.sina.com
https://www.sohu.com
http://www.163.com
通过Linux的命令,将文本处理成如下格式(可尝试多种写法):
www.sina.com/login.action
www.sohu.com/login.action
www.163.com/login.action