当前位置: 首页 > article >正文

C02S11-Linux系统的安全与控制

一、Linux系统启动过程

1. 开机自检

计算机加电后,BIOS会检查计算机的硬件状态,包括CPU、内存、硬盘等,确保所有的硬件可以正常工作。

2. MBR引导或GPT引导

开机自检完成后,BIOS会根据设置的启动顺序来查找启动设备(硬盘、U盘、光驱等)。MBR分区方案中,BIOS会从启动设备的MBR读取记录引导信息的扇区。这步的主要作用是,告诉计算机到启动设备的哪个位置去寻找操作系统。

3. GRUB菜单

完成MBR引导或GPT引导后,会启动引导加载程序,Linux系统上常见的引导加载程序是GRUB。GRUB是一个多操作系统引导管理器,允许用户在启动时选择不同的操作系统,或根据默认配置加载系统。GRUB会显示一个菜单,列出所有可启动的内核和操作系统选项。

4. 加载Linux内核

选择好操作系统后,GRUB会加载选定的操作系统内核以及初始内存映像(initramfs)。Linux内核是一个预先编译好的二进制可执行文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。初始内存映像是一个临时的文件系统,包含了启动Linux系统所需的基本工具和驱动程序。

5. init进程初始化

内核加载完成后,会启动init进程。这是Linux系统中的第一个进程,是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。init进程负责启动系统运行级别,根据配置文件(如/etc/inittab)或使用systemd的配置文件来启动系统服务和应用程序。

二、Linux服务控制

1. init和Systemd的比较

init依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢。而Systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度 。

2. Systemd单元类型

2.1 Systemd单元概述

在Systemd中,不同类型的Systemd对象被称为单元,Systemd单元类型是用于定义系统启动和服务管理的不同种类的配置文件。每种单元类型对应不同的系统资源或服务,并定义了如何启动和管理这些资源或服务。

单元类型扩展名说明
Service.service描述一个系统服务
Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中文件或目录
Timer.timer描述一个定时器
Snapshot.snapshot用于保存一个systemd的状态
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target.target描述一组systemd的单元

2.2 systemctl命令 – 管理系统服务

systemctl命令来自英文词组system control的缩写,功能是管理系统服务。Systemd服务的管理就是通过systemctl命令来实现的。

systemctl [选项] 控制命令 服务

常见的控制命令:

控制命令功能
start启动
stop停止
reload重新加载服务配置
restart重启
enable设置开机自启动
disable取消开机自启动
reenable重新设置开机自启动

2.3 运行级别

运行级别Systemd单元类型说明
0target关机
1rescue.target单用户模式
2multi-user.target字符串界面多用户模式
3multi-user.target字符串界面多用户模式
4multi-user.target字符串界面多用户模式
5graphical.target图形化界面多用户模式
6reboot.target重启
  • 可用使用runlevel查看系统当前的运行级别。

  • 可用使用init命令设置系统的运行级别。

    init 运行级别
    

三、Linux系统安全应用

1. 账号安全设置

1.1 系统账号清理

  1. 修改不需要登录的用户的Shell。

    usermod -s /sbin/nologin 用户
    
  2. 锁定长期不使用的用户账号。

    # usermod
    usermod -L 用户 # 锁定用户
    usermod -U 用户 # 解锁用户
    
    # passwd
    passwd -l 用户 # 锁定用户
    passwd -u 用户 # 解锁用户
    
  3. 删除长期不用的用户账号。

    userdel 用户 # 删除用户
    userdel -r 用户 # 删除用户的同时删除用户家目录
    

1.2 锁定重要文件

  1. 锁定与用户相关,比如psswd、shadow等重要文件。

    chattr +i 文件 # 锁定文件
    chattr -i 文件 # 解锁文件
    

2. 密码安全设置

2.1 密码有效期设置

  1. 适用于新建用户:修改/etc/login.defs文件,设置新建用户的密码有效期。

    PASS_MAX_DAYS # 密码的最长有效时间
    
  2. 适用于已建用户:使用change命令设置用户密码的有效期限。

    change -M 有效天数 用户
    

3. 历史命令限制

3.1 设置历史命令条数

  1. 编辑/etc/profile文件,在里面设置历史命令的保存条数。

    HISTSIZE=保存条数
    

    保存文件后,执行下面命令,刷新系统环境。

    source /etc/profile
    

4. 终端自动注销

4.1 设置终端最大空闲时间

  1. 编辑/etc/profile文件,在里面设置终端的最大空闲时间。当终端空闲时间超过设置的时间,终端就会断开连接。

    TMOUT=空闲时间 # 单位为秒
    
  2. 保存文件后,执行下面命令,刷新系统环境。

    source /etc/profile
    

四、用户提权设置

1. sudo命令– 授权普通用户执行管理员命令

sudo命令来自英文词组super user do的缩写,功能是授权普通用户执行管理员命令。

sudo 命令

在Ubuntu系统中,默认sudo可用让普通用户使用所有超级用户可以使用的命令。而在CentOS系统中,还需要通过设置授权普通用户执行某些指定的命令。


http://www.kler.cn/a/390588.html

相关文章:

  • python购物计算 2024年6月青少年电子学会等级考试 中小学生python编程等级考试一级真题答案解析
  • 不对称信息
  • vue中如何关闭eslint检测?
  • 使用pdfjs加载多页pdf并实现打印
  • 类别变量分析——卡方独立性检验卡方拟合优度检验
  • MyBatisPlus 用法详解
  • Cesium基础-(Entity)-(model )
  • 如何详细查询全球药品研发的进度信息?
  • 【大数据测试 Elasticsearch — 详细教程及实例】
  • 系统启动时将自动加载环境变量,并后台启动 MinIO、Nacos 和 Redis 服务
  • 第七部分:2. STM32之ADC实验--AD多通道(AD采集三路传感器模块实验:光敏传感器、热敏传感器、反射式传感器附赠温湿度传感器教程)
  • 【Pikachu】越权访问实战
  • Oracle数据库 查看SQL执行计划的几种方法
  • vue2 通过路由拦截实现 token 刷新功能
  • 手持测温热像仪市场规模:预计2030年全球市场规模将达到24.9亿美元
  • 【Leecode】Leecode刷题之路第45天之跳跃游戏II
  • HARCT 2025 新增分论坛2:机器人系统智能控制
  • docker基础:搭建centos7(详见B站泷羽sec)
  • kafka夺命三十问——16-22问
  • 网络安全:挑战、策略与未来趋势
  • TensorRT基础知识
  • 什么是Stream流?
  • 【模块一】kubernetes容器编排进阶实战之k8s基础概念
  • Java 后端开发框架总结笔记:
  • Python 爬虫运行状态监控:进度、错误与完成情况
  • 智能零售:AI赋能电商行业的全面升级与高效运营