【操作系统安全】任务6:Linux 系统文件与文件系统安全 学习指南

embedded/2025/3/18 11:47:19/

目录

一、文件系统基础概念

二、查看文件系统信息

2.1 磁盘空间查看

2.2 分区与挂载管理

2.3 文件系统类型操作

三、文件系统权限配置

3.1 基础权限管理

3.2 所有权管理

3.3 特殊权限设置

四、文件操作基础

4.1 文件创建

4.2 文件删除

4.3 文件复制与移动

4.4 文件编辑

五、高级文件管理

5.1 链接管理

5.2 查找与搜索

5.3 压缩与归档

六、权限管理进阶

6.1 ACL 访问控制列表

6.2 权限掩码设置

6.3 安全增强配置

七、实战案例

7.1 网站目录权限配置

7.2 日志文件管理

7.3 系统备份方案

八、常见问题处理

8.1 权限拒绝问题

8.2 文件误删恢复

8.3 文件系统修复

九、总结与最佳实践

CSDN 原创主页:不羁https://blog.csdn.net/2303_76492156?type=blog


一、文件系统基础概念

Linux 文件系统采用树形结构,以根目录 / 为起点,所有文件和目录都挂载在这个树状结构上。理解文件系统的关键概念包括:

  • inode:存储文件元数据(权限、大小、创建时间等)
  • block:实际存储文件数据的磁盘块
  • 挂载点:文件系统在目录树中的接入位置

二、查看文件系统信息

2.1 磁盘空间查看

# 查看所有挂载点的磁盘使用情况
df -h# 查看指定目录的磁盘占用
du -sh /var/log# 显示inode使用情况
df -i

2.2 分区与挂载管理

# 查看系统分区信息
lsblk# 挂载新分区
mount /dev/sdb1 /mnt/data# 自动挂载配置(修改/etc/fstab)
/dev/sdb1       /mnt/data   ext4    defaults        0 0# 卸载分区
umount /mnt/data

2.3 文件系统类型操作

# 创建ext4文件系统
mkfs.ext4 /dev/sdb1# 检查文件系统错误
fsck /dev/sdb1

三、文件系统权限配置

3.1 基础权限管理

# 查看文件权限
ls -l file.txt# 修改权限(ugo=rwx)
chmod 777 file.txt# 递归修改目录权限
chmod -R 755 /var/www# 符号模式修改权限
chmod u+w,g-x,o=r file.txt

3.2 所有权管理

# 修改文件所有者
chown user file.txt# 修改文件所属组
chgrp staff file.txt# 递归修改目录所有权
chown -R user:staff /var/www

3.3 特殊权限设置

# 设置SUID权限(允许普通用户以所有者权限运行)
chmod u+s /usr/bin/passwd# 设置SGID权限(强制继承目录组)
chmod g+s /var/log# 设置粘滞位(防止非所有者删除文件)
chmod +t /tmp

四、文件操作基础

4.1 文件创建

# 空文件创建
touch empty.txt# 创建带内容的文件
echo "Hello Linux" > greet.txt# 创建多文件
touch file{1..5}.txt

4.2 文件删除

# 删除单个文件
rm file.txt# 强制删除只读文件
rm -f readonly.txt# 递归删除目录
rm -rf /tmp/testdir

4.3 文件复制与移动

# 复制文件
cp source.txt /dest/# 保留属性复制
cp -a /etc /backup/# 移动文件(重命名)
mv oldname.txt newname.txt# 递归移动目录
mv /var/log /backup/

4.4 文件编辑

# 使用vim编辑文件
vim config.conf# 插入模式:按i
# 保存退出::wq# 使用nano简单编辑
nano notes.txt# 快速替换文本
sed -i 's/old/new/g' file.txt

五、高级文件管理

5.1 链接管理

# 创建硬链接
ln file.txt hardlink.txt# 创建软链接
ln -s /var/log symlink_log# 查看链接信息
ls -li

5.2 查找与搜索

# 按名称查找文件
find / -name "*.log"# 按权限查找文件
find / -perm 777# 快速查找命令(需要更新数据库)
locate passwd
updatedb

5.3 压缩与归档

# 创建tar包
tar -cvf backup.tar /etc# 创建gzip压缩包
tar -zcvf backup.tar.gz /var# 解压tar.gz文件
tar -zxvf backup.tar.gz# 其他压缩格式
gzip file.txt
gunzip file.txt.gz

六、权限管理进阶

6.1 ACL 访问控制列表

# 查看ACL设置
getfacl file.txt# 赋予用户读写权限
setfacl -m u:user:rw- file.txt# 递归设置ACL
setfacl -R -m u:user:r-x /var/www# 删除ACL
setfacl -x u:user file.txt

6.2 权限掩码设置

# 查看当前umask
umask# 临时修改umask
umask 0022# 永久修改(在~/.bashrc中添加)
echo "umask 0022" >> ~/.bashrc

6.3 安全增强配置

# 设置文件不可修改
chattr +i important.conf# 查看特殊属性
lsattr important.conf# 移除不可修改属性
chattr -i important.conf

七、实战案例

7.1 网站目录权限配置

# 创建网站目录
mkdir -p /var/www/mysite# 设置所有者和组
chown -R www-data:www-data /var/www/mysite# 设置权限
chmod -R 750 /var/www/mysite
chmod g+s /var/www/mysite

7.2 日志文件管理

# 每日归档日志
find /var/log -type f -name "*.log" -mtime +7 -exec tar -zcvf /backup/log_$(date +%Y%m%d).tar.gz {} \;# 自动清理旧日志
find /var/log -type f -name "*.log" -mtime +30 -delete

7.3 系统备份方案

# 全量备份脚本
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/full_$DATE"
mkdir -p $BACKUP_DIR
rsync -aAX --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / $BACKUP_DIR

八、常见问题处理

8.1 权限拒绝问题

# 检查文件权限
ls -ld /var/www# 切换用户执行
sudo chown user /var/www/file.txt

8.2 文件误删恢复

# 使用extundelete恢复(需安装)
extundelete /dev/sda1 --restore-file /etc/passwd# 备份恢复
cp /backup/old/passwd /etc/

8.3 文件系统修复

# 强制检查文件系统
fsck -f /dev/sdb1# 单用户模式修复
mount -o remount,ro /
fsck -y /dev/sdb1

九、总结与最佳实践

  1. 权限最小化原则:只赋予必要的读写执行权限
  2. 定期备份:重要数据至少保留 3 份
  3. 特殊权限审计:每月检查 SUID/SGID 文件
  4. 使用 ACL 精细控制:针对复杂权限需求
  5. 文件系统监控:设置磁盘空间预警阈值
  6. 使用版本控制:对配置文件使用 git 管理

通过本指南的学习,读者能够掌握 Linux 文件系统的核心操作,从基础文件管理到高级权限控制,从日常维护到灾难恢复,全面提升系统管理能力。建议结合实际环境进行操作练习,加深理解和记忆。


http://www.ppmy.cn/embedded/173584.html

相关文章

Python游戏开发自学指南:从入门到实践(第四天)

Python不仅适用于数据分析、Web开发和自动化脚本,还可以用于游戏开发!虽然Python不是传统意义上的游戏开发语言,但其简洁的语法和丰富的库使其成为初学者学习游戏开发的绝佳选择。本文将为你提供一份全面的Python游戏开发自学指南&#xff0c…

dify数据库的操作方式二

dify数据库的操作方式 基础环境安装修改sanbox增加以来代码执行执行 基础环境安装 基础环境安装 修改sanbox增加以来 # 在线方式 # 修改volumes/sandbox/dependencies/python-requirements.txt mysql-connector-python# 离线方式 # 下载https://mirrors.aliyun.com/pypi/pac…

嵌入式Linux | 什么是 BootLoader、Linux 内核(kernel)、和文件系统?

01 什么是 BootLoader 呢? 它是个引导程序,也就是硬件复位以后第一个要执行的程序,它主要工作就是初始化操作系统运行的环境,比如说内存、定时器、缓冲器等,当这个工作做完以后,再把操作系统的代码加载…

使用 .NET Core 实现 RabbitMQ 消息队列的详细教程

RabbitMQ 是一个流行的消息队列中间件,它允许应用程序通过异步消息的方式进行通信。RabbitMQ 支持 AMQP 协议,可以通过多种方式与应用程序交互。在本教程中,我们将深入探讨如何在 .NET Core 环境中使用 RabbitMQ 来实现消息队列。我们将学习如…

Mysql的库操作

🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 1. 简单数据库操作 1.1 查看数据库 1.2 创建数据库 1.3 使用数据库 …

DeepSeek-R1本地化部署(Mac)

一、下载 Ollama 本地化部署需要用到 Ollama,它能支持很多大模型。官方网站:https://ollama.com/ 点击 Download 即可,支持macOS,Linux 和 Windows;我下载的是 mac 版本,要求macOS 11 Big Sur or later,Ol…

【2025年3月最新】Cities_Skylines:城市天际线1全DLC解锁下载与教程

亲测2025年3月11日能用,能解锁全部DLC 使用教程 点击下载 点击下载

使用DeepSeek制作可视化图表和流程图

用DeepSeek来制作可视化图表,搭配python、mermaid、html来实现可视化,我已经测试过好几种场景,都能实现自动化的代码生成,效果还是不错的,流程如下。 统计图表 (搭配Matplotlib来做) Python中的…