|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 引言
openSUSE是一个稳定、安全且易于使用的Linux发行版,适合从个人桌面用户到企业服务器的各种应用场景。作为最古老的Linux发行版之一,openSUSE拥有强大的社区支持和完善的文档体系。本教程将带领您从零开始,逐步深入openSUSE的世界,最终成为一名Linux专家。无论您是Linux新手还是有经验的用户,本教程都能为您提供系统的学习路径和实用的知识技能。
2. openSUSE简介
2.1 openSUSE的历史
openSUSE起源于1992年的S.u.S.E Linux(Software und System-Entwicklung),后来发展为SUSE Linux,在2003年Novell收购SUSE后,于2005年成立了openSUSE项目,使其成为一个社区驱动的开源项目。2014年,SUSE被Micro Focus收购,然后在2018年成为独立公司,但openSUSE项目始终保持其社区驱动的特性。
2.2 openSUSE的特点
openSUSE有两大主要版本:
1. openSUSE Leap:使用SUSE Linux Enterprise(SLE)的源代码,提供稳定可靠的企业级基础,适合需要稳定性的用户和企业环境。
2. openSUSE Tumbleweed:滚动发布版本,提供最新的软件包,适合喜欢追新技术的开发者和用户。
openSUSE的主要特点包括:
• YaST控制中心:openSUSE独有的系统管理工具,提供图形化界面进行系统配置。
• 强大的包管理系统:使用RPM包格式和ZYpp包管理器,提供高效的依赖解析。
• 优秀的文档:openSUSE拥有最完善的官方文档之一,帮助用户解决各种问题。
• KDE和GNOME桌面环境:提供优秀的桌面体验,特别是KDE Plasma桌面。
• Open Build Service:强大的协作构建和分发平台,用于开发软件包。
2.3 为什么选择openSUSE
选择openSUSE的理由包括:
• 稳定性与新软件的平衡(Leap版本)
• 最新的软件包(Tumbleweed版本)
• 出色的系统管理工具(YaST)
• 强大的社区支持
• 完善的文档
• 适合从桌面到服务器的各种应用场景
3. 新手入门部分
3.1 安装openSUSE
首先,从openSUSE官方网站下载适合的版本:
• Leap版本:https://software.opensuse.org/distributions/leap
• Tumbleweed版本:https://software.opensuse.org/distributions/tumbleweed
您可以选择DVD ISO(包含常用软件)或网络安装ISO(较小,需要网络连接安装)。
在Linux系统上,可以使用dd命令创建USB安装介质:
- # 确定USB设备(例如/dev/sdb)
- lsblk
- # 卸载USB设备(如果已挂载)
- sudo umount /dev/sdb*
- # 写入ISO到USB设备
- sudo dd if=openSUSE-Leap-15.4-DVD-x86_64.iso of=/dev/sdb bs=4M status=progress
- sync
复制代码
在Windows系统上,可以使用Rufus或balenaEtcher等工具创建USB安装介质。
1. 从USB或DVD启动计算机,选择”Installation”选项。
2. 选择语言和键盘布局。
3. 同步时间(NTP设置)。
4. 选择安装模式(新安装或升级)。
5. 进行磁盘分区(可以选择自动分区或手动分区)。
6. 创建用户账户和设置root密码。
7. 确认安装设置,开始安装。
8. 安装完成后,重启系统。
3.2 基本系统配置
安装完成后,首先更新系统:
- # 刷新软件仓库
- sudo zypper ref
- # 列出可用更新
- sudo zypper lu
- # 应用所有更新
- sudo zypper up
复制代码- # 添加新用户
- sudo useradd -m username
- # 设置用户密码
- sudo passwd username
- # 将用户添加到sudo组(Wheel组)
- sudo usermod -aG wheel username
复制代码
openSUSE通常会在安装时自动配置网络。如果需要手动配置,可以使用YaST或命令行工具:
- # 查看网络接口
- ip a
- # 使用nmcli配置网络(NetworkManager命令行工具)
- # 显示可用连接
- nmcli connection show
- # 激活连接
- nmcli connection up "连接名称"
- # 配置静态IP
- nmcli connection modify "连接名称" ipv4.addresses 192.168.1.100/24
- nmcli connection modify "连接名称" ipv4.gateway 192.168.1.1
- nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 8.8.4.4"
- nmcli connection modify "连接名称" ipv4.method manual
- nmcli connection up "连接名称"
复制代码
3.3 YaST控制中心使用
YaST(Yet another Setup Tool)是openSUSE的核心管理工具,提供了图形化和文本界面来管理系统。
• 图形界面:在应用程序菜单中找到YaST
• 命令行:运行sudo yast2或sudo yast
1. 软件管理:安装、删除和更新软件包
2. 网络设置:配置网络接口、DNS、主机名等
3. 用户和组管理:管理系统用户和组
4. 系统服务:管理系统服务和运行级别
5. 引导加载器:配置GRUB引导加载器
6. 分区器:管理磁盘分区
7. 防火墙:配置系统防火墙
- # 启动YaST软件管理模块
- sudo yast2 sw_single
- # 或者使用命令行安装软件
- sudo zypper install 软件包名称
复制代码
3.4 基本命令行操作
- # 列出目录内容
- ls -la
- # 切换目录
- cd /path/to/directory
- # 显示当前工作目录
- pwd
- # 创建目录
- mkdir new_directory
- # 创建文件
- touch new_file.txt
- # 复制文件
- cp source_file destination_file
- # 移动/重命名文件
- mv old_name new_name
- # 删除文件
- rm file_name
- # 删除目录及其内容
- rm -r directory_name
- # 查看文件内容
- cat file_name
- # 分页查看文件内容
- less file_name
- # 查看文件前几行
- head -n 10 file_name
- # 查看文件后几行
- tail -n 10 file_name
复制代码
openSUSE默认安装了多种文本编辑器,如Vim和Nano。
Nano编辑器基本使用:
- # 打开或创建文件
- nano file.txt
- # 保存文件:Ctrl+O
- # 退出编辑器:Ctrl+X
- # 搜索文本:Ctrl+W
- # 复制:Alt+6
- # 剪切:Ctrl+K
- # 粘贴:Ctrl+U
复制代码
Vim编辑器基本使用:
- # 打开或创建文件
- vim file.txt
- # 插入模式:按 i
- # 退出插入模式:按 Esc
- # 保存并退出:在命令模式下输入 :wq
- # 不保存退出:在命令模式下输入 :q!
- # 搜索:在命令模式下输入 /搜索词
- # 替换:在命令模式下输入 :s/旧词/新词/g
复制代码- # 查看文件权限
- ls -l file_name
- # 修改文件权限
- chmod 755 file_name
- # 修改文件所有者
- chown user:group file_name
- # 修改目录及其内容的权限
- chmod -R 755 directory_name
- # 修改目录及其内容的所有者
- chown -R user:group directory_name
复制代码
权限数字表示法:
• 7 (rwx): 读取、写入、执行
• 6 (rw-): 读取、写入
• 5 (r-x): 读取、执行
• 4 (r–): 读取
• 3 (-wx): 写入、执行
• 2 (-w-): 写入
• 1 (–x): 执行
• 0 (—): 无权限
- # 查看系统信息
- uname -a
- # 查看内核版本
- uname -r
- # 查看CPU信息
- cat /proc/cpuinfo
- # 查看内存信息
- cat /proc/meminfo
- free -h
- # 查看磁盘使用情况
- df -h
- # 查看系统运行时间
- uptime
- # 查看当前登录用户
- who
- w
复制代码
3.5 软件包管理(zypper)
zypper是openSUSE的命令行包管理器,功能强大且高效。
- # 刷新软件仓库
- sudo zypper refresh
- # 更新所有软件包
- sudo zypper update
- # 安装软件包
- sudo zypper install 软件包名称
- # 删除软件包
- sudo zypper remove 软件包名称
- # 搜索软件包
- zypper search 关键词
- # 显示软件包信息
- zypper info 软件包名称
- # 列出所有仓库
- zypper repos
- # 添加仓库
- sudo zypper addrepo 仓库URL 仓库名称
- # 删除仓库
- sudo zypper removerepo 仓库名称
- # 清理本地缓存
- sudo zypper clean
复制代码
openSUSE使用软件模式来组织相关软件包的集合:
- # 列出所有可用的软件模式
- zypper patterns
- # 安装软件模式
- sudo zypper install -t pattern 模式名称
- # 例如,安装KDE桌面环境
- sudo zypper install -t pattern kde
- # 安装LAMP服务器环境
- sudo zypper install -t pattern lamp_server
复制代码- # 锁定软件包,防止更新
- sudo zypper addlock 软件包名称
- # 解锁软件包
- sudo zypper removelock 软件包名称
- # 列出所有锁定的软件包
- zypper locks
复制代码- # 安装本地RPM文件
- sudo rpm -ivh package.rpm
- # 升级本地RPM文件
- sudo rpm -Uvh package.rpm
- # 删除已安装的RPM包
- sudo rpm -e package_name
复制代码
4. 中级进阶部分
4.1 系统管理与维护
openSUSE使用systemd作为系统和服务管理器。
- # 列出所有服务
- systemctl list-unit-files --type=service
- # 查看服务状态
- systemctl status 服务名称
- # 启动服务
- sudo systemctl start 服务名称
- # 停止服务
- sudo systemctl stop 服务名称
- # 重启服务
- sudo systemctl restart 服务名称
- # 重新加载服务配置
- sudo systemctl reload 服务名称
- # 启用服务(开机自启)
- sudo systemctl enable 服务名称
- # 禁用服务(禁止开机自启)
- sudo systemctl disable 服务名称
- # 查看服务日志
- journalctl -u 服务名称
- # 查看实时日志
- journalctl -f
复制代码- # 查看系统日志
- journalctl
- # 查看内核日志
- journalctl -k
- # 查看特定时间段的日志
- journalctl --since "2023-01-01" --until "2023-01-02"
- # 查看特定服务的日志
- journalctl -u 服务名称
- # 限制显示的行数
- journalctl -n 100
- # 持续跟踪日志更新
- journalctl -f
- # 清理旧日志
- sudo journalctl --vacuum-size=100M
复制代码
使用rsync进行系统备份:
- # 安装rsync
- sudo zypper install rsync
- # 备份整个系统(排除一些目录)
- sudo rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /path/to/backup/location
- # 从备份恢复系统
- sudo rsync -aAXv /path/to/backup/location /
复制代码
使用tar创建压缩备份:
- # 创建完整系统备份(排除一些目录)
- sudo tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/run --exclude=/media --exclude=/lost+found /
- # 解压备份
- sudo tar -xvpzf backup.tar.gz -C /
复制代码
使用top和htop监控系统资源:
- # 安装htop
- sudo zypper install htop
- # 使用top
- top
- # 使用htop
- htop
复制代码
使用vmstat监控系统性能:
- # 显示虚拟内存统计
- vmstat
- # 每秒更新一次,共5次
- vmstat 1 5
复制代码
使用iostat监控磁盘I/O:
- # 安装sysstat包
- sudo zypper install sysstat
- # 显示磁盘I/O统计
- iostat
- # 每秒更新一次,共5次
- iostat 1 5
复制代码
4.2 网络配置与管理
使用NetworkManager进行高级网络配置:
- # 显示所有网络连接
- nmcli connection show
- # 显示活动连接
- nmcli connection show --active
- # 创建新的有线连接
- nmcli connection add type ethernet ifname eth0 con-name "Wired Connection"
- # 配置静态IP
- nmcli connection modify "Wired Connection" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual
- # 配置DHCP
- nmcli connection modify "Wired Connection" ipv4.method auto
- # 激活连接
- nmcli connection up "Wired Connection"
- # 断开连接
- nmcli connection down "Wired Connection"
复制代码
openSUSE使用firewalld作为防火墙管理工具:
- # 安装firewalld
- sudo zypper install firewalld
- # 启动并启用firewalld
- sudo systemctl start firewalld
- sudo systemctl enable firewalld
- # 查看防火墙状态
- sudo firewall-cmd --state
- # 查看默认区域
- sudo firewall-cmd --get-default-zone
- # 查看活动区域
- sudo firewall-cmd --get-active-zones
- # 查看当前区域的规则
- sudo firewall-cmd --list-all
- # 开放端口
- sudo firewall-cmd --permanent --add-port=80/tcp
- # 关闭端口
- sudo firewall-cmd --permanent --remove-port=80/tcp
- # 开放服务
- sudo firewall-cmd --permanent --add-service=http
- # 关闭服务
- sudo firewall-cmd --permanent --remove-service=http
- # 重新加载防火墙规则
- sudo firewall-cmd --reload
复制代码- # 测试网络连通性
- ping 目标地址
- # 跟踪网络路径
- traceroute 目标地址
- # 显示网络连接、路由表、接口统计等
- netstat -a
- # 显示路由表
- netstat -r
- # 显示网络接口统计
- netstat -i
- # 显示监听的端口
- netstat -tuln
- # 使用ss命令(netstat的现代替代品)
- ss -tuln
- # 使用nmap扫描网络端口
- # 安装nmap
- sudo zypper install nmap
- # 扫描本地主机开放端口
- nmap localhost
- # 扫描远程主机
- nmap 远程主机地址
复制代码
NFS服务器配置:
- # 安装NFS服务器
- sudo zypper install nfs-kernel-server
- # 创建共享目录
- sudo mkdir /shared
- sudo chmod 777 /shared
- # 配置NFS共享
- echo "/shared *(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
- # 导出共享目录
- sudo exportfs -a
- # 启动并启用NFS服务
- sudo systemctl start nfs-server
- sudo systemctl enable nfs-server
- # 配置防火墙允许NFS
- sudo firewall-cmd --permanent --add-service=nfs
- sudo firewall-cmd --permanent --add-service=mountd
- sudo firewall-cmd --permanent --add-service=rpc-bind
- sudo firewall-cmd --reload
复制代码
Samba服务器配置:
- # 安装Samba
- sudo zypper install samba
- # 配置Samba共享
- sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
- sudo tee /etc/samba/smb.conf > /dev/null <<EOL
- [global]
- workgroup = WORKGROUP
- server string = SUSE Server
- security = user
- map to guest = Bad User
- dns proxy = no
- [shared]
- path = /shared
- browsable = yes
- writable = yes
- guest ok = yes
- read only = no
- EOL
- # 创建Samba用户
- sudo smbpasswd -a username
- # 启动并启用Samba服务
- sudo systemctl start smb nmb
- sudo systemctl enable smb nmb
- # 配置防火墙允许Samba
- sudo firewall-cmd --permanent --add-service=samba
- sudo firewall-cmd --reload
复制代码
4.3 用户和权限管理
- # 创建用户并指定主目录和shell
- sudo useradd -m -s /bin/bash username
- # 设置用户密码
- sudo passwd username
- # 修改用户属性
- sudo usermod -s /bin/zsh username # 修改shell
- sudo usermod -d /new/home username # 修改主目录
- sudo usermod -l newname oldname # 修改用户名
- # 锁定用户账户
- sudo usermod -L username
- # 解锁用户账户
- sudo usermod -U username
- # 设置用户密码过期时间
- sudo chage -M 90 username # 90天后过期
- # 查看用户密码过期信息
- sudo chage -l username
- # 强制用户在下次登录时更改密码
- sudo chage -d 0 username
- # 删除用户及其主目录
- sudo userdel -r username
复制代码- # 创建新组
- sudo groupadd groupname
- # 删除组
- sudo groupdel groupname
- # 将用户添加到组
- sudo usermod -aG groupname username
- # 从组中移除用户
- sudo gpasswd -d username groupname
- # 修改组名称
- sudo groupmod -n newname oldname
- # 查看用户所属的组
- groups username
- # 查看组中的所有用户
- getent group groupname
复制代码
ACL(访问控制列表):
- # 安装ACL工具
- sudo zypper install acl
- # 查看文件ACL
- getfacl filename
- # 设置文件ACL
- setfacl -m u:username:rw filename
- # 设置目录ACL(递归)
- setfacl -R -m u:username:rwx directory
- # 设置默认ACL(新创建的文件继承)
- setfacl -d -m u:username:rwx directory
- # 删除ACL
- setfacl -x u:username filename
- # 删除所有ACL
- setfacl -b filename
复制代码
特殊权限位:
- # 设置SUID(执行文件时以文件所有者权限运行)
- chmod u+s filename
- # 设置SGID(在目录中创建的文件继承目录的组)
- chmod g+s directory
- # 设置Sticky Bit(只有文件所有者才能删除文件)
- chmod +t directory
- # 查看特殊权限位
- ls -ld filename
复制代码- # 编辑sudoers文件
- sudo visudo
- # 允许用户执行所有命令
- username ALL=(ALL) ALL
- # 允许用户执行特定命令
- username ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl
- # 允许用户无密码执行特定命令
- username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd
- # 允许组中的用户执行所有命令
- %groupname ALL=(ALL) ALL
- # 查看sudo权限
- sudo -l
复制代码
4.4 服务管理(systemd)
创建一个简单的自定义服务:
- # 创建服务文件
- sudo nano /etc/systemd/system/myservice.service
复制代码
服务文件内容示例:
- [Unit]
- Description=My Custom Service
- After=network.target
- [Service]
- Type=simple
- ExecStart=/usr/local/bin/my-script.sh
- Restart=on-failure
- User=myuser
- Group=mygroup
- [Install]
- WantedBy=multi-user.target
复制代码- # 重新加载systemd配置
- sudo systemctl daemon-reload
- # 启动服务
- sudo systemctl start myservice
- # 启用服务(开机自启)
- sudo systemctl enable myservice
- # 查看服务状态
- sudo systemctl status myservice
复制代码- # 查看当前目标
- systemctl get-default
- # 列出所有可用目标
- systemctl list-unit-files --type=target
- # 设置默认目标
- sudo systemctl set-default multi-user.target # 命令行模式
- sudo systemctl set-default graphical.target # 图形模式
- # 切换到不同目标
- sudo systemctl isolate multi-user.target
- # 查看当前激活的目标
- systemctl list-units --type=target
复制代码
使用systemd定时器替代cron:
- # 创建定时器文件
- sudo nano /etc/systemd/system/mytimer.timer
复制代码
定时器文件内容示例:
- [Unit]
- Description=Run my service daily
- [Timer]
- OnCalendar=daily
- Persistent=true
- [Install]
- WantedBy=timers.target
复制代码- # 创建对应的服务文件
- sudo nano /etc/systemd/system/mytimer.service
复制代码
服务文件内容示例:
- [Unit]
- Description=My Timer Service
- [Service]
- Type=oneshot
- ExecStart=/usr/local/bin/my-script.sh
复制代码- # 重新加载systemd配置
- sudo systemctl daemon-reload
- # 启用并启动定时器
- sudo systemctl enable --now mytimer.timer
- # 查看定时器状态
- systemctl list-timers --all
复制代码- # 查看系统日志大小
- journalctl --disk-usage
- # 限制日志大小
- sudo journalctl --vacuum-size=100M
- # 配置持久化日志设置
- sudo nano /etc/systemd/journald.conf
复制代码
配置示例:
- [Journal]
- SystemMaxUse=100M
- RuntimeMaxUse=50M
- SystemMaxFileSize=10M
复制代码- # 重启journald服务
- sudo systemctl restart systemd-journald
- # 将日志导出到文件
- journalctl -u 服务名称 > service.log
复制代码
4.5 Shell脚本编程基础
创建一个简单的Shell脚本:
- #!/bin/bash
- # 这是一个注释
- # 定义变量
- NAME="openSUSE"
- VERSION="Leap 15.4"
- # 输出变量
- echo "Welcome to $NAME $VERSION"
- # 使用if条件
- if [ "$USER" = "root" ]; then
- echo "You are running as root."
- else
- echo "You are running as $USER."
- fi
- # 使用for循环
- for i in {1..5}; do
- echo "Count: $i"
- done
- # 使用while循环
- COUNT=0
- while [ $COUNT -lt 5 ]; do
- echo "Count: $COUNT"
- COUNT=$((COUNT + 1))
- done
- # 使用函数
- hello() {
- echo "Hello, $1!"
- }
- # 调用函数
- hello "World"
复制代码- #!/bin/bash
- # 显示所有参数
- echo "All arguments: $@"
- # 显示参数个数
- echo "Number of arguments: $#"
- # 显示脚本名称
- echo "Script name: $0"
- # 使用getopts处理选项
- while getopts ":a:b:" opt; do
- case $opt in
- a)
- echo "Option -a with argument: $OPTARG"
- ;;
- b)
- echo "Option -b with argument: $OPTARG"
- ;;
- \?)
- echo "Invalid option: -$OPTARG" >&2
- exit 1
- ;;
- :)
- echo "Option -$OPTARG requires an argument." >&2
- exit 1
- ;;
- esac
- done
复制代码- #!/bin/bash
- # 检查文件是否存在
- if [ -f "/etc/passwd" ]; then
- echo "/etc/passwd exists."
- else
- echo "/etc/passwd does not exist."
- fi
- # 检查目录是否存在
- if [ -d "/home" ]; then
- echo "/home directory exists."
- else
- echo "/home directory does not exist."
- fi
- # 读取文件内容
- while IFS= read -r line; do
- echo "Line: $line"
- done < /etc/os-release
- # 写入文件
- echo "This line will be written to file." > output.txt
- echo "This line will be appended to file." >> output.txt
- # 复制文件
- cp source.txt destination.txt
- # 移动/重命名文件
- mv oldname.txt newname.txt
- # 删除文件
- rm file.txt
复制代码- #!/bin/bash
- # 基本算术运算
- a=10
- b=20
- # 使用let
- let sum=a+b
- echo "Sum: $sum"
- # 使用$(( ))
- difference=$((a - b))
- echo "Difference: $difference"
- # 使用expr
- product=$(expr $a \* $b)
- echo "Product: $product"
- # 使用bc进行浮点运算
- # 安装bc
- sudo zypper install bc
- division=$(echo "scale=2; $a / $b" | bc)
- echo "Division: $division"
- # 使用awk进行复杂计算
- result=$(awk "BEGIN {print sqrt($a)}")
- echo "Square root of $a: $result"
复制代码
5. 专家高级部分
5.1 系统优化与性能调优
- # 查看当前内核参数
- sysctl -a
- # 临时修改内核参数
- sudo sysctl -w net.core.rmem_max=16777216
- # 永久修改内核参数
- echo "net.core.rmem_max=16777216" | sudo tee -a /etc/sysctl.conf
- # 加载新的内核参数
- sudo sysctl -p
- # 查看系统限制
- ulimit -a
- # 修改用户限制
- echo "* soft nofile 65536" | sudo tee -a /etc/security/limits.conf
- echo "* hard nofile 65536" | sudo tee -a /etc/security/limits.conf
复制代码- # 检查文件系统
- sudo fsck /dev/sda1
- # 调整文件系统参数
- sudo tune2fs -o journal_data_writeback /dev/sda1
- # 查看文件系统信息
- sudo tune2fs -l /dev/sda1
- # 使用noat选项挂载文件系统以提高性能
- echo "/dev/sda1 / ext4 defaults,noatime 0 0" | sudo tee -a /etc/fstab
- # 重新挂载所有文件系统
- sudo mount -o remount /
复制代码- # 查看内存使用情况
- free -h
- cat /proc/meminfo
- # 调整swappiness值(0-100,值越低越少使用swap)
- echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
- sudo sysctl -p
- # 清理页面缓存
- sudo sync
- echo 1 | sudo tee /proc/sys/vm/drop_caches
- # 清理目录项和inode
- echo 2 | sudo tee /proc/sys/vm/drop_caches
- # 清理页面缓存、目录项和inode
- echo 3 | sudo tee /proc/sys/vm/drop_caches
复制代码- # 查看磁盘I/O统计
- iostat -xz 1
- # 使用ionice设置进程I/O优先级
- ionice -c 1 -n 0 command # 最高优先级
- ionice -c 3 command # 最低优先级
- # 查看磁盘调度器
- cat /sys/block/sda/queue/scheduler
- # 更改磁盘调度器
- echo noop | sudo tee /sys/block/sda/queue/scheduler
- # 永久更改磁盘调度器
- echo "echo noop > /sys/block/sda/queue/scheduler" | sudo tee -a /etc/rc.local
- sudo chmod +x /etc/rc.local
复制代码
5.2 安全加固
- # 禁用root登录
- sudo passwd -l root
- # 配置密码策略
- sudo nano /etc/login.defs
复制代码
配置示例:
- PASS_MAX_DAYS 90
- PASS_MIN_DAYS 7
- PASS_WARN_AGE 14
- PASS_MIN_LEN 8
复制代码- # 安装并配置fail2ban防止暴力破解
- sudo zypper install fail2ban
- sudo systemctl start fail2ban
- sudo systemctl enable fail2ban
- # 配置fail2ban
- sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- sudo nano /etc/fail2ban/jail.local
复制代码
配置示例:
- [sshd]
- enabled = true
- port = ssh
- filter = sshd
- logpath = /var/log/messages
- maxretry = 3
- bantime = 3600
复制代码- # 重启fail2ban
- sudo systemctl restart fail2ban
复制代码- # 安装AppArmor
- sudo zypper install apparmor-parser apparmor-utils
- # 查看AppArmor状态
- sudo aa-status
- # 为程序创建AppArmor配置文件
- sudo aa-genprof /usr/bin/nginx
- # 强制执行AppArmor配置
- sudo aa-enforce /usr/bin/nginx
- # 将AppArmor设为抱怨模式(仅记录违规)
- sudo aa-complain /usr/bin/nginx
- # 更新AppArmor配置
- sudo aa-logprof
复制代码- # 安装auditd
- sudo zypper install audit
- # 启动并启用auditd
- sudo systemctl start auditd
- sudo systemctl enable auditd
- # 添加审计规则
- sudo auditctl -w /etc/passwd -p wa -k passwd_changes
- sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
- # 查看审计日志
- sudo ausearch -k passwd_changes
- sudo ausearch -k sudoers_changes
- # 生成审计报告
- sudo aureport -a
- sudo aureport -m
复制代码- # 安装SELinux
- sudo zypper install selinux-tools policycoreutils
- # 启用SELinux
- sudo nano /etc/sysconfig/selinux
复制代码
配置示例:
- SELINUX=enforcing
- SELINUXTYPE=targeted
复制代码- # 创建SELinux文件系统标记
- sudo fixfiles -f relabel
- # 重启系统
- sudo reboot
- # 查看SELinux状态
- sestatus
- # 查看SELinux布尔值
- getsebool -a
- # 设置SELinux布尔值
- sudo setsebool -P httpd_can_network_connect on
- # 查看SELinux上下文
- ls -Z /var/www/html/
- # 更改文件SELinux上下文
- sudo chcon -R -t httpd_sys_content_t /var/www/html/
复制代码
5.3 虚拟化与容器技术
- # 检查系统是否支持虚拟化
- grep -E 'vmx|svm' /proc/cpuinfo
- # 安装KVM和相关工具
- sudo zypper install kvm libvirt virt-manager qemu-kvm
- # 将用户添加到libvirt组
- sudo usermod -aG libvirt $(whoami)
- # 重启系统或重新登录
- sudo reboot
- # 启动并启用libvirtd服务
- sudo systemctl start libvirtd
- sudo systemctl enable libvirtd
- # 验证KVM安装
- virsh list --all
- # 使用virt-manager创建虚拟机
- virt-manager
复制代码- # 安装Docker
- sudo zypper install docker
- # 启动并启用Docker服务
- sudo systemctl start docker
- sudo systemctl enable docker
- # 将用户添加到docker组
- sudo usermod -aG docker $(whoami)
- # 重新登录或重启系统
- sudo reboot
- # 验证Docker安装
- docker run hello-world
- # 搜索Docker镜像
- docker search opensuse
- # 下载Docker镜像
- docker pull opensuse/leap:15.4
- # 运行Docker容器
- docker run -it opensuse/leap:15.4 /bin/bash
- # 列出所有容器
- docker ps -a
- # 列出所有镜像
- docker images
- # 删除容器
- docker rm container_id
- # 删除镜像
- docker rmi image_id
复制代码- # 安装Kubernetes工具
- sudo zypper install kubernetes-client kubernetes-node kubernetes-master
- # 禁用交换分区
- sudo swapoff -a
- sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
- # 配置网络参数
- echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf
- echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
- sudo sysctl -p
- # 启动并启用kubelet服务
- sudo systemctl start kubelet
- sudo systemctl enable kubelet
- # 初始化Kubernetes主节点
- sudo kubeadm init --pod-network-cidr=10.244.0.0/16
- # 配置kubectl
- mkdir -p $HOME/.kube
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- sudo chown $(id -u):$(id -g) $HOME/.kube/config
- # 安装网络插件(例如Flannel)
- kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- # 查看节点状态
- kubectl get nodes
- # 加入工作节点(在其他节点上执行)
- sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash>
复制代码- # 安装LXD
- sudo zypper install lxd
- # 将用户添加到lxd组
- sudo usermod -aG lxd $(whoami)
- # 重新登录或重启系统
- sudo reboot
- # 初始化LXD
- lxd init
- # 创建容器
- lxc launch images:opensuse/15.4 my-container
- # 列出所有容器
- lxc list
- # 进入容器
- lxc exec my-container -- /bin/bash
- # 停止容器
- lxc stop my-container
- # 启动容器
- lxc start my-container
- # 删除容器
- lxc delete my-container
复制代码
5.4 内核定制与编译
- # 安装编译工具和依赖
- sudo zypper install -t pattern devel_kernel
- sudo zypper install ncurses-devel bc bison flex elfutils-libelf-devel openssl-devel
- # 下载内核源码
- cd /usr/src
- sudo wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.0.tar.xz
- sudo tar -xf linux-5.15.0.tar.xz
- cd linux-5.15.0
复制代码- # 复制当前内核配置
- sudo cp /boot/config-$(uname -r) .config
- # 使用make menuconfig配置内核
- make menuconfig
- # 或者使用make oldconfig使用默认配置
- make oldconfig
复制代码- # 清理内核源码
- make clean
- # 编译内核(根据CPU核心数调整-j参数)
- make -j$(nproc)
- # 编译模块
- make modules
- # 安装模块
- sudo make modules_install
- # 安装内核
- sudo make install
- # 更新GRUB配置
- sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- # 重启系统
- sudo reboot
复制代码
创建一个简单的内核模块:
- # 创建模块目录
- mkdir ~/hello_module
- cd ~/hello_module
- # 创建模块源码文件
- nano hello.c
复制代码
hello.c内容:
- #include <linux/init.h>
- #include <linux/module.h>
- #include <linux/kernel.h>
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("Your Name");
- MODULE_DESCRIPTION("A simple Hello World kernel module.");
- MODULE_VERSION("0.1");
- static int __init hello_init(void) {
- printk(KERN_INFO "Hello, World!\n");
- return 0;
- }
- static void __exit hello_exit(void) {
- printk(KERN_INFO "Goodbye, World!\n");
- }
- module_init(hello_init);
- module_exit(hello_exit);
复制代码- # 创建Makefile
- nano Makefile
复制代码
Makefile内容:
- obj-m += hello.o
- all:
- make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
- clean:
- make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
复制代码- # 编译模块
- make
- # 加载模块
- sudo insmod hello.ko
- # 查看模块输出
- dmesg | tail
- # 列出已加载的模块
- lsmod | grep hello
- # 卸载模块
- sudo rmmod hello
- # 再次查看模块输出
- dmesg | tail
复制代码
5.5 服务器配置与管理
- # 安装Apache
- sudo zypper install apache2
- # 启动并启用Apache服务
- sudo systemctl start apache2
- sudo systemctl enable apache2
- # 配置防火墙允许HTTP和HTTPS
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
- # 创建虚拟主机配置
- sudo nano /etc/apache2/vhosts.d/mysite.conf
复制代码
虚拟主机配置示例:
- <VirtualHost *:80>
- ServerName www.example.com
- DocumentRoot /srv/www/htdocs/mysite
- ErrorLog /var/log/apache2/mysite-error_log
- CustomLog /var/log/apache2/mysite-access_log combined
- </VirtualHost>
复制代码- # 创建网站目录和文件
- sudo mkdir -p /srv/www/htdocs/mysite
- echo "<html><body><h1>Hello from openSUSE Apache Server!</h1></body></html>" | sudo tee /srv/www/htdocs/mysite/index.html
- # 设置正确的权限
- sudo chown -R wwwrun:www /srv/www/htdocs/mysite
- # 检查Apache配置
- sudo apache2ctl configtest
- # 重启Apache服务
- sudo systemctl restart apache2
复制代码- # 安装MariaDB
- sudo zypper install mariadb mariadb-client
- # 启动并启用MariaDB服务
- sudo systemctl start mariadb
- sudo systemctl enable mariadb
- # 运行安全安装脚本
- sudo mysql_secure_installation
- # 登录MariaDB
- mysql -u root -p
- # 创建数据库和用户
- CREATE DATABASE mydb;
- CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
- GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
- FLUSH PRIVILEGES;
- EXIT;
- # 配置防火墙允许MySQL
- sudo firewall-cmd --permanent --add-service=mysql
- sudo firewall-cmd --reload
复制代码- # 安装Postfix
- sudo zypper install postfix
- # 启动并启用Postfix服务
- sudo systemctl start postfix
- sudo systemctl enable postfix
- # 配置Postfix
- sudo nano /etc/postfix/main.cf
复制代码
Postfix配置示例:
- myhostname = mail.example.com
- mydomain = example.com
- myorigin = $mydomain
- inet_interfaces = all
- mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
- mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- home_mailbox = Maildir/
复制代码- # 重启Postfix服务
- sudo systemctl restart postfix
- # 安装mailx命令行邮件客户端
- sudo zypper install mailx
- # 发送测试邮件
- echo "This is a test email." | mail -s "Test Email" user@example.com
- # 配置防火墙允许SMTP
- sudo firewall-cmd --permanent --add-service=smtp
- sudo firewall-cmd --reload
复制代码
NFS服务器配置(已在4.2.4节详细介绍)
Samba服务器配置(已在4.2.4节详细介绍)
6. openSUSE社区与资源
6.1 官方资源
• openSUSE官网:https://www.opensuse.org/
• openSUSE Wiki:https://en.opensuse.org/Portal:Wiki
• openSUSE文档:https://doc.opensuse.org/
• openSUSE论坛:https://forums.opensuse.org/
• openSUSE邮件列表:https://lists.opensuse.org/
6.2 社区支持
• IRC频道:#opensuse 和 #suse 在 Libera.Chat
• Reddit社区:https://www.reddit.com/r/openSUSE/
• Telegram群组:https://t.me/opensuse
• Stack Exchange:https://unix.stackexchange.com/questions/tagged/opensuse
6.3 软件资源
• Open Build Service:https://build.opensuse.org/
• 软件搜索:https://software.opensuse.org/
• Packman仓库:https://packman.links2linux.org/
• 社区仓库:https://en.opensuse.org/Additional_package_repositories
6.4 新闻与博客
• openSUSE新闻:https://news.opensuse.org/
• openSUSE Lizard:https://lizards.opensuse.org/
• Planet openSUSE:https://planet.opensuse.org/
7. 学习路径建议
7.1 新手阶段(1-3个月)
1. 熟悉基本系统操作安装openSUSE Leap或Tumbleweed学习使用YaST进行基本系统配置熟悉KDE或GNOME桌面环境
2. 安装openSUSE Leap或Tumbleweed
3. 学习使用YaST进行基本系统配置
4. 熟悉KDE或GNOME桌面环境
5. 掌握基本命令行操作学习常用的Linux命令(ls, cd, cp, mv, rm等)熟悉文件和目录管理学习使用文本编辑器(Nano或Vim)
6. 学习常用的Linux命令(ls, cd, cp, mv, rm等)
7. 熟悉文件和目录管理
8. 学习使用文本编辑器(Nano或Vim)
9. 软件包管理学习使用zypper安装、更新和删除软件熟悉软件仓库的概念和添加方法了解软件模式(Patterns)的使用
10. 学习使用zypper安装、更新和删除软件
11. 熟悉软件仓库的概念和添加方法
12. 了解软件模式(Patterns)的使用
13. 用户和权限管理学习创建和管理用户账户了解基本权限概念和chmod命令学习使用sudo进行权限提升
14. 学习创建和管理用户账户
15. 了解基本权限概念和chmod命令
16. 学习使用sudo进行权限提升
熟悉基本系统操作
• 安装openSUSE Leap或Tumbleweed
• 学习使用YaST进行基本系统配置
• 熟悉KDE或GNOME桌面环境
掌握基本命令行操作
• 学习常用的Linux命令(ls, cd, cp, mv, rm等)
• 熟悉文件和目录管理
• 学习使用文本编辑器(Nano或Vim)
软件包管理
• 学习使用zypper安装、更新和删除软件
• 熟悉软件仓库的概念和添加方法
• 了解软件模式(Patterns)的使用
用户和权限管理
• 学习创建和管理用户账户
• 了解基本权限概念和chmod命令
• 学习使用sudo进行权限提升
7.2 中级阶段(3-6个月)
1. 系统管理深入学习systemd服务管理掌握系统日志分析和故障排除学习系统备份和恢复方法
2. 深入学习systemd服务管理
3. 掌握系统日志分析和故障排除
4. 学习系统备份和恢复方法
5. 网络配置掌握高级网络配置(静态IP、路由等)学习防火墙配置(firewalld)了解网络共享服务(NFS、Samba)
6. 掌握高级网络配置(静态IP、路由等)
7. 学习防火墙配置(firewalld)
8. 了解网络共享服务(NFS、Samba)
9. Shell脚本编程学习编写基本的Shell脚本掌握条件语句、循环和函数学习处理命令行参数和用户输入
10. 学习编写基本的Shell脚本
11. 掌握条件语句、循环和函数
12. 学习处理命令行参数和用户输入
13. 服务器基础学习配置基本的服务(Web、数据库、邮件)了解虚拟化基础(KVM、VirtualBox)学习容器技术(Docker)的基础使用
14. 学习配置基本的服务(Web、数据库、邮件)
15. 了解虚拟化基础(KVM、VirtualBox)
16. 学习容器技术(Docker)的基础使用
系统管理
• 深入学习systemd服务管理
• 掌握系统日志分析和故障排除
• 学习系统备份和恢复方法
网络配置
• 掌握高级网络配置(静态IP、路由等)
• 学习防火墙配置(firewalld)
• 了解网络共享服务(NFS、Samba)
Shell脚本编程
• 学习编写基本的Shell脚本
• 掌握条件语句、循环和函数
• 学习处理命令行参数和用户输入
服务器基础
• 学习配置基本的服务(Web、数据库、邮件)
• 了解虚拟化基础(KVM、VirtualBox)
• 学习容器技术(Docker)的基础使用
7.3 高级阶段(6-12个月)
1. 系统优化学习内核参数调优掌握文件系统优化方法了解内存和磁盘I/O优化
2. 学习内核参数调优
3. 掌握文件系统优化方法
4. 了解内存和磁盘I/O优化
5. 安全加固学习系统安全配置掌握AppArmor或SELinux的使用了解系统审计和安全监控
6. 学习系统安全配置
7. 掌握AppArmor或SELinux的使用
8. 了解系统审计和安全监控
9. 高级虚拟化和容器深入学习KVM虚拟化掌握Docker容器的高级使用学习Kubernetes容器编排
10. 深入学习KVM虚拟化
11. 掌握Docker容器的高级使用
12. 学习Kubernetes容器编排
13. 内核定制学习内核编译和定制掌握内核模块开发了解内核调试和性能分析
14. 学习内核编译和定制
15. 掌握内核模块开发
16. 了解内核调试和性能分析
系统优化
• 学习内核参数调优
• 掌握文件系统优化方法
• 了解内存和磁盘I/O优化
安全加固
• 学习系统安全配置
• 掌握AppArmor或SELinux的使用
• 了解系统审计和安全监控
高级虚拟化和容器
• 深入学习KVM虚拟化
• 掌握Docker容器的高级使用
• 学习Kubernetes容器编排
内核定制
• 学习内核编译和定制
• 掌握内核模块开发
• 了解内核调试和性能分析
7.4 专家阶段(12个月以上)
1. 企业级解决方案设计和实施企业级Linux基础设施掌握高可用性和负载均衡配置学习自动化部署和配置管理(Ansible、Salt等)
2. 设计和实施企业级Linux基础设施
3. 掌握高可用性和负载均衡配置
4. 学习自动化部署和配置管理(Ansible、Salt等)
5. 性能调优专家深入系统性能分析和优化掌握高级监控和性能测试工具学习内核级性能调优
6. 深入系统性能分析和优化
7. 掌握高级监控和性能测试工具
8. 学习内核级性能调优
9. 安全专家设计和实施企业级安全策略掌握高级安全工具和技术学习安全审计和合规性
10. 设计和实施企业级安全策略
11. 掌握高级安全工具和技术
12. 学习安全审计和合规性
13. 社区贡献参与openSUSE项目开发贡献文档或翻译帮助社区解答问题和修复bug
14. 参与openSUSE项目开发
15. 贡献文档或翻译
16. 帮助社区解答问题和修复bug
企业级解决方案
• 设计和实施企业级Linux基础设施
• 掌握高可用性和负载均衡配置
• 学习自动化部署和配置管理(Ansible、Salt等)
性能调优专家
• 深入系统性能分析和优化
• 掌握高级监控和性能测试工具
• 学习内核级性能调优
安全专家
• 设计和实施企业级安全策略
• 掌握高级安全工具和技术
• 学习安全审计和合规性
社区贡献
• 参与openSUSE项目开发
• 贡献文档或翻译
• 帮助社区解答问题和修复bug
8. 网盘资源分享(模拟)
以下是一些模拟的网盘资源链接,这些资源可以帮助您更好地学习openSUSE和Linux系统:
8.1 官方文档和手册
• openSUSE Leap 15.4 官方文档:https://pan.baidu.com/s/opensuse-leap-15.4-docs(提取码:opensuse)
• openSUSE Tumbleweed 指南:https://pan.baidu.com/s/opensuse-tumbleweed-guide(提取码:tumble)
• SUSE Linux Enterprise 文档集:https://pan.baidu.com/s/sle-documentation(提取码:susedoc)
8.2 视频教程
• openSUSE 新手入门视频教程:https://pan.baidu.com/s/opensuse-beginner-videos(提取码:beginner)
• YaST 控制中心使用详解:https://pan.baidu.com/s/yast-tutorial-videos(提取码:yast123)
• openSUSE 服务器配置实战:https://pan.baidu.com/s/opensuse-server-config(提取码:server456)
8.3 电子书籍
• 《openSUSE 权威指南》:https://pan.baidu.com/s/opensuse-authoritative-guide(提取码:guide789)
• 《Linux 命令行与 Shell 脚本编程大全》:https://pan.baidu.com/s/linux-shell-scripting(提取码:shell012)
• 《Linux 系统管理与性能调优》:https://pan.baidu.com/s/linux-performance-tuning(提取码:tune345)
8.4 实验环境和工具
• openSUSE 虚拟机镜像:https://pan.baidu.com/s/opensuse-vm-images(提取码:vmimg678)
• Linux 学习实验环境:https://pan.baidu.com/s/linux-lab-environment(提取码:labenv901)
• Shell 脚本示例集合:https://pan.baidu.com/s/shell-script-examples(提取码:script234)
8.5 认证考试资料
• Linux Foundation 认证考试指南:https://pan.baidu.com/s/linux-foundation-cert-guide(提取码:cert567)
• SUSE 认证工程师(SCE)备考资料:https://pan.baidu.com/s/sce-exam-prep(提取码:sce890)
• LPIC 认证考试题库:https://pan.baidu.com/s/lpic-exam-questions(提取码:lpic123)
注意:以上链接为模拟示例,实际使用时请替换为真实有效的资源链接。同时,请尊重知识产权,仅使用合法授权的学习资源。
9. 总结
openSUSE作为一个强大而灵活的Linux发行版,为从新手到专家的各个层次用户提供了丰富的功能和工具。通过本教程的学习,您已经掌握了从基本系统操作到高级服务器配置的全面知识。
9.1 学习要点回顾
1. 基础知识:您学会了如何安装openSUSE、使用YaST控制中心、掌握基本命令行操作以及使用zypper进行软件包管理。
2. 系统管理:您了解了systemd服务管理、系统日志分析、备份恢复策略以及系统监控方法。
3. 网络配置:您掌握了高级网络配置、防火墙设置、网络共享服务以及网络诊断工具的使用。
4. 用户和权限:您学习了高级用户管理、组管理、ACL权限设置以及sudo配置。
5. Shell脚本:您掌握了Shell脚本编程基础,包括变量、条件语句、循环、函数和文件操作。
6. 高级主题:您了解了系统优化、安全加固、虚拟化与容器技术、内核定制以及服务器配置。
基础知识:您学会了如何安装openSUSE、使用YaST控制中心、掌握基本命令行操作以及使用zypper进行软件包管理。
系统管理:您了解了systemd服务管理、系统日志分析、备份恢复策略以及系统监控方法。
网络配置:您掌握了高级网络配置、防火墙设置、网络共享服务以及网络诊断工具的使用。
用户和权限:您学习了高级用户管理、组管理、ACL权限设置以及sudo配置。
Shell脚本:您掌握了Shell脚本编程基础,包括变量、条件语句、循环、函数和文件操作。
高级主题:您了解了系统优化、安全加固、虚拟化与容器技术、内核定制以及服务器配置。
9.2 持续学习建议
Linux和openSUSE是一个不断发展的领域,持续学习是非常重要的。以下是一些建议:
1. 关注社区动态:定期查看openSUSE新闻、邮件列表和论坛,了解最新发展。
2. 实践项目:通过实际项目应用所学知识,例如搭建个人服务器、开发Shell脚本或参与开源项目。
3. 获取认证:考虑获取Linux相关的专业认证,如LPIC、CompTIA Linux+或SUSE认证。
4. 分享知识:通过博客、论坛或社区活动分享您的知识和经验,帮助他人学习。
5. 参与开发:如果您有编程能力,可以考虑参与openSUSE或相关开源项目的开发。
关注社区动态:定期查看openSUSE新闻、邮件列表和论坛,了解最新发展。
实践项目:通过实际项目应用所学知识,例如搭建个人服务器、开发Shell脚本或参与开源项目。
获取认证:考虑获取Linux相关的专业认证,如LPIC、CompTIA Linux+或SUSE认证。
分享知识:通过博客、论坛或社区活动分享您的知识和经验,帮助他人学习。
参与开发:如果您有编程能力,可以考虑参与openSUSE或相关开源项目的开发。
9.3 结语
openSUSE不仅仅是一个操作系统,它是一个充满活力的社区和生态系统。通过本教程的学习,您已经掌握了从新手到专家的完整学习路径。无论您是个人用户、系统管理员还是开发人员,openSUSE都能为您提供稳定、安全和强大的平台。
记住,学习是一个持续的过程。随着技术的不断发展,保持好奇心和学习热情,继续探索openSUSE和Linux的无限可能。祝您在openSUSE和Linux的学习之旅中取得成功! |
|