Linux从基础到进阶

发布于:2024-11-28 ⋅ 阅读:(20) ⋅ 点赞:(0)

1、Linux基本操作

1.1文件和目录管理

  • 文件创建:使用touch命令可以创建一个空文件或者修改文件
  • 文件查看:使用cat可以查看文件内容,lessmore用于分页查看。
  • 文件编辑vinano是常用的文本编辑器。
  • 目录创建mkdir用于创建新目录。
  • 目录切换cd用于改变当前工作目录。
  • 文件复制cp用于复制文件或目录。
  • 文件移动mv用于移动或重命名文件或目录。
  • 文件删除rm用于删除文件或目录。
  • 目录删除rmdir用于删除空目录。
  • 文件权限修改chmod用于改变文件或目录的权限。
  • 文件属性查看ls用于列出目录内容。

例如1:

# 创建一个新文件
touch new_file.txt
# 查看文件内容
cat new_file.txt
# 创建一个新目录
mkdir new_directory
# 切换到新目录
cd new_directory
# 复制文件到当前目录
cp /path/to/old_file.txt .
# 移动文件到新位置
mv old_file.txt /path/to/new_location/
# 删除文件
rm unwanted_file.txt
# 修改文件权限,使所有用户可读可写
chmod a+rw new_file.txt
# 查看当前目录下的文件和目录
ls -l
 

1.2 文件权限和所有权

  • 文件权限:权限分为读(r)、写(w)、执行(x)。
  • 文件所有权:文件所有权涉及用户(user)和组(group)。
  • 修改文件权限chmod用于修改文件权限。
  • 修改文件所有权chown用于改变文件所有者,chgrp用于改变文件所属组。

例如2:

# 修改文件权限,使所有者有读写执行权限,组和其他用户只有读权限
chmod 750 new_file.txt
# 修改文件所有者为用户john
chown john new_file.txt
# 修改文件所属组为group_admin
chgrp group_admin new_file.txt

1.3磁盘管理

  • 查看磁盘使用情况df用于查看文件系统的磁盘空间使用情况。
  • 查看目录大小du用于估计文件和目录的磁盘使用量。
  • 挂载文件系统mount用于挂载文件系统。
  • 卸载文件系统umount用于卸载已挂载的文件系统。

例如3:

# 查看磁盘使用情况
df -h
# 查看当前目录及其子目录的大小
du -sh *
# 挂载一个USB驱动器
mount /dev/sdb1 /mnt/usb
# 卸载USB驱动器
umount /mnt/usb

1.4 软件包管理

  • yum:用于基于RPM的Linux发行版(如Red Hat、CentOS)的软件包管理。
  • apt-get:用于基于Debian的Linux发行版(如Ubuntu)的软件包管理。

例子4:

# 使用yum安装软件包
sudo yum install tree
# 使用yum更新所有软件包
sudo yum update
# 使用apt-get安装软件包
sudo apt-get install tree
# 使用apt-get更新所有软件包
sudo apt-get update && sudo apt-get upgrade
 

1.5用户和组管理

  • 添加用户useradd用于创建新用户。
  • 设置密码passwd用于设置用户密码。
  • 添加组groupadd用于创建新组。
  • 修改用户所属组usermod用于修改用户账户。

例如5:

# 添加新用户
sudo useradd -m new_user
# 设置用户密码
sudo passwd new_user
# 添加新组
sudo groupadd new_group
# 将用户添加到组
sudo usermod -aG new_group new_user

1.6网络配置与管理

  • 查看网络接口信息ifconfigip用于查看和配置网络接口。
  • 测试网络连接ping用于测试网络连接。
  • 查看路由表routeip route用于查看路由表。
  • 配置网络:编辑网络配置文件(如`/etc/network)

2、Shell脚本编程

2.1Shell概述

Shell是一种命令行解释器,它为用户提供了一个与操作系统交互的界面。在Linux中,最常用的Shell是Bash(Bourne Again SHell)。
例如:

打开终端,直接输入命令,如ls来列出目录内容,就是在使用Shell。

2.2Bash脚本基础

Bash脚本是一系列的Shell命令,它们被保存在一个文件中,可以一次性执行。

例如:创建一个简单的Bash脚本hello_world.sh



#!/bin/bash
echo "Hello, World!"
 
保存并运行:
 bash
chmod +x hello_world.sh
./hello_world.sh
 

2.3变量和常量

  • 变量:在Bash中,变量不需要声明,直接赋值即可。变量名和等号之间不能有空格。
  • 常量:在Bash中,通常约定大写字母的变量为常量。

例如:


#!/bin/bash my_variable="Hello" MY_CONSTANT="World" echo "$my_variable, $MY_CONSTANT!"

运算符和表达式

Bash支持算术运算符、比较运算符和逻辑运算符。

例如:


#!/bin/bash
a=10
b=20
echo $((a + b))
echo $((a > b ? a : b))
 

2.4条件语句

条件语句用于基于条件执行不同的代码块。Bash支持ifelseelif

例如:

#!/bin/bash
if [ $a -gt $b ]; then
   echo "$a is greater than $b"
elif [ $a -lt $b ]; then
   echo "$a is less than $b"
else
   echo "$a and $b are equal"
fi
 

2.5循环语句

循环用于重复执行一段代码。Bash支持forwhileuntil循环。

例如:

#!/bin/bash
for i in {1..5}; do
   echo "Number: $i"
done
 

2.6函数

函数是一段代码,可以被多次调用。在Bash中,函数的定义不需要关键字。

例如:

#!/bin/bash
print_number() {
   echo "The number is $1"
}
print_number 5
 

2.7脚本调试与优化

调试Bash脚本通常涉及检查语法错误、使用set -x启用调试模式,以及优化代码以提高效率。
例如:

#!/bin/bash
set -x
for i in {1..5}; do
   echo "Number: $i"
done
set +x
 

3.Linux系统管理

3.1服务管理(systemd、init等)

服务管理涉及启动、停止、重启和查询系统服务的状态。systemd是现代Linux系统上的初始化系统和服务管理器。

**启动服务:**

sudo systemctl start apache2.service
**停止服务**:

 sudo systemctl stop apache2.service
**重启服务:**

sudo systemctl restart apache2.service
 
**查看服务状态:**

sudo systemctl status apache2.service
 

3.2进程管理

进程管理包括查看、终止和管理系统中的进程。pstopkill是常用的进程管理工具。

**查看当前运行进程**:

ps aux
 
**终止进程:**

kill -9 <PID>
 

3.3内存管理

内存管理涉及监控和优化系统内存使用。freevmstat是常用的内存管理工具。

**查看内存使用情况:**

free -m
 

3.4CPU管理

CPU管理包括监控CPU使用情况和负载。tophtop是监控CPU使用情况的工具。

监控CPU使用情况:

top
 

3.5系统监控与性能优化

系统监控涉及使用工具来检查系统资源的使用情况,性能优化则是调整系统配置以提高效率。

使用`vmstat`监控系统资源:

vmstat 1
 

5、Linux高级话题

5.1.虚拟化技术(KVM、Xen)

虚拟化技术允许在单一物理硬件上运行多个隔离的操作系统环境。KVM(Kernel-based Virtual Machine)和Xen是两种流行的虚拟化解决方案。

5.2启动libvirt服务

sudo systemctl start libvirtd

5.3创建虚拟机

virt-install 
--name=vm1 
--ram=1024 
--vcpus=1
 --disk 
 path=/var/lib/libvirt/images/vm1.img,
 size=10 
 --os-type linux
  --os-variant 
  ubuntu18.04 
  --network 
  bridge=virbr0,model=virtio 
  --graphics none
   --console pty,
   target_type=serial 
   --location '/path/to/ubuntu-18.04.iso'

6.Linux安全与防护

6.1安全策略与防护措施

安全策略是一组规则和指南,用于保护系统免受未授权访问和攻击。防护措施包括用户权限最小化、数据加密、定期更新和补丁管理等。

例子

设置强密码策略:

sudo nano /etc/security/pwquality.conf
添加或修改以下行:
 
minlen = 14
minclass = 4
 

安全工具(Tripwire、AIDE等)

安全工具用于检测系统文件的更改,从而提供入侵检测功能。Tripwire和AIDE是两种常用的文件完整性检查工具。

例子

安装AIDE:

sudo apt-get update
sudo apt-get install aide
 
初始化AIDE数据库:

sudo aide --init
 
之后,定期运行AIDE来检查文件系统更改:

sudo aide --check
 

6.2漏洞扫描与修复

漏洞扫描工具可以检测系统中的安全漏洞。修复通常涉及应用安全补丁和配置更改。

例子

使用OpenVAS进行漏洞扫描:

sudo apt-get update
sudo apt-get install openvas

启动OpenVAS服务并执行扫描(OpenVAS配置较为复杂,需要按照官方文档进行)。

6.3系统加固

系统加固是减少系统攻击面和提高安全性的过程。这包括关闭不必要的服务、限制网络访问、配置防火墙规则等。

例子

关闭不必要的服务:

sudo systemctl disable cups
sudo systemctl stop cups

配置防火墙规则(使用iptables):

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH连接
sudo iptables -A INPUT -j DROP # 默认拒绝所有其他输入连接
sudo iptables -A FORWARD -j DROP # 默认拒绝所有转发连接
sudo iptables-save > /etc/iptables/rules.v4