系统安全及应用

文章目录

  • 系统安全及应用
    • 一、账号安全基本措施
      • 1、系统账号清理
        • 1.1 将用户设置为无法登录
        • 1.2 锁定长期不使用的账号
        • 1.3 删除无用的账户
        • 1.4 清空一个账号密码
        • 1.5 锁定账户文件passwd、shadow
      • 2、密码安全控制
        • 设置密码有效期
      • 3、命令历史限制
        • 3.1 减少命令记录条数
        • 3.2 登录时自动清空历史命令
      • 4、终端自动注销
    • 二、使用su命令切换用户
      • 1、切换用户
      • 2、密码验证
      • 3、限制使用su命令的用户
    • 三、Linux中的PAM安全认证
      • 1、su命令的安全隐患
      • 2、PAM (Pluggable Authentication Modules)可插拔式认证模块
      • 3、PAM相关文件夹
      • 3、PAM认证原理
      • 4、PAM认证的构成
      • 5、PAM安全认证流程
      • 6、limit
        • ulimit命令(修改限制的实现方式)
    • 四、使用sudo机制提升权限
      • 1、sudo命令的特性
      • 2、配置sudo授权
      • 3、语法格式
      • 4、设置别名
      • 5、密码验证
      • 6、查看sudo操作记录
      • 7、查询授权的sudo操作
    • 五、系统引导和登录控制
      • 1、开关机安全控制
        • 1.1 调整BIOS引导设置
        • 1.2 GRUB限制
      • 2、终端登录安全控制
        • 2.1 限制root只在安全终端登录
        • 2.2 禁止普通用户登录
    • 六、弱口令检测
      • 1、暴力破解工具-JR
      • 2、安装JR工具
      • 3、检测弱口令账号
      • 4、密码文件的暴力破解
      • 5、模拟暴破步骤
    • 七、端口扫描
      • 1、网络扫描工具-NMAP
      • 2、安装NMAP软件包
      • 3、nmap命令常用的选项和扫描类型
      • 4、常规检测方式:netstat
      • 5、netstat命令常用选项

系统安全及应用

一、账号安全基本措施

1、系统账号清理

1.1 将用户设置为无法登录
usermod -s /sbin/nologin    #将非登录用户的Shell设为/sbin/nologin

image-20240105150902603

1.2 锁定长期不使用的账号
usermod -L 用户名    #锁定用户账户passwd -l 用户名    #锁定账户密码passwd -S 用户名    #查看用户状态

image-20240105151710507

1.3 删除无用的账户
userdel -r 用户名    #删除用户及其宿主目录

image-20240105152637109

1.4 清空一个账号密码
passwd -d 用户名    #清空账户密码

image-20240105152843353

1.5 锁定账户文件passwd、shadow
chattr +i /etc/passwd  /etc/shadow    #锁定文件lsattr /etc/passwd   /etc/shadow    #查看文件状态chattr -i /etc/passwd /etc/shadow    #解锁文件

image-20240105155551623

2、密码安全控制

设置密码有效期
  • 对于新建用户,可以修改 /etc/login.defs 文件里的内容来设置密码规则

    vim /etc/login.defs

image-20240105154945458

  • 对于已有用户可以使用chage命令
chage [选项] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-w:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

image-20240105160615659

3、命令历史限制

3.1 减少命令记录条数
  • 概述: /etc/profile 是系统全局变量配置文件,可以通过系统或者执行 source /etc/profile命令使文件被刷新重载
vim /etc/profile       #编剧全局变量配置文件export HISTSIZE=x      #输入需要的命令条数source /etc/profile     #刷新重载
3.2 登录时自动清空历史命令
  • 概述:~/.bashrc文件中的命令会在每次打开新的bash shell时(也包括登录系统)被执行

  • vim .bash_logout      #退出后清除
    echo " " >~/.bash_history   #(一定要加空格)vim ~/.bashrc   #开机后清除(自己对自己生效)
    echo " " > ~/.bashrc_history
    

4、终端自动注销

  • 限制600秒后自动注销
vi /etc/profile    #(对所有用户生效)export TMOUT=600    #设置超过600秒后自动退出登录source /etc/profile    #刷新重载

二、使用su命令切换用户

1、切换用户

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

  • su 目标用户:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
  • su - 目标用户:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

2、密码验证

  • root ->任意用户,不验证密码
  • 普通用户->其他用户,验证目标用户密码

su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

3、限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组

image-20240105163711241

  • 在 /etc/pam.d/su 文件中设置禁止用户使用su命令

格式:vim /etc/pam.d/su

image-20240105164035674

注:①、以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户使用su命令进行切换的

​ ②、两行都注释也是允许所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码

(pam_rootok.so模块的主要作用是使uid为0的用户,即 超级管理员用户能够直接通过认证而不用输入密码)

​ ③、如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。

​ ④、如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。

三、Linux中的PAM安全认证

1、su命令的安全隐患

  • 默认情况下,任何用户都允许使用 su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su 命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

2、PAM (Pluggable Authentication Modules)可插拔式认证模块

  • 是一种高效而且灵活的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式

3、PAM相关文件夹

  • /usr/lib64/security :存放功能模块
  • /etc/pam.d/ :配置文件
  • /etc/security :复杂的配置文件

3、PAM认证原理

当用户来访问某一程序的时候,如果这个程序启用了pam模块,会先去读取配置文件,然后按照配置文件调用模块,进行操作。

  • PAM认证一般遵循的顺序:Service(服务)–>PAM(配置文件)–>pam_*.so
  • PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
  • 不同的应用程序所对应的PAM模块是不同的

4、PAM认证的构成

  • 查看某个程序是否支持PAM认证,可以用ls命令
  • 格式:ls /etc/pam.d | grep su
  • 查看su的PAM配置文件:cat /etc/pam.d/su

5、PAM安全认证流程

控制类型也称作Control Flags,用于PAM验证类型的返回结果

  • required:一票否决,如果失败,最后一定会失败,但是会继续验证
  • requisite:一票否决,如果失败,会立即结束验证,反馈失败
  • sufficient:验证成功则立即返回,不再继续,否则忽略结果并继续
  • optional:不用于验证,只显示信息(通常用于session类型)

image-20240105142829009

6、limit

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

ulimit命令(修改限制的实现方式)

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。

ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。

ulimit只影响shell进程及其子进程,用户登出后失效。

可以在profile中加入ulimit的设置,变相的做到永久生效

-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-u size:最大用户进程数
-v size:设置虚拟内存的最大值.单位:kbytes
unlimited 是一个特殊值,用于表示不限制ab -c1025 -n 2000 http://192.168.10.11/    #使用压力测试工具进行测试  打开的文件数vim /etc/security/limits.conf   #永久修改不用重启(软硬一起设置可以直接使用-)

image-20240105165807768

image-20240105170641417

四、使用sudo机制提升权限

1、sudo命令的特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

2、配置sudo授权

  • visudo或vi /etc/sudoers #此文件的默认权限为440,保存退出时必须执行“wq!”,强制保存退出

3、语法格式

  • 用户 主机名=命令程序列表
  • 用户 主机名=(用户) 命令程序列表
  1. 用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。

  2. 主机名:使用此规则的主机名。没配置过主机名时可用localhost(默认主机名),有配过主机名则用实际的主机名,ALL则代表所有主机

  3. (用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令

  4. 命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分割。ALL则代表系统中的所有命令

可使用通配符“ * ”表示所有,取反符号“!”表示排除

例如:Jerry localhost=/sbin/*,!/sbin/poweroff

表示jerry用户操作localhost主机可使用sbin目录下的除poweroff以外的所有命令

注:Jerry仍可使用init、shutdown等命令执行关机操作,因此限制命令需做到全面无漏,否则限制影响十分有限。

4、设置别名

别名格式:必须大写字母,数字可以使用但是不能放在开头

使用关键字User_Alias(用户)、Runas_Alias(代表用户)、Host_Alias(登录主机)、Cmds_Alias(命令)来进行设置别名

User_Alias USERS=Tom,Jerry,MikeHost_Alias HOSTS=localhost,bogonCmnd_Alias CMDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdelUSERS HOST=CMDSroot  ALL=(ALL)  ALL
用户   主机名ip=    命令

5、密码验证

  • 正常情况下,第一次使用sudo命令需输入密码验证,有效期为五分钟,过期后使用sudo需再次输入密码验证。

  • 可以设置特定用户无需密码验证

    Mike ALL=(ROOT)NOPASSWD:/bin/kill,/usr/bin/killall

  • 也可设置组用户无需密码验证

    %wheel ALL=NOPASSWD:ALL

  • 以及所有用户无需密码验证

    USERS HOSTS=NOPASSWD:CMDS

6、查看sudo操作记录

  • 需启用Defaults logfile配置
/var/log/sudo    #默认日志文件visudo     #进入sudo配置文件Defaults logfile="/var/log/sudo"     #启动Defaults logfiletail /var/log/sudo     #查看sudo末尾10行记录

7、查询授权的sudo操作

  • 格式:sudo -l

五、系统引导和登录控制

1、开关机安全控制

1.1 调整BIOS引导设置
  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码
1.2 GRUB限制
  • 通常情况下,在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,也可进入急救模式修改用户密码,这对服务器是一个极大的安全威胁。为此,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令的格式如下

  1. 使用grub2-mkpasswd-pbkdf2生成密钥

  2. 修改/etc/grub.d/00_header文件,添加密码记录

  3. 生成新的grub.cfg配置文件

grub2-mkpasswd-pbkdf2  #根据提示设置GRUB菜单的密码PBKDF2 hash of your password is grub.pbkdf2……        # 省略部分内容为加密生成的密码字符串cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak      # 制作备份cp /etc/grub.d/00_header /etc/grub.d/00_header.bak    # 制作备份vim /etc/grub.d/00_headercat << EOFset superusers="root"          #设置登录用户为 rootpassword_pbkdf2 root grub.pbkdf2……      # 设置密码,省略部分内容为经过加密生成的密码字符串EOFgrub2-mkconfig -o /boot/grub2/grub.cfg        # 生成新的grub.cfg配置文件完成配置修改工作,重启后进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。grub2-setpassword    #直接设置密码

2、终端登录安全控制

2.1 限制root只在安全终端登录
  • 安全终端配置

    /etc/securetty

    vi /etc/securetty

  • 将tty5,tty6前加 “#” 将其注释,表示禁止root用户从终端tty5,tty6登录

2.2 禁止普通用户登录
  • 建立/etc/nologin

    touch /etc/nologin

  • 删除nologin文件或重启后即恢复正常

    rm -rf /etc/nologin

六、弱口令检测

1、暴力破解工具-JR

  • John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过对shadow文件的口令分析,可以检测密码强度。
  • 官方网站:http://www.openwall.com/john/

2、安装JR工具

  • 安装方法:make clean 系统类型
  • 主程序文件为john

3、检测弱口令账号

  • 获得Linux/Unix服务器的shadow文件
  • 执行john程序,将shadow文件作为参数

4、密码文件的暴力破解

  • 准备好密码子弹文件,默认为password.lst
  • 执行john程序,结合–wordlist=字典文件

5、模拟暴破步骤

cd /opt
tar zxf john-1.8.0.tar.gz    #解压工具包yum install -y gcc gcc-c++ make    #安装软件编译工具cd /opt/john-1.8.0/src    #切换到src子目录make clean linux-x86-64    #进行编译安装cp /etc/shadow /opt/shadow.txt    #准备待暴破的密码文件cd /opt/john-1.8.0/run
./john /opt/shadow.txt    #执行暴力破解./john --show /opt/shadow.txt    #查看已破解出的账户列表> john.pot    #使用密码字典文件,清空已破解出的账户列表以便重新分析./john --wordlist=./password.list /opt/shadow.txt #使用指定的字典文件进行破解

添加字典内容

  • 若密码无法被暴力破解说明字典中没有该密码记录,可以进入字典文件(/opt/john-1.8.0/run/password.list)中手工输入添加,字典内容的丰富程度与破解能力成正比

七、端口扫描

1、网络扫描工具-NMAP

  • NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术。

2、安装NMAP软件包

rpm -qa | grep nmap   #检查是否已安装yum install -y namp   #若未安装,进行yum安装

3、nmap命令常用的选项和扫描类型

常用选项/扫描类型说明
-p指定扫描的端口
-n禁用反向DNS解析(以加快扫描速度) ip转换成 域名 12222 2www.baidu.com
-sSTCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放
-sTTCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放
-sFTCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性
-sUUDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢
-sPICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描
-PO跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描

4、常规检测方式:netstat

netstat -natp     #查看正在运行的使用TCP协议的网络状态信息netstat -naup     #查看正在运行的使用UDP协议的网络状态信息nmap -sT 127.0.0.1    #查看本机开放的TCP端口nmap -sU 127.0.0.1    #查看本机开放的UDP端口nmap -p 80 192.168.80.0/24    #检测192.168.80.0/24网段有哪些主机提供HTTP服务nmap -n -sP 192.168.80.0/24    #检测192.168.80.0/24网段有哪些存活主机

5、netstat命令常用选项

image-20240105143039073

服务端口号
HTTP80
HTTPS443
Telnet23
FTP21
SSH(安全登录)、SCP(文件传输)、端口重定向22
SMTP25
POP3110
WebLogic7001
TOMCAT8080
WIN2003远程登录3389
Oracle数据库1521
MS SQL* SEVER数据库sever1433
23
FTP21
SSH(安全登录)、SCP(文件传输)、端口重定向22
SMTP25
POP3110
WebLogic7001
TOMCAT8080
WIN2003远程登录3389
Oracle数据库1521
MS SQL* SEVER数据库sever1433
MySQL 数据库sever3306

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13. 强化学习编程实验1-在格子世界中寻宝(1)

文章目录 1.实验目的2.任务描述3.任务分析3.1 待求问题是多步决策问题否3.2 问题求解过程是一个马尔科夫决策过程3.3 状态空间S的确定3.4 动作空间A的确定3.5 状态转移概率P的确定3.6 立即回报R的确定3.7 折扣 γ \gamma γ的确定 4. 编程架构4.1 程序中有哪些对象和类4.2 环境…

pyfolio工具结合backtrader分析量化策略组合,附源码+问题分析

pyfolio可以分析backtrader的策略&#xff0c;并生成一系列好看的图表&#xff0c;但是由于pyfolio直接install的稳定版有缺陷&#xff0c;开发版也存在诸多问题&#xff0c;使用的依赖版本都偏低&#xff0c;试用了一下之后还是更推荐quantstats。 1、安装依赖 pip install …

数据采集有哪些方法?HTTP代理起到什么作用?

在这个数字化的时代&#xff0c;数据就如同生活中不可或缺的元素&#xff0c;我们的行为、喜好、甚至是想法都被转化成了数字化的信息。那么&#xff0c;现代社会是如何进行数据的采集的呢&#xff1f;让我们一同来看看&#xff01; 1. 网络浏览行为的追踪 在我们浏览互联网的…

【AI视野·今日NLP 自然语言处理论文速览 第六十六期】Tue, 31 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 31 Oct 2023 (showing first 100 of 141 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers The Eval4NLP 2023 Shared Task on Prompting Large Language Models a…

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

Solmash是Solana生态中由社区主导的铭文资产LaunchPad平台&#xff0c;该平台旨在为Solana原生铭文项目&#xff0c;以及通过其合作伙伴SoBit跨链桥桥接到Solana的Bitcoin生态铭文项目提供更广泛的启动机会。有了Solmash&#xff0c;将会有更多的Solana生态的铭文项目、资产通过…

24年初级会计资格考试报名信息采集流程共10大步骤,千万不要搞错

2024年初级会计资格考试报名信息采集流程共10大步骤&#xff0c;不要搞错哦&#xff1b; 第一步&#xff1a;输入证件号、点击登录 第二步&#xff1a;阅读采集须知 第三步&#xff1a;填写个人信息&#xff08;支付宝搜索"亿鸣证件照"或者微信搜索"随时照&q…

计算机网络-以太网交换基础

一、网络设备的演变 最初的网络在两台设备间使用传输介质如网线等进行连接就可以进行通信。但是随着数据的传输需求&#xff0c;多个设备需要进行数据通信时就需要另外的设备进行网络互联&#xff0c;并且随着网络传输的需求不断更新升级。从一开始的两台设备互联到企业部门内部…

数据结构第六弹---带头双向循环链表

双向循环链表 1、带头双向循环链表概念2、带头双向循环链表的优势3、带头双向循环链表的实现3.1、头文件包含和结构定义3.2、创建新结点3.3、打印3.4、初始化3.5、销毁3.6、尾插3.7、头插3.8、头删3.9、尾删3.10、查找3.11、在pos之前插入3.12、删除pos位置3.13、判断是否为空3…

EBU7140 Security and Authentication(三)密钥管理;IP 层安全

B3 密钥管理 密钥分类&#xff1a; 按时长&#xff1a; short term&#xff1a;短期密钥&#xff0c;用于一次加密。long term&#xff1a;长期密钥&#xff0c;用于加密或者授权。 按服务类型&#xff1a; Authentication keys&#xff1a;公钥长期&#xff0c;私钥短期…

虾皮、Lazada店铺流量怎么提升?自养号优势及测评系统如何搭建?

虾皮、Lazada是东南亚地区最大的购物平台之一&#xff0c;吸引了大量的买家和卖家。在竞争激烈的虾皮市场上&#xff0c;如何提升店铺的流量成为许多卖家关注的问题。以下是关于如何提升虾皮、Lazada店铺流量的一些建议。 一、店铺流量怎么提升? 首先&#xff0c;进行优质的…

50N65-ASEMI高压N沟道MOS管50N65

编辑&#xff1a;ll 50N65-ASEMI高压N沟道MOS管50N65 型号&#xff1a;50N65 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 连续漏极电流(Id)&#xff1a;50A 漏源电压(Vdss)&#xff1a;650V 功率(Pd)&#xff1a;388W 芯片个数&#xff1a;2 引脚数量&#xff1a;…

tp5+workman(GatewayWorker) 安装及使用

一、安装thinkphp5 1、宝塔删除php禁用函数putenv、pcntl_signal_dispatch、pcntl_wai、pcntl_signal、pcntl_alarm、pcntl_fork&#xff0c;执行安装命令。 composer create-project topthink/think5.0.* tp5 --prefer-dist 2、配置好站点之后&#xff0c;浏览器打开访问成…

软件验收测试计划、验收测试报告案例模板参考

1. 概述 1.1. 编写目的 1.2. 测试背景 1.3. 测试依据 1.4. 测试对象 1.5. 测试资源 2. 测试方式与环境 2.1. 测试方式 2.2. 测试环境 3. 测试结果 3.1. 功能适合性和准确性 3.1.1. 总体统计 3.1.2. 详细结果 3.2. 安全性 3.3. 可靠性和性能 4. 总体分析 5. 测试…

bat批处理文件_输出内容到文本

文章目录 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09;2、echo str >> test.txt&#xff08;不覆盖原有内容&#xff0c;追加&#xff09; 1、echo str > test.txt&#xff08;覆盖原有内容&#xff09; 2、echo str >> test.txt&#xff0…

Spring Cloud Gateway 缓存区异常

目录 1、问题背景 2、分析源码过程 3、解决办法 最近在测试环境spring cloud gateway突然出现了异常&#xff0c;在这里记录一下&#xff0c;直接上干货 1、问题背景 测试环境spring cloud gateway遇到以下异常 DataBufferLimitException: Exceeded limit on max bytes t…

Docker nginx容器代理播放m3u8视频文件(HLS)

文章目录 Docker Nginx容器代理播放M3U8文件教程获取Nginx Docker镜像设置Nginx配置文件用 ffmpeg 将 MP4 文件转换成 m3u8 文件运行Docker容器测试M3U8流其他问题我用vlc都能播放http://192.168.121.50/forest4kTest.m3u8和http://192.168.121.50/forest4kTest.mp4&#xff0c…

【HBase】——优化

1 RowKey设计 重要&#xff1a;一条数据的唯一标识就是 rowkey&#xff0c;那么这条数据存储于哪个分区&#xff0c;取决于 rowkey 处于 哪个一个预分区的区间内&#xff0c;设计 rowkey的主要目的 &#xff0c;就是让数据均匀的分布于所有的 region 中&#xff0c;在一定程度…

HTML 使用 ruby 给汉字加拼音

使用 ruby 给汉字加拼音 兼容性 使用 ruby 给汉字加拼音 大家有没有遇到过要给汉字头顶上加拼音的需求? 如果有的话, 你是怎么解决的呢? 如果费尽心思, 那么你可能走了很多弯路, 因为 HTML 原生就有这样的标签来帮我们实现类似的需求. <ruby> ruby 本身是「红宝石」…

大学物理-实验篇——测量误差与数据处理(测量分类、误差、有效数字、逐差法)

目录 测量分类 测量次数角度 测量条件角度 误差 误差分类 系统误差 随机误差 异常值 误差描述 精密度&#xff08;Precision&#xff09; 正确度&#xff08;Trueness&#xff09; 准确度/精确度&#xff08;Accuracy&#xff09; 随机误差的处理 直接测量 算术…

一起玩儿物联网人工智能小车(ESP32)——27. 旋转编码器的使用方法

摘要&#xff1a;本文介绍旋转编码器的使用方法 旋转编码器是一种机电设备&#xff0c;可将轴或轴的角位置或运动转换为模拟或数字输出信号&#xff0c;在工业控制中发挥着举足轻重的作用。旋转编码器目前被广泛的应用在数控机床、印刷设备、包装机械、输送带、电梯、机器人、风…