Linux操作系统:开源世界的强大引擎(中)

简介: Linux操作系统:开源世界的强大引擎

2.4 硬链接和软链接


在Linux中,链接是一种将一个文件或目录关联到另一个位置的方式。硬链接是指两个或多个文件名指向同一个物理文件,删除任意一个链接都不会影响文件本身。而软链接是一种特殊类型的文件,它包含了另一个文件或目录的路径信息,删除原始文件或目录会导致软链接失效。


示例:

# 创建一个硬链接
ln /home/user/file1.txt /home/user/link1
# 创建一个软链接
ln -s /home/user/dir1 /home/user/link2
# 删除原始文件并查看硬链接和软链接的情况
rm /home/user/file1.txt
ls -l /home/user/link1
ls -l /home/user/link2


2.5 挂载和卸载


挂载是指将一个磁盘或分区与文件系统的某个目录关联起来,以便用户可以访问该磁盘或分区中的数据。卸载则是取消这种关联。


示例:

# 挂载一个磁盘或分区
sudo mount /dev/sdb1 /mnt/data
# 查看已经挂载的文件系统列表
df -h
# 卸载一个磁盘或分区
sudo umount /mnt/data


2.6 磁盘分区和格式化


在Linux中,可以使用一些工具来对硬盘进行分区和格式化,例如fdisk、parted、gparted等。分区可以将一个物理硬盘划分为多个逻辑分区,每个分区都可以被格式化为一个文件系统以便于存储数据。


示例:

使用fdisk对硬盘进行分区和格式化的示例:
# 列出所有可用的硬盘
sudo fdisk -l
# 对/dev/sdb进行分区,创建一个主分区
sudo fdisk /dev/sdb
n                      # 创建新分区
p                      # 主分区
1                      # 分区号为1
<Enter>                # 默认起始扇区
<Enter>                # 默认结束扇区
w                      # 保存并退出
# 格式化分区为ext4文件系统
sudo mkfs.ext4 /dev/sdb1


在这个示例中,我们对硬盘/dev/sdb进行了分区,并将第一个分区(/dev/sdb1)格式化为了ext4文件系统。然后,可以将该分区挂载到Linux文件系统的某个目录中,以便用户可以使用它来存储数据。


3. 系统管理员工具:


例如添加/删除用户、设置文件系统权限、修改系统配置、安装软件包等。


3.1 添加/删除用户


在Linux系统中,可以使用一些命令和工具来添加或删除用户,并设置其密码、所属组等信息。常用的命令包括useradd、userdel、passwd等。


示例:

# 创建一个名为user1的新用户
sudo useradd -m user1
# 设置user1的密码
sudo passwd user1
# 删除user1用户
sudo userdel -r user1


在上述示例中,我们使用了useradd命令创建了一个名为user1的用户,并通过passwd命令设置了用户的密码。然后,我们使用userdel命令删除了该用户。


3.2 设置文件系统权限


在Linux系统中,每个文件和目录都有一个所有者和一个所属组,并且可以设置不同的访问权限,以控制用户对它们的访问。文件和目录的访问权限通常被分为三个类别:所有者(owner)、所属组(group)和其他人(others)。


可以使用chmod命令来更改文件或目录的权限,也可以使用chown和chgrp命令来更改文件或目录的所有者和所属组。


示例:

# 更改文件或目录的权限
chmod u+r file1.txt            # 给文件所有者增加读取权限
chmod g+w dir1/                # 给目录所属组增加写入权限
chmod o-rx file1.txt           # 去除其他人的读取和执行权限
chmod 644 file1.txt            # 设置文件权限为rw-r--r--
# 更改文件或目录的所有者和所属组
chown user1:group1 file1.txt    # 将文件所有者设置为user1,所属组设置为group1
chgrp group1 dir1/              # 将目录所属组设置为group1


3.3 修改系统配置


Linux系统中有许多配置文件,用于控制各种系统设置。可以使用文本编辑器(如vi、nano等)来编辑这些配置文件,并更改系统配置。


示例:

# 编辑sudoers配置文件
sudo visudo
# 编辑sshd配置文件
sudo vi /etc/ssh/sshd_config


在上述示例中,我们使用visudo命令打开sudoers配置文件并编辑它,以便修改特定用户的sudo权限。也可以使用vi命令编辑/etc/ssh/sshd_config配置文件,以更改SSH服务器的配置选项。


3.4 安装软件包


在Linux系统中,可以使用不同的包管理器来安装、更新、卸载软件包。常见的包管理器包括yum、apt-get、dnf等。


示例:

# 使用yum包管理器安装Apache Web服务器
sudo yum install httpd
# 使用apt-get包管理器安装MySQL数据库
sudo apt-get install mysql-server
# 使用dnf包管理器安装Node.js运行时环境
sudo dnf install nodejs


在上述示例中,我们使用不同的包管理器来安装了一些常用的软件包,例如Apache Web服务器、MySQL数据库和Node.js运行时环境。这些工具可以使系统管理员更方便地管理和维护Linux系统,提高了系统的安全性和效率。


4. 网络管理:


包括基本的网络设置、防火墙配置、IP地址分配、路由表设置等。


4.1 基本的网络设置


在Linux系统中,可以使用ifconfig和ip命令来配置网络接口、IP地址、子网掩码、网关等信息。此外,也可以使用网络管理工具(如nmcli、nmtui等)来简化这些操作。


示例:

# 显示所有网络接口的状态
sudo ifconfig -a
# 配置eth0网络接口的IP地址和子网掩码
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 配置默认网关
sudo route add default gw 192.168.1.1


在上述示例中,我们使用ifconfig命令来配置eth0网络接口的IP地址和子网掩码,并使用route命令添加了默认网关。这些命令可以帮助我们快速地进行网络设置。


4.2 防火墙配置


防火墙是保护网络安全的重要组成部分,可以通过阻止不必要的流量来防止攻击。在Linux系统中,可以使用iptables和firewalld等工具来配置防火墙规则。


示例:

# 允许所有流量通过
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
# 禁止所有流量通过
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
# 允许SSH流量通过
sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT


在上述示例中,我们使用iptables命令设置了一些常见的防火墙规则。第一个示例允许所有流量通过,第二个示例禁止所有流量通过。第三个示例允许SSH流量通过。


4.3 IP地址分配


IP地址是网络通信的基础,可以使用不同的方法进行分配,例如静态IP地址分配和动态IP地址分配。静态IP地址需要手动配置,而动态IP地址由DHCP服务器自动分配。


示例:

# 配置静态IP地址
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
# 配置动态IP地址
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet dhcp


在上述示例中,我们使用/etc/network/interfaces文件来配置eth0网络接口的IP地址分配方式。第一个示例配置了静态IP地址,第二个示例配置了动态IP地址。


4.4 路由表设置


路由表用于决定数据包从源主机到目标主机的路由路径。在Linux系统中,可以使用route和ip命令来设置路由表。


示例:

# 显示当前的路由表
sudo route -n
# 添加一个新的路由
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1
# 删除一个路由
sudo route del -net 10.0.0.0 netmask 255.0.0.0


在上述示例中,我们使用route命令来添加和删除路由。第一个示例显示了当前的路由表。第二个示例添加了一个新的路由,将所有目标IP地址为10.0.0.0/8的数据包发送到192.168.1.1网关。第三个示例删除了这个路由。


5. Shell脚本编程:


可以编写自动化脚本来完成任务。

Shell脚本编程是Linux系统管理员必须掌握的技能之一,可以使用Shell脚本编写自动化任务,并提高工作效率。


5.1 概念


Shell脚本是一种文本文件,其中包含了一系列的Shell命令和操作,以完成特定的任务。Shell脚本通常使用Bash、KornShell等Shell解释器来解释执行。


Shell脚本编程的基本概念包括:


  • 变量:用于存储数据的容器。
  • 命令:用于执行操作的程序。
  • 条件语句:用于根据条件来执行不同的操作。
  • 循环结构:用于重复执行相同的操作。
  • 函数:用于封装一段代码,并且可以在其他地方调用。


5.2 代码详解


以下示例展示了一个简单的Shell脚本,用于统计指定目录下的文件数和目录数,并将结果输出到屏幕上。


/

#!/bin/bash
# 统计指定目录下的文件数和目录数
dir=$1
file_count=0
dir_count=0
for item in $dir/*; do
    if [ -f $item ]; then
        file_count=$((file_count + 1))
    elif [ -d $item ]; then
        dir_count=$((dir_count + 1))
    fi
done
echo "文件数:$file_count"
echo "目录数:$dir_count"

在这个示例中,我们使用了Bash解释器,以及一些基本的Shell编程概念。首先,我们定义了一个变量dir,用于存储要统计的目录路径。然后,我们使用for循环遍历该目录下的所有文件和目录,并使用if语句判断当前项是文件还是目录,并分别进行文件计数和目录计数。最后,我们使用echo命令将结果输出到屏幕上。


可以通过以下方式运行这个脚本:

chmod +x count_files.sh       # 添加可执行权限
./count_files.sh /path/to/dir # 运行脚本,指定要统计的目录路径

在上述示例中,我们首先使用chmod命令添加了脚本的可执行权限,然后使用./命令运行了这个脚本,并且指定了要统计的目录路径。运行结果将会输出到屏幕上。


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
10天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
27 0
Vanilla OS:下一代安全 Linux 发行版
|
3天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
19 9
|
1天前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
10 5
|
3天前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
17 2
|
7天前
|
缓存 网络协议 Linux
Linux操作系统内核
Linux操作系统内核 1、进程管理: 进程调度 进程创建与销毁 进程间通信 2、内存管理: 内存分配与回收 虚拟内存管理 缓存管理 3、驱动管理: 设备驱动程序接口 硬件抽象层 中断处理 4、文件和网络管理: 文件系统管理 网络协议栈 网络安全及防火墙管理
28 4
|
6天前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
23 1
|
9天前
|
物联网 Linux 云计算
Linux操作系统的演变与未来趋势####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其在服务器、桌面及嵌入式系统领域的应用现状,并展望了云计算、物联网时代下Linux的未来趋势。通过回顾历史、剖析现状、预测未来,本文旨在为读者提供一个全面而深入的视角,以理解Linux在当今技术生态中的重要地位及其发展潜力。 ####
|
13天前
|
人工智能 安全 Linux
|
1月前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
3月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
108 3