1、Linux基本操作
1.1文件和目录管理
- 文件创建:使用
touch
命令可以创建一个空文件或者修改文件 - 文件查看:使用
cat
可以查看文件内容,less
和more
用于分页查看。 - 文件编辑:
vi
和nano
是常用的文本编辑器。 - 目录创建:
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网络配置与管理
- 查看网络接口信息:
ifconfig
或ip
用于查看和配置网络接口。 - 测试网络连接:
ping
用于测试网络连接。 - 查看路由表:
route
或ip 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支持if
、else
和elif
。
例如:
#!/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支持for
、while
和until
循环。
例如:
#!/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进程管理
进程管理包括查看、终止和管理系统中的进程。ps
、top
和kill
是常用的进程管理工具。
**查看当前运行进程**:
ps aux
**终止进程:**
kill -9 <PID>
3.3内存管理
内存管理涉及监控和优化系统内存使用。free
和vmstat
是常用的内存管理工具。
**查看内存使用情况:**
free -m
3.4CPU管理
CPU管理包括监控CPU使用情况和负载。top
和htop
是监控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