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

Linux复习--系统管理类(权限优化、备份策略、RAID、资源查看、启动流程、系统优化)

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

一、权限优化

1、文件的基本权限

以下知识点详细情况点击: Linux--用户身份和文件权限_linux用户文件权限-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/lerp020321/article/details/140232127

1.1、文件身份

身份分类所有者(u)、所属组(g)、其他人(o)

身份修改

  • chown 所有者:所属组 filename
  • chgrp 所属组 filename
  • -R 归属递归选项

1.2、权限结构分析

文件类型、所有者权限、所有组权限、其他人权限

符号文件类型
-普通文件
d目录文件
l符号链接文件
b块设备文件
c字符设备文件
p管道文件
s套接字文件

1.3、文件的权限含义

  • r:文件内容查看权限(cat more less
  • w:文件内容编辑权限(vi echo)(但不能删除文件本身)
  • x:文件的执行权限

1.4、目录的权限含义

  • r:目录内文件列表查看权限(ls
  • w:目录内文件的增删、复制、剪切权限(touch rm cp mv
  • x:能否进入目录的权限(cd

1.5、权限修改

  • chmod [augo][+-=][rwx] filename
  • chmod 644 filename
  • -R 权限递归选项

1.6、注意事项

  • 给文件或目录分配权限时,先考虑所有者和所属组
  • 遵循最小化权限原则:用什么权限给什么权限
  • 修改目录及子文件归属或权限时,注意递归
  • 文件基本权限是最常用、也是最有效的Linux安全防护手段

2、默认权限

2.1、计算方法

官方方法为逻辑与逻辑非联合运算,建议使用权限字母方式计算

2.2、修改方法

  • 临时修改:umask 0022
  • 永久修改:配置文件:/etc/profile

2.3、注意事项

权限掩码目的是为了保证新建文件拥有默认权限,一般不需要手工设置

3、特殊权限

3.1、权限类型

  • Set UID(SUID)
  • Set GID(SGID)
  • Sticky Bit(SBIT)

3.2、权限命令

  • SUID:chmod u+s/4644 filename
  • SGID:chmod g+

3.3、注意事项

  • 特殊权限风险较大,禁止人为设置此类权限(SBIT权限风险较小)
  • 特殊权限是为了让特定命令可以拥有足够权限运行
  • 三个权限的操作对象有所区别,比如SUID只针对可执行文件文件,SGID可以针对可执行文件及目录,SBIT只能针对目录

4、ACL权限

4.1、权限命令

操作命令
添加setfacl -m ugo:rwx:user filename
删除setfacl -x ugo:user filename
清空setfacl -b filename
默认setfacl -d ugo:rwx:username dirname(只针对目录)
递归setfacl -R ugo:rwx:user filename
查看setfacl -m m:rwx filename

4.2、有效权限

设置:setfacl -m m:rwx filename

说明:有效权限是设置的ACL权限和mask权限相与的结果,也是最终生效权限

4.3、注意事项

  • ACL权限一般在用户对文件身份不足时使用
  • 使用ACL极易出现权限溢出,一定要注意使用(例如,对一个目录设置rwx权限并 递归执行)
  • 在对文件设置ACL权限后,文件的所属组位置显示的不再是所属组权限,而是mask权限
  • 注意区别-d和-R的区别:-d是保证后续新建文件拥有ACL权限,-R是为了让已存在的文件拥有ACL

5、sudo权限

5.1、配置文件

其配置文件路径为:/etc/sudoers;命令为:visudo

5.2、规则编写

编写规则的命令格式为:被授权者 可执行主机=(被授权者借用身份)可执行命令

5.3、执行规范

格式:sudo 授权命令(注意:五分钟内,再次执行授权命令不需要重复输入用户密码)

5.4、注意事项

  • /etc/sudoers文件尽量使用visudo命令编辑,有纠错功能
  • 授权时尽量授于具体的命令选项参数,以免出现过度授权,权限溢出问题
  • 配置文件中编写授权时,命令要写绝对路径

6、文件系统属性权限

6.1、查看:lsattr

其常用参数如下:

参数作用
-a显示所有文件和目录
-d若目标为目录,列出目录属性,不显示目录下文件属性

6.2、设置:chattr

参数作用
[+ -] i如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据 如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件
[+ -] a如果对文件设置a属性,那么只能在文件中增加数据,但不能删除也不能修改数据 如果对目录设置a属性,那么只能在目录中建立和修改文件,但是不允许删除

7、面试题

7.1、简述Linux权限划分原则

  • 注意权限分离(Linux系统权限、数据库权限不要掌握在同一个部门)
  • 权限在满足使用的情况下,最小优先
  • 减少使用root用户,尽量使用"普通用户+sudo提权"进行日常操作
  • 重要系统文件,如:/etc/passwd、/etc/shadow、/etc/fstab、/etc/sudoers等,日常建议使用chattr锁定,需要操作时再打开
  • 使用脚本检测系统中新增的SUID、SGID文件
  • 可以利用工具(如chkrootkit等)检测rookit脚本
  • 开启SSH服务密钥对登录,修改SSH服务端口

二、备份策略

问题引出:如果一个系统没有任何的备份策略,请写出一个较为全面合理的备份方案!

以下知识点详细点击:MySQL--数据库备份_mysql数据库备份-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/lerp020321/article/details/140902552

1、需要备份的目录

  • 重要系统目录:/etc/、/home/、/root/、/var/spool/mail/、/var/spool/cron/、/var/spool/at/
  • MySQL数据库
    • RPM包安装的MySQL:/var/lib/mysql
    • 源码包安装的MySQL:/usr/local/mysql/data/
  • Apache服务
    • 网站内容:/var/www/html/ | /usr/local/apache2/htdocs/
    • 配置文件:/etc/httpd/conf/httpd.conf | /usr/local/apache2/conf/httpd.conf
    • 日志文件:/var/log/httpd/ | /usr/local/apache2/logs/
  • 如果有其他服务,也需要备份重要数据

2、备份策略

  • 完整备份:cp、tar、dump、xfsdump
  • 增量备份:每次备份以前一次 备份作为参照(CentOS 6.x使用dump工具,CentOS 6.x使用xfsdump工具)
  • 差异备份:每次备份以第一次备份作为参照(实现命令同上)

3、备份频率

  • 实时备份:如MySQL主从同步
  • 定时备份:如每天、每周备份,一般通过"脚本+定时任务"实现

4、备份存储位置

基本原则:不要把鸡蛋放在同一个篮子中(本地备份、异地备份)

5、常见服务器的备份方案

  • 每日备份的数据(异地备份):MySQL数据库(主从备份之外,增量备份一次)
  • 每周备份的数据(异地备份):MySQL数据库(完整备份)、重要系统数据、网页数据、其他服务相关数据

6、类似面试题

网站服务器每天产生的日志数量较大,请问如何备份?

答:使用日志的切割与轮替功能;比如可以使用系统日志管理工具:logrotate;Apache服务配置文件自带日志切割功能,但是需要通过脚本进行轮替

三、RAID

问题引出:简述RAID0、RAID1、RAID5的特点与原理

以下知识点更详细情况点击: Linux--使用RAID与LVM磁盘阵列技术_raid1 需要lvm吗-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/lerp020321/article/details/140242273

1、RAID 0(独立磁盘冗余阵列)

  • 必须使用两块或两块以上的硬盘组成
  • 每块硬盘的大小必须一致
  • 是所有动态磁盘中,数据读写最快的
  • 损坏几率相对较高
  • 没有磁盘容错功能

2、RAID 1

  • 由两块或2的倍数硬盘组成
  • 每块硬盘大小必须一致
  • 硬盘使用率只有50%,写入速度最慢
  • 拥有磁盘容错功能

3、RAID 5

  • 由三块或三块以上硬盘组成
  • 每块硬盘大小必须一致
  • 磁盘利用率是n-1块盘
  • 利用奇偶校验,拥有磁盘容错功能(只支持1块硬盘损坏)

4、RAID 6

  • RAID 6是RAID 5的增强版
  • 由4块或以上的硬盘组成
  • 每块硬盘大小必须一致
  • 磁盘利用率是n-2块盘
  • 支持磁盘容错,可以支持2块硬盘损坏

5、RAID 10

  • 必须有4块等大小的硬盘组成
  • 两两硬盘先组成RAID 1,再组成RAID 0
  • 兼顾RAID 0和RAID 1的特点,中和两种RAID的缺点

6、软RAID与硬RAID的区别

  • 软RAID:是由操作系统模拟的RAID,一旦硬盘损坏,操作系统就会损坏,RAID会丧失作用
  • 硬RAID:是由独立于硬盘之外的,硬件RAID卡组成;就算硬盘损坏,也不会导致RAID卡损坏,磁盘容错才能起作用。

四、资源查看

问题引出:Linux中有许多系统资源需要监管,请问有哪些命令可以查看?

1、CPU

2、内存

3、网络

4、磁盘

五、启动流程

问题引出:简述Linux启动过程

1、CentOS 6.x基本启动过程

  • 服务器加电,加载BIOS信息,BIOS进行系统检测
  • 加载启动引导程序(grub
  • 由grub加载系统内核
  • 系统内核重新自检,并加载硬件驱动
  • 由内核启动系统第一个进程/sbin/init
  • 由/sbin/init进程调用/etc/init/rcS.conf,进行系统初始化配置
  • 由/sbin/init进程调用/etc/inittab,确定系统的默认运行级别
  • 确定默认运行级别后,调用/etc/init/rc.conf配置文件
  • 运行相应的运行级别目录/etc/rc[0-6].d中的脚本
  • 在启动登录界面之前,执行/etc/rc.d/rc.local中的程序

2、CentOS 7.x基本启动过程

  • 服务器加电,加载BIOS信息,BIOS进行系统检测
  • 加载启动引导程序(grub2
  • 由grub2加载系统内核,内核重新自检
  • 由grub2加载initamfs虚拟文件系统
  • 内核初始化,以加载动态模块的形式加载部分硬件的驱动
  • 内核启动系统第一个进程,也就是systemd
  • systemd开始调用默认单元组(defualt.target),并按照默认单元组开始运行子单元组
    • systemd调用sysinit.target单元组,初始化系统
    • systemd调用basic.target单元组,准备操作系统
    • systemd调用multi-user.target单元组,启动字符界面所需程序
    • systemd调用multi-user.target单元组中的/etc/rc.d/rc.local文件,执行文件中的命令
    • systemd调用multi-user.target单元组中的getty.target单元组,初始化本地终端(tty)及登录界面,如果是字符界面启动,到此启动完成。

六、系统优化

问题引出:如何进行Linux系统优化

1、Linux系统优化策略

  • 禁用不需要的服务(ntsysv命令最为方便)
  • 避免直接使用root用户,普通用户通过sudo授权操作
  • 通过chattr锁定重要系统文件:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow/、/etc/inittab
  • 配置国内yum源,加快下载速度
  • 配置系统同时打开的最大文件数:vi /etc/profile、ulimit -SHn 65535
  • 同步时间服务器:ntpdate ntp1.aliyun.com、通过crond定时任务,让时间同步命令每5分钟执行一次
  • 更改ssh服务的默认端口,配置SSH密钥对登录
  • 配置合理的IPtables防火墙规则
  • 配置合理的SELinux安全上下文
  • 指定合理的监控策略
  • 定时备份系统重要文件

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

相关文章:

  • 灵当CRM index.php接口SQL注入漏洞复现 [附POC]
  • [uni-app]小兔鲜-02项目首页
  • 菱形继承、菱形虚拟继承、菱形继承中多态问题、菱形虚拟继承中多态问题
  • 2024外研社综合能力大赛第一场真题
  • 【redis-02】深入理解redis中RBD和AOF的持久化
  • 数据科学基石:解析属性类型体系——从标称到比率,全面洞察数据分类机制
  • 快速开发拍卖平台,成品源码如何满足你的需求?
  • python测试开发---前后端交互Axios
  • Apache Iceberg构建高性能数据湖
  • 软件开发人员需要了解的知识
  • 代码随想录算法训练营第十四天|递归 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度
  • vue3【实战】响应式主题(实时获取页面比例,指定尺寸内按比例缩放,超过指定尺寸保持高度不变的图片)
  • 云原生|浅谈云原生中的对象存储之MinIO 的使用
  • 回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测
  • 【Linux】常用指令【更详细,带实操】
  • [deviceone开发]-do_Webview的基本示例
  • 4个实用的微服务测试策略
  • Consul Config 使用Git做版本控制的实现
  • CSS中外联样式表代表的含义
  • docker python 配置
  • Invalidate和postInvalidate的区别
  • Java Agent 学习笔记
  • Java|序列化异常StreamCorruptedException的解决方法
  • js 实现textarea输入字数提示
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • KMP算法及优化
  • React+TypeScript入门
  • spring boot下thymeleaf全局静态变量配置
  • vue学习系列(二)vue-cli
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 类orAPI - 收藏集 - 掘金
  • 使用common-codec进行md5加密
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 【干货分享】dos命令大全
  • ​ubuntu下安装kvm虚拟机
  • ​什么是bug?bug的源头在哪里?
  • #git 撤消对文件的更改
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1)svelte 教程:hello world
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (31)对象的克隆
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Java入门)抽象类,接口,内部类
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (六)vue-router+UI组件库
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (学习日记)2024.01.09
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)UDP基本编程步骤
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件