当前位置: 首页 > news >正文

Web安全-Linux基础-02-系统基础命令

Linux02

邻家阿婆赠花苗,谢也含笑,枯也含笑。

1、系统基本编辑命令

vi / vim

记事本 / 专业记事本
vi filename --编辑一个文件# 01.普通模式(查看模式)
不能进行编辑输入操作 但是可以移动光标 
同时可以执行一些操作命令
比如: 删除 复制 粘贴(后面有详细的)# 02.编辑模式
i / o / a / r
insert模式:在当前光标位置前进入插入模式
open line模式:在当前行下方插入新行并进入插入模式
append模式:在当前光标位置后进入插入模式
replace模式:进入连续替换模式(覆盖后续字符,按 Esc 退出)# 03.末行模式(命令模式)
实现 文件的内容保存 检索 替换 显示行号
检索   : /要检索的内容
替换   : %s/root/ROOT/g  
--显示行号  :set nu   number 
ESC→ : 
q   不保存退出
q!  强制不保存退出
wq  保存退出
wq! 强制保存退出# 04.普通模式的一些快捷命令
yy    复制光标所在行
nyy   数字yy 复制连续多行内容
p     粘贴复制/剪切的内容
np    粘贴n次复制/剪切的内容 
dd    删除光标所在行
ndd   删除n行
D	  删除本行内容,但是保留空行
dG   删除光标所在位置后的所有行内容
G    快速移动到最后一行
gg		快速移动到第一行
nG   快速移动到第n行

echo

打印
# 01.分行打印
[root@koko ~]# echo "123";echo "456"
123
456
--可以将多个信息同时输出 ; 命令分隔符# 02.实现空格的不同使用
echo -e
-e  \n  --换行
-e  \t  ----tab空格
-e  \c  ---不换行

cat

# 01.追加插入新的内容 
[root@koko ~]# cat>>a<<EOF  --以EOF为结尾,EOF只是一个标记,还可以用end,stop等其他任何标记
> linux
> network
> python
> hello
> EOF[root@koko ~]# cat a	--查看插入的内容
linux
network
python
hello# 02.覆盖插入新的内容 
[root@koko ~]# cat>a<<EOF	--这里会将前面完全清空,然后覆盖写入
> abc
> def
> ghi
> EOF[root@koko ~]# cat a	--查看插入的内容
abc
def
ghi
命令文件操作文件原有内容适用场景
cat > a << EOF覆盖写入完全清空创建新文件或覆盖旧文件
cat >> a << EOF追加写入保留原有内容在文件末尾添加新内容(追加)
# 03.查看文件命令
cat -n filename	-- 带行号查看文件内容head / tail [-n] filename  --默认查看10行 -n 查看几行 --可以查看文件前几行/后几行信息
tail -f  --动态查看文件,适用于追踪日志文件信息变化
/var/log/secure --记录登录信息的日志文件 

grep

过滤筛选命令
语法:grep [参数] 匹配信息 文件名
# 01.参数介绍
-i参数  不区分大小写(ignore case)
-n参数  带行号(number)
-c参数  统计匹配的行数(count)
-v参数  过滤排除指定信息(invert)# 02.示例
grep "root" p --过滤p文件中包含root的文件
grep -n "root" p --过滤p文件中包含root的文件并显示行号
grep -c "root" p --过滤p文件中包含root的文件并统计出现的次数
grep -v "root" p --过滤p文件中不包含root的文件

2、系统相关命令

数据下载命令

# 01.tree
yum install -y tree --展示目录下的结构# 02.lrzsz
yum install -y lrzsz --可以实现Windows和linux之间互传数据信息# 03.wget
yum install wget --获取下载链接地址

基础优化命令

# 01.修改主机名
hostname 主机名 --临时修改
echo $HOSTNAME  --查看主机名
只是对系统环境变量作修改,修改之后要重新连接才能显示hostnamectl set-hostanme 主机名	--是对系统环境变量做修改,对主机名配置文件做修改
bash 命令刷新cat /etc/hostname	--查看主机名# 02.man命令
man cp	--查看cp命令的功能
按q退出

字符编码优化

全球国家字符统 utf-8编码
中国对应编码  gbk编码  # 01.查看字符集
cat /etc/locale.conf# 02.修改字符集
localectl set-locale	--字符集编码
localectl set-locale LANG=zh_CN.utf-8	--设置为utf-8

3、系统目录结构

目录结构介绍

# 01.Windows 目录形式
C:\xxx\xxx 
盘符:\子目录\子目录\文件# 02.linux 目录形式
/xxx/xxx
根目录/目录/目录/文件# 03.根目录
根目录 一切目录的起点 一切从根出发
每个用户都有自己名字命名的家目录其中root用户的家目录 直接在根目录下
普通用户的家目录 放在 /home/进行管理

重点目录结构

目录名称用途描述
bin存放二进制命令文件(普通用户可以使用)。
sbin存放二进制命令文件(root 用户可以使用)。
etc存放软件程序或系统程序配置文件。
lib存放需要调取的库文件信息(旧软件程序调取库文件)。
lib64存放需要调取的库文件信息(新软件程序调取库文件)。
media可用于存放实例视频或图片;也可作为默认挂载点。
mnt可用作默认挂载点。
opt存放第三方软件程序数据(等价于 Windows 的 program files)。
usr存放第三方软件程序数据(等价于 Windows 的 program files)。
root存放用户信息家目录(root 用户的家目录,符号 ~ 表示)。
home存放用户信息家目录(普通用户的家目录,符号 ~ 表示)。
boot存放系统启动相关的数据。
dev存放一些设备文件信息。
var用于存放日志文件(全称 variable)。
tmp用于临时存放文件信息(类似于 Windows 的回收站)。
proc存放系统内核配置信息或服务进程信息(不会占用磁盘空间,只会占用内存空间)。

系统目录挂载

为什么要学挂载?

类似于银行,工作环境是不能联网的,需要读取数据就要借助U盘

挂载概念

操作磁盘/操作分区,linux 没有盘符设置 如何设置好分区 给分区再设置一个入口

目录和分区磁盘建立关联过程 称为挂载

实操:实现光驱挂载识别

# 01.加载光驱镜像文件# 02.识别挂载光驱设备
[root@koko mnt]# touch hello.txt	--创建一个hello.txt
[root@koko mnt]# mount /dev/cdrom /mnt		--将光驱挂载到/mnt下,挂载后的/mnt是新的内容
mount: /dev/sr0 is write-protected, mounting read-only	--翻译一下:写保护,将以只读方式挂载
[root@koko mnt]# ll 	--注意:这时候我们还在/mnt目录下,此时还能够看到这个hello.txt文件
total 0
-rw-r--r-- 1 root root 0 Jul 12 09:18 hello.txt
[root@koko mnt]# cd 	--这里主要是为了退出当下这个目录,退出这个进程,才能挂载上
[root@koko ~]# cd /mnt	--我们再切进去/mnt,发现里面的hello.txt看不到了
[root@koko mnt]# ls
CentOS_BuildTag  EULA  LiveOS    RPM-GPG-KEY-CentOS-7          TRANS.TBL  isolinux
EFI              GPL   Packages  RPM-GPG-KEY-CentOS-Testing-7  images     repodata# 03.利用命令写在
umount  /mnt
[root@koko mnt]# umount /mnt	--我们在/mnt文件夹下,卸载,会报错
umount: /mnt: target is busy.	--/mnt中的进程被占用,所以无法卸载(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))
[root@koko mnt]# cd .. 		--我们回到上级根目录
[root@koko /]# umount /mnt	--再次卸载
[root@koko /]# ll /mnt		--查看/mnt下的文件,发现hello.txt
total 0
-rw-r--r-- 1 root root 0 Jul 12 09:18 hello.txt

这里简要的体验了一下,linux的挂载功能,里面还是有挺多小细节的。开始我一直没挂载上,因为我始终没有退到根目录下,导致这个/mnt里面的内存一直被占用,当我把这片内存释放了,挂载就成功了。(感谢身边的大佬的解释)

对机器使用u盘时,Windows会自动挂载,所以一直以来我们使用u盘都很方便。对于Linux,你就要手动挂载,一般情况下,Linux有两个文件夹用来挂载,/mnt和/media,这里我们主要用的是/mnt。Linux要为u盘设置好分区,然后再进行挂载,这样才能使用u盘。

重要配置信息

1. 网卡配置
# 01.网卡配置信息
cat /etc/sysconfig/network-scripts/ifcfg-eth0	# 企业一般用eth0、eth1...ethN
cat /etc/sysconfig/network-scripts/ifcfg-ens33	# 默认是ens33TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=10.0.0.5
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=10.0.0.254          
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=27a73818-89f3-4991-9890-2da7924a73c4
DEVICE=ens33
ONBOOT=yes着重关注以下几个:
TYPE=Ethernet	--使用网络类型:以太网:Ethernet
BOOTPROTO=none	--地址分配的方式:dhcp(自动获取地址)/none(static)(手工配置地址)
DEFROUTE=yes 	--最下面有个网关地址 yes 就是可以使用GATEWAY=10.0.0.1 --是否激活网关地址功能(可以实现访问外网)
NAME=ens33
DEVICE=ens33	--两个差不多  定义网卡名称信息  要保持一致
UUID=0e187686-8c46-4a08-8842-4a184469065a	--通过唯一识别码,可以识别虚拟主机的硬件信息
ONBOOT=yes	--如果关闭网卡的话  状态改为no	--使网卡默认开机启动(激活)
IPADDR=10.0.0.10	--网卡 --ipv4地址配置
PREFIX=24   --24个1
NETMASK=255.255.255.0	--网卡子网掩码配置
DNS1=223.5.5.5  114.114.114.114 8.8.8.8 	--网卡DNS地址配置(可以访问域名)
GATEWAY=10.0.0.254	--配置可以访问外网的地址(可以实现访问外网)ps:如果要修改相关配置 记得重启网卡使之生效
systemctl restart network# 02.修改网卡名字(实验)
1、修改文件内容 网卡ens33 改成eth0
vim  /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=eth0
DEVICE=eth0
2、修改/etc/sysconfig/network-scripts/ifcfg-ens33为/etc/sysconfig/network-scripts/ifcfg-eth0
mv  ifcfg-ens33  ifcfg-eth0  
3、修改/etc/default/grub 加入net.ifnames=0 biosdevname=0
4、执行 命令:     grub2-mkconfig -o /boot/grub2/grub.cfg
5、重启 reboot
sshd –t 
2. 域名解析配置
# 01.配置访问外网域名配置文件  /etc/resolv.conf
[root@xiaoX ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search com
nameserver 223.5.5.5	--不能写错 写错就访问不了了
223.5.5.5  是阿里云的一个公共DNS  DNS --是域名系统# 02.配置访问内网域名配置文件 /etc/hosts
[root@xiaoX ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

作为网络安全学习者,这里提一嘴,DNS域名欺骗攻击(DNS Spoofing),也称为DNS缓存投毒(DNS Cache Poisoning)

攻击者通过篡改DNS服务器的缓存记录,将合法的域名解析到错误的IP地址(通常是恶意服务器),从而劫持用户流量,实现窃听信息、植入恶意软件或钓鱼诈骗等目的。

DNS负责域名解析服务,在主机的本地域名服务器中会有一个缓存表,攻击者正是利用这点,通过各种手段去改变这一点,从而实现主机正常访问域名却被欺骗至恶意IP上,接着就会受到一系列恶意操作。具体的攻击手段、案例、实验,大家可以上网搜索并学习。

不过现在大部分都是遵循https协议,很多手法在现实中不太适用,不过思路依然值得学习。

3. 系统变量

主要是和变量、环境变量、别名相关的配置文件信息

变量: 牵一发而动全身 有指定作用(认为定义)

环境变量 :系统默认定义好的 有特殊作用

# 01.查看环境变量
echo $PATH  --定义了命令文件存储位置 使命令操作可以执行与应用[root@koko /]# echo $PATH	--输出环境变量PATH值
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@koko /]# echo $USER	--输出当前登录用户的用户名
root
[root@koko ~]# echo $PS1	--决定命令提示符呈现方式  环境变量
[\u@\h \W]\$
全局生效(对所有用户生效)# 02.变量的使用
[root@koko ~]# a=1
[root@koko ~]# echo $a
1
变量赋值时不需要$符号  使用时必须有$符号# 03.全局生效(对所有用户生效)
网安 关注 应急效应 异常占用资源 进程关闭后再次运行
有可能是 profile 被植入脚本运行命令 
/etc/profile 
/etc/bashrc
两个文件写到任意一个都会受到影响(把某个恶意跑进程的脚本放进去)# 04.局域生效(对指定用户生效)
~/.bash_profile
~/.bashrc
局部变量优于全局变量,用户配置覆盖系统配置加载顺序
/etc/profile → ~/.bash_profile → ~/.bashrc → /etc/bashrc# 05.设置别名,简化键盘操作
设置别名
[root@koko ~]# alias eth0='cat /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@koko ~]# eth0
TYPE=Ethernet
........
取消别名
[root@koko ~]# unalias eth0
[root@koko ~]# eth0
-bash: th0: 未找到命令
永久设置别名
/etc/profile 里最后一行放入
alias eth0='cat /etc/sysconfig/network-scripts/ifcfg-eth0'

📁 全局生效(所有用户)

文件路径加载时机安全风险
1/etc/profile登录式Shell(如SSH登录、系统登录)恶意脚本植入后,所有用户登录即触发
2/etc/bashrc/etc/bash.bashrc所有交互式Shell(包括终端/tty)打开任何终端窗口即触发恶意操作

👤 局部生效(指定用户)

文件路径加载时机安全风险
1~/.bash_profile登录式Shell(用户SSH登录时)只影响该用户,登录后触发恶意进程
2~/.bashrc交互式Shell(用户打开终端时)每次新开终端窗口即触发恶意行为

攻击者会篡改这些环境变量配置的文件,通常都会在文件的尾部追加恶意命令,然后利用远程下载脚本,还有对局部文件覆盖全局的特性可能利用来绕过监控。当我们监控到CPU异常进程时,应该迅速先从这些配置文件中检查开始。

4.开机自动加载命令
# 01.文件路径
/etc/rc.d/rc.local		--系统完成内核引导、初始化服务后最后执行的用户自定义脚本# 02.权限要求
使用这个文件 需要执行 否则不生效
chmod +x /etc/rc.d/rc.local
权限r读取权限,w写入权限,x执行权限。
r=4,w=2,x=1.  
给他读写,4+2=6,chmod 6
# 03.执行身份是以管理员身份(root)运行的 有时候换用户单独执行执行脚本里的某个命令 可能会权限不足

这里存在一个双视角冲突:

对于运维 开发人员角度 利用脚本简化操作

而对于网安人员角度 脚本放在该文件中 会有风险

(以下是用ai生成的一些对比,个人能力有限,ai辅助学习)

⚖️ 双视角冲突与平衡

维度运维开发需求网络安全要求平衡方案
执行权限需要高权限执行操作最小权限原则使用专用系统账户 + sudoers精细控制
脚本来源方便使用远程脚本禁止远程代码执行只允许本地签名脚本: gpg --verify /opt/script.sh.sig
监控需求关注执行结果日志需要行为审计强制日志记录: exec > /var/log/rc-local.log 2>&1
更新机制快速修改生效防止非法篡改配置变更审批 + 文件完整性监控(HIDS)
5.用户登录信息提示
/etc/motd
[root@koko ~]# vim /etc/motd
文件中可以添加喜欢的开机信息 比如cowsay /animalsay “内容”
配置好需要断开重连这里有点类似idea写java项目的banner.txt了
6.系统版本信息查看
cat /etc/redhat-release

系统重要目录信息

# 01.自动加载运行脚本目录
ll /etc/profile.d/ --目录下的脚本会自动运行(有新的会话连接)--网络安全人员 需要关注此目录中是否有异常修改或者增加的信息# 02.查看历史命令
history 可以查看历史命令
history -c 慎用,会把历史记录清理掉# 03.查看文件属性
file  + 文件名(目录或文件都可)  --可以查看文件类型/属性# 04.查看磁盘占用情况
du -sh  */路径   --计算的是文件存储到磁盘所占的空间,计算的是占了多少block# 05.系统存储日志信息目录
/var/log/  
重要的有:messages secure dmesg可以尝试错误连接  查看日志最下面的信息
secure :可以记录系统用户登录情况信息  防止用户暴力破解
message: 可以记录系统或软件程序运行情况,同时也会记录异常情况,可以实现排查问题
dmesg:可以记录系统运行启动信息(硬件检测信息  内核运行信息)查看日志时关注的词汇:error错误 |grep “”  如果error过多--暴力破解
cat /var/log/messages|grep error
解决:这时想办法封ip  # 06.系统存储硬件信息目录
cat /proc/cpuinfo	--查看CPU信息
LANG=en	--修改语言
grep -c processor /proc/cpuinfo	--用于确认服务器总的CPU的核心数
free -h		--可以查看空间使用情况
df -h		--查看磁盘使用情况(disk)
http://www.dtcms.com/a/275701.html

相关文章:

  • 这个Pandas函数可以自动爬取Web图表
  • Android下一个简单的定时器,每隔一秒输出一个数字
  • 【JVM|类加载】第三天
  • monorepo 发布库 --- 打包文件
  • 多线程的区别和联系
  • 使用sqlmap的SQL Injection注入
  • CSS分层渲染与微前端2.0:解锁前端性能优化的新维度
  • Linux之Zabbix分布式监控篇(一)
  • 电商广告市场惊现“合规黑洞”,企业如何避免亿元罚单
  • phpstudy搭建pikachu靶场
  • 单链表的题目,咕咕咕
  • 区块链平台之以太坊深入解读:技术、经济与生态的全面解析
  • 从OpenMV到执行器:当PID算法开始“调教”舵机
  • 计算机视觉与深度学习 | 基于Matlab的多特征融合可视化指纹识别系统(附完整代码)
  • 迅为RK3588开发板Android13系统super.img的解包和重新组包
  • 【C++】封装红黑树模拟实现set和map
  • GESP2025年6月认证C++三级( 第三部分编程题(2)分糖果)
  • MIG_IP核的时钟系统
  • 《硬件产品经理》第七章:产品开发流程之验证
  • 【6.1.3 漫画分布式锁】
  • 【web站点安全开发】任务1:html基础表单和表格
  • C# 接口(派生成员作为实现)
  • Leaflet面试题及答案(41-60)
  • OneCode 3.0架构深度剖析:工程化模块管理与自治UI系统的设计与实现
  • 20250712-3-Kubernetes 应用程序生命周期管理-服务编排(YAML)及编写技巧_笔记
  • 【Elasticsearch】function_score与rescore
  • 【云端深度学习训练与部署平台】AutoDL连接VSCode运行深度学习项目的全流程
  • Qt窗口:菜单栏
  • 人工智能之数学基础:多元逻辑回归算法的矩阵参数求导
  • 回归(多项式回归)