Linux服务控制及系统基本加固

一. liunx操作系统的开机引导的过程


1. 开机自检

根据bios的设置,对cpu,内存,显卡,键盘等等设备进行初步检测如果以上检测设备工作正常,系统会把控制权移交到硬盘

总结:检测出包含系统启动操作系统的设备,硬盘,U盘,光驱

2. MBR引导/gpt引导

分区之后,需要创建文件系统,然后挂载,设备才能够正常使用。

MBR和gpt是由分区表组成 -----> 映射到挂载
硬盘掌握系统控制权之后,根据分区表来找操作系统的引导文件,mbr的硬盘第一个扇区的主引导记录。
GPT:默认的guid是1
总结:根据硬盘的分区表,找到操作系统的文件。识别系统中的操作系统
控制权------->grub引导程序

3. grub菜单

当计算机当中有一个以上的操作系统,就会有这个grub菜单,多个操作系统,用户可以自行选择需要的系统。

控制权  ----->  linux的内核

加载了操作的文件,加载系统的内核。

4. 加载linux的内核

内核是一个编译的二进制可执行文件,介于硬件和操作系统之间,负责资源分配和调度。

总结: 内核和镜像文件系统加载到内存,也就是把系统初始化需要的程序和资源放入内存当中。

5. systemd进程初始化

串行:按照顺序,一个一个的执行。

并行:一起执行。

systemd进程初始化:系统加加载到内核的程序和资源并行处理。大大提高了系统的开机时间。

二. 服务控制以及系统的运行级别

1. 服务控制

systemd是一个管理linux系统服务和进程的管理器

使用单元UNIT,来描述和控制系统服务和资源

service 单元:管理和启动系统服务以及第三方服务的单元.service

socket 单元:端口,监听网络的通信套接字

常见端口:

nginx:80

tomcat: 8080

mysql: 3306

ssh: 22

端口号在主机上唯一的,一旦被使用,其他程序就无法再使用。

系统日志:ubuntu: /var/log/syslog      
                centos: /var/log/messages    

服务通信的必要条件也是服务识别的一个标志。

target单元:是一组服务的集合,用来描述系统或者服务的运行级别。

path单元:用来监控文件或者目录的状态

mount单元:管理文件系统的挂载

Device单位:管理硬件设备的单元

... ...

Swap 单元(.swap):用于管理交换空间的使用,可以指定交换分区、优先级等。

Device 单元(.device):用于管理硬件设备,可以指定设备文件、驱动程序、设备属性等。

Scope 单元(.scope):用于管理进程组,可以指定进程组的启动命令、资源限制等。

Slice 单元(.slice):用于管理进程组的资源配额,可以限制进程组的 CPU、内存等资源使用。

Automount 单元(.automount):用于按需挂载文件系统,可以在需要使用时自动挂载指定的文件系统。

Snapshot 单元(.snapshot):用于创建和管理 Systemd 系统的快照,可以备份和还原整个系统状态。

2. 单元控制的命令

systemctl  + 控制的状态

start 启动   例:systemctl start nginx

stop 停止   例:systemctl stop nginx

restart 重启    例:systemctl restart nginx

reload:当修改了单元文件,需要reload重新加载单元文件

例:

systemctl daemon-reload 加载所有

systemctl reload nginx 加载个别

status:查看服务的状态

root@du:~# kill -9 1885    #kill关闭
root@du:~# systemctl status nginx
× nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
     Active: failed (Result: signal) since Wed 2024-11-06 11:30:41 CST; 3s ago
       Docs: http://nginx.org/en/docs/
    Process: 1884 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited,>
   Main PID: 1885 (code=killed, signal=KILL)
        CPU: 23ms

11月 06 11:27:56 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:27:56 du systemd[1]: Started nginx - high performance web server.
11月 06 11:30:41 du systemd[1]: nginx.service: Main process exited, code=killed, status=9/KILL
11月 06 11:30:41 du systemd[1]: nginx.service: Failed with result 'signal'.

[4]+  已停止               systemctl status nginx.service


root@du:~# systemctl start nginx    #启动
root@du:~# systemctl status nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-11-06 11:30:53 CST; 3s ago
       Docs: http://nginx.org/en/docs/
    Process: 1901 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited,>
   Main PID: 1902 (nginx)
      Tasks: 2 (limit: 4545)
     Memory: 1.1M
        CPU: 12ms
     CGroup: /system.slice/nginx.service
             ├─1902 "nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con>
             └─1903 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">

11月 06 11:30:53 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:30:53 du systemd[1]: nginx.service: Can't open PID file /usr/local/nginx/run/nginx.pid (yet?) >
11月 06 11:30:53 du systemd[1]: Started nginx - high performance web server.

[5]+  已停止               systemctl status nginx.service


root@du:~# systemctl stop nginx     #停止
root@du:~# systemctl status nginx
○ nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: http://nginx.org/en/docs/

11月 06 11:27:56 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:27:56 du systemd[1]: Started nginx - high performance web server.
11月 06 11:30:41 du systemd[1]: nginx.service: Main process exited, code=killed, status=9/KILL
11月 06 11:30:41 du systemd[1]: nginx.service: Failed with result 'signal'.
11月 06 11:30:53 du systemd[1]: Starting nginx - high performance web server...
11月 06 11:30:53 du systemd[1]: nginx.service: Can't open PID file /usr/local/nginx/run/nginx.pid (yet?) >
11月 06 11:30:53 du systemd[1]: Started nginx - high performance web server.
11月 06 11:43:03 du systemd[1]: Stopping nginx - high performance web server...
11月 06 11:43:03 du systemd[1]: nginx.service: Deactivated successfully.
11月 06 11:43:03 du systemd[1]: Stopped nginx - high performance web server.

[7]+  已停止               systemctl status nginx

3. 系统和进程的运行级别

runlevel   #查看系统运行级别的命令

N5 

N:表示当前系统没有切换过运行级别

5:表示当前的运行级别

运行级别systemd的单元类型说明
0target关机
1resdue.target单用户模式,不需要验证密码就可以登录系统。系统维护
2multi-user.target字符串界面的多用户模式
3multi-user.target字符串界面的多用户模式
4multi-user.target字符串界面的多用户模式
5graphical.target图形化界面的多用户模式
6reboot.target重启

命令:     init
init 0       poweroff     关机
init 6       reboot        重启

切换运行权限没意义:

工作中的操作系统是没有图形化界面的,系统的默认级别都是3

三. 系统的基本加固和sudo权限

1、账号的安全措施

修改不需要的登录的用户的shell

usermod -s /sbin/nologin 用户名                 #禁止用户登录

锁定长期不使用的账户

usermod -L   用户名      usermod -U    解锁    

passwd -l    用户名        passwd -u     解锁

删除长期不使用的账户

userdel -r用户                                             #删除用户一并删除其家目录

2、锁定重要的文件

chattr +i  #锁定文件,不能再对文件进行编辑,只读模式(包括root)

chatrr -i  #解锁

只能针对文件

Isattr 文件名

查看文件的状态

3、用户密码的有效期控制

1、适用于新建用户

vim /etc/login.defs

165行 修改密码的最长有效天数

2、适用于已有用户

chage -M 30 dn  #修改已有用户的密码最长有效期 30天

4、限制命令历史的记录

history  #查看命令历史记录

history -c   #清空历史记录

vim /etc/profile

HISTSIZE=50       #华为一般设置为50~80

source /etc/prbfile

5、登录超时时间

远程连接的超时时间

vim /etc/profile

TMOUT=10       #单位为秒,推荐120秒

source /etc/prbfile

10秒钟之内,如果远程连接方没有任何操作,自动断开远程连接

四. sudo

赋予普通用户可以使用管理员命令的权限

/sbin     都是管理员可以用的命令文件

/bin       所有用户都可以使用的命令

保存都是系统可执行的命令文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过 SSH 隧道将本地端口转发到远程主机

由于服务器防火墙,只开放了22端口,想要通过5901访问服务器上的远程桌面,可以通过下面的方式进行隧道转发。 一、示例命令 这条代码的作用是通过 SSH 创建一个 本地端口转发,将你本地的端口(5901)通过加密的 SSH 隧道连接到远程服务器上的端口(5901)。这种方式通常用于在…

WPF+MVVM案例实战与特效(二十八)- 自定义WPF ComboBox样式:打造个性化下拉菜单

文章目录 1. 引言案例效果3. ComboBox 基础4. 自定义 ComboBox 样式4.1 定义 ComboBox 样式4.2 定义 ComboBoxItem 样式4.3 定义 ToggleButton 样式4.4 定义 Popup 样式5. 示例代码6. 结论1. 引言 在WPF应用程序中,ComboBox控件是一个常用的输入控件,用于从多个选项中选择一…

C#中日期和时间的处理

目录 前言 时间对于我们的作用 一些关于时间的名词说明 格里高利历 格林尼治时间(GMT) 协调世界时(UTC) 时间戳 DateTime 初始化 获取时间 计算时间 字符串转DateTime 存储时间 TimeSpan 初始化它来代表时间间隔 用它相互计算 自带常量方便用于和ticks进行计…

pdb和gdb的双剑合璧,在python中调试c代码

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取python编程资料 问题背景 正常情况下,调试python代码用pdb,调试c代码用gdb,…

【Apache ECharts】<农作物病害发生防治面积>

在vs Code里打开, 实现 1. 首先引入 echarts.min.js 资源 2. 在body部分设一个 div,设置 id 为 main 3. 设置 script 3.1 基于准备好的dom,初始化echarts实例 var myChart echarts.init(document.getElementById(main)); 3.2 指定图表的…

Docker + Jenkins + gitee 实现CICD环境搭建

目录 前言 关于Jenkins 安装Jenkins docker中运行Jenkins注意事项 通过容器中的Jenkins,把服务打包到docker进行部署 启动Jenkins 创建第一个任务 前言 CI/CD(持续集成和持续交付/持续部署),它可以实现自动化的构建、测试和部署…

Leetcode 买卖股票的最佳时机 Ⅱ

使用贪心算法来解决此问题,通过在价格上涨的每一天买入并在第二天卖出的方式,累计所有上涨的利润,以实现最大收益。关键点是从第二天开始遍历,并且只要当前比前一天价格高,我们就在前一天买入然后第二天卖出去。下面是…

【Linux系列】命令行中的文本处理:从中划线到下划线与大写转换

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

使用Docker快速部署FastAPI Web应用

Docker是基于 Linux 内核的cgroup、namespace以及 AUFS 类的Union FS 等技术,对进程进行封装隔离,一种操作系统层面的虚拟化技术。Docker中每个容器都基于镜像Image运行,镜像是容器的只读模板,容器是模板的一个实例。镜像是分层结…

【go从零单排】迭代器(Iterators)

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,迭代器的实现通常不是通过语言内置的迭代器类型&#x…

C语言--结构体的大小与内存对齐,位段详解

一.前言 为了保证文章的质量和长度,小编将会分两篇介绍,思维导图如下,上篇已经讲过了概念部分,本文主要讲解剩余部分,希望大家有所收获🌹🌹 二.结构体的大小与内存对齐 2.1 存在对齐的原因 平…

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes ... - python 报错解决方案

背景 加载数据集突然出问题, 详细报错为:UnicodeDecodeError: utf-8 codec cant decode bytes in position 606-607: invalid continuation byte 解决方案 源文件另存 UTF-8 版的 csv。 即可运行:

MQTT协议解析 : 物联网领域的最佳选择

1. MQTT协议概述 1.1 MQTT协议是什么 MQTT : Message Queuing Telemetry Transport 模式 : 发布 / 订阅主题优点 : 代码量小、低带宽、实时可靠应用 : 物联网、小型设备、移动应用MQTT 常用端口 : 1883 MQTT是一个网络协议,和HTTP类似,因为轻量简单&…

快速入门Zookeeper

Zookeeper ZooKeeper作为一个强大的开源分布式协调服务,扮演着分布式系统中至关重要的角色。它提供了一个中心化的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务等。通过其高性能和可靠的特性,ZooKeeper能够确保在复杂的分布式…

「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建

本篇详细介绍在Mac系统上快速搭建Cangjie开发环境的步骤,涵盖VSCode的下载与安装、Cangjie插件的离线安装、工具链的配置及验证。通过这些步骤,确保开发环境配置完成,为Cangjie项目开发提供稳定的基础支持。 关键词 Cangjie开发环境搭建VSC…

从0开始学习机器学习--Day20--优化算法的思路

确定执行的优先级(Prioritizing what to work on : Spam classification example) 在建立学习系统前,我们不仅要梳理框架,更重要的是我们要弄清楚有哪些事情是要优先做的,这可以帮我们节约大量的时间。 以垃圾邮件为例,按照之前…

H5播放器EasyPlayer.js 流媒体播放器是否支持npm(yarn) install 安装?

EasyPlayer.js H5播放器是一款功能强大的H5视频播放器,它支持多种流媒体协议播放,包括WebSocket-FLV、HTTP-FLV、HLS(m3u8)、WebRTC等格式的视频流。它不仅支持H.264和H.265编码格式,还具备实时录像、低延时直播等功能…

SpringCloud篇(微服务)

目录 一、认识微服务 1. 单体架构 2. 分布式架构 3. 微服务 3.1. 特点 3.2. 优点 3.3 缺点 二、微服务设计、拆分原则 1. AKF 拆分原则 2. Y轴(功能)关注应用中功能划分,基于不同的业务拆分 3. X轴(水平扩展&#xff09…

【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇(下)

系列文章目录 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(上) 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(下) 【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇(上) 【…

ts 如何配置引入 json 文件

ts 如何配置引入 json 文件 参考文档: https://maxgadget.dev/article/how-to-import-a-json-file-in-typescript-a-comprehensive-guide 项目中有一个 .json 的文件是配置文件,如何引入到 ts 项目中 配置 tsconfig.json 文件,添加这两个 {…