Linux入门攻坚——30、sudo、vsftpd

su:Switch User,即切换用户
  su [-l user] -c ‘COMMAND’
如:su -l root -c ‘COMMAND’
如果没有指定-l user,则默认是root

sudo:可以让某个用户不需要拥有管理员的密码,而可以执行管理员的权限。
  需要授权,授权之后,能够让某用户以另外一个用户的身份运行命令。
授权依赖配置文件:sudoers
sudo的用法 : # sudo COMMAND

配置文件sudoers:/etc/sudoers
root    ALL=(ALL)     ALL
%wheel    ALL=(ALL)    ALL

以上每一列的含义如下:
第一列:用户名(带%的是组名),如root、test;运行命令者的身份(who,即user)。
第二列:等号左边的ALL表示允许从任何主机登录当前的用户账户,即通过哪些主机(where,即host);等号右边的ALL表示第一列的用户可以切换成系统中任何一个其它用户,即以哪个用户的身份(whom,即runas)(如:su test)。
第三列:第一列的用户能下达的命令,ALL表示可以下达任何命令。也可以指定特定命令,即运行哪些命令(which,即command),如/sbin/useradd,/sbin/userdel
配置项:
users    hosts=(runas)   commands
users:可以是username,或#uid或user_alias或%group_name或%#gid
hosts:ip、hostname、netaddr
commands:command name、directory、sudoedit

Alias_Type NAME = item1, item2, ...
    NAME:必须是全部大写
    Alias_Type:User_Alias、Host_Alias、Runas_Alias、Cmnd_Alias

测试:修改sudo配置文件,添加用户及可以执行命令

添加用户:

可执行的命令:

测试执行:

设置的命令出错了,是/sbin/ip,而不是/usr/sbin/ip,修改后:

sudo有个检票机制,即在输入用户密码后的5分钟内,执行命令不需要再次输入密码,使用sudo -k可以取消这次检票功能,即需要再次输入密码。

sudo的选项:
  -V:显示版本号
  -h:显示版本编号及指令的使用方式说明,即帮助
  -l:显示出自己(执行sudo的使用者)的权限
  -k:强迫使用者在下一次执行sudo时问密码
  -b:将要执行的指令放在后台执行
  -u user:以user用户身份运行

文件共享服务:应用层  ftp

NFS:Network File System(基于RPC:Remote Procedure Call,远程过程调用)
Samba:在Linux实现CIFS(SMB)协议,跨平台
DAS,NAS,SAN
mogileFS
mooseFS
hadoop HDFS

FTP,文件传输协议:采用C/S模型,即客户端和服务器,基于tcp,采用双TCP连接方式,两个连接:
  命令连接/控制连接:21/tcp,用于传输命令及命令执行信息,整个FTP会话期间一直保持打开
  数据连接:用于数据的上传下载文件列表发送等,数据传输结束后数据连接将终止。分两种情况
    主动模式:20/tcp,服务器端使用tcp的20端口主动连接客户端,用于数据连接,客户端的端口是客户端控制连接端口号加1,如果占用,再加1,以此类推。
    被动模式:主动模式中客户端一般有防火墙,容易连接失败,服务器通过控制连接,告诉客户端一个服务器随机端口号,由客户端连接这个端口。这就是被动模式。
数据传输模式:二进制模式和文本(ASCII模式)两种,(服务器客户端采用自动模式协商决定)
● 文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。
●  二进制模式用来传送可执行文件,压缩文件,和图片文件。如果用ASCII模式传,会显示一堆乱码,必须重新用BINARY模式传。用HTML和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。
    ftp server --> ftp client

主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:
● FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
● 当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输。
在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。

被动方式也称为PASV方式,被动方式的主要特点是:
●  FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端
●  当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输
在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。

数据的类型:
  结构化数据
  半结构化数据
  非结构化数据

服务器端程序:
  vsftpd:very Secure ftp Daemon
  proftpd:
客户端层序:
  CLI:ftp、lftp
  GUI:gftp、FlashFXP、Cuteftp

FTP的典型消息:
消息号及含义:
125:数据连接打开,传输开始;  200:命令OK ;  226:数据传输完毕;  331:用户名OK;  
425:不能打开数据连接;  426:数据连接被关闭,传输被中断;  452:错误写文件;
500:语法错误,不可识别的命令;

vsftpd:
支持基于IP的虚拟FTP服务器;支持虚拟用户;支持PAM或xinetd/tcp_wrappers的认证方式;支持两种运行方式:独立和Xinetd;支持每个虚拟用户具有独立的配置;支持带宽限制等。

安装:yum install vsftpd
查看安装文件:

启动:

用户认证:虚拟用户:仅用于访问某特定服务中的资源
nsswitch:network service switch,名称解析框架,配置文件:/etc/nsswitch.conf
                 模块:/lib64/libnss*,/usr/lib64/libnss*
pam:pluggable authentication module,模块:/lib64/security/,
           配置文件:/etc/pam.conf,/etc/pam.d/* 

/etc/vsftpd:配置文件目录
  /etc/init.d/vsftpd:服务脚本
  /usr/sbin/vsftpd:主程序
基于PAM实现用户认证:
  /etc/pam.d/*
  /lib/security/*
  /lib64/security/*
  支持虚拟用户  

文件目录:
  /var/ftp:只对root用户具有写权限
上传和下载: 下载一般风险较少,上传则风险较大。

FTP用户类型
匿名用户:anonymous或ftp
本地用户:账号名称、密码等信息保存在passwd、shadow文件中
虚拟用户:使用独立的账号/密码数据文件
ftp:系统用户
  匿名用户(映射为ftp用户)--> 系统用户,anonymous_enable=YES|NO,共享资源位置:/var/ftp
  虚拟用户 --> 系统用户,资源位置是给虚拟用户指定的映射成为的系统用户的家目录
  系统用户:local_enable=YES|NO,访问的是系统用户的家目录。

/var/ftp:ftp用户的家目录
  匿名用户访问目录

通过上面的命令,可以看到匿名用户是映射到ftp用户

chroot:禁锢用户于其家目录中

系统用户:write_enable=YES:上传文件

文件服务权限:文件系统权限*文件共享权限

测试操作:
启动vsftpd服务后,直接ftp登录:

可以看到,即使是匿名用户登录,也需要输入用户名。

匿名用户显示当前目录为"/",即根目录,当实际文件系统目录是/var/ftp
配置vsftpd:文件/etc/vsftpd/vsftpd.conf

anonymous_enable=NO,禁止匿名访问

添加系统用户,使用系统用户登录:
  useradd test01
配置中增加:local_enable=YES
使用系统用户登录:

可以看到,使用系统用户,登录的默认路径是系统用户的家目录,而且可以切换到其他系统路径,这是很危险的操作。一般正常应该锁定(禁锢)在FTP的根目录,即/var/ftp

chroot:禁锢用户于其家目录中。
系统用户,配置文件中:write_enable=YES:允许系统用户上传文件

使用匿名用户登录,再次测试上传文件:

发现无法上传。
在配置文件中有 #anon_upload_enable=YES,就是用来设置匿名用户是否可以上传文件,默认是不允许。
将此项设置打开,即anon_upload_enable=YES,重新加载配置后,再次测试上传。

发现依然没有上传成功,但是提示信息变化了,由原来的550 Permission denied变为553 Could not create file。即原来是权限拒绝变成了无法创建文件。

/var/ftp以及/var/ftp/pub两个目录的属主属组都是root,且只有属主root才具有写权限,即w权限。
而启动ftp进程处理数据传输的用户是ftp,所以需要目录对ftp用户具有写权限。
创建一个子目录,使其对ftp用户具有写权限:


所以,文件服务权限取决于:文件系统权限 * 文件共享权限
测试在此目录下创建子目录和删除文件:

不能创建子目录,不能删除文件。这两项属于不同的权限设置,在配置文件中,有如下设置项:
anon_mkdir_write_enable=YESanon_other_write_enable=YES,即是来开启匿名用户创建子目录和删除文件的权限。
先测第一项,创建目录:

能创建,不能删除,开放第二项other配置:

dirmessage_enable=YES,启动目录的欢迎信息,在目录下创建.message文件,文件中写上相关信息,在进入此目录时显示此文件中的信息。

banner_file=/var/vsftpd-banner,登录FTP站点时,显示的欢迎信息,欢迎信息定义在一个文件中,这里假设定义在/var/vsftpd-banner

ftpd_banner=My FTP Server 12,不是很复杂的提示信息或欢迎信息,可以直接用ftpd_banner=xxx来实现。
xferlog_enable=YES,启用ftp的日志功能,但是光启动这一项还不行,还要启用xferlog_file=/var/log/xferlog,即指定日志文件的位置:

日志的格式,使用xferlog_std_format=YES,标准格式。
#chown_uploads=YES 和 #chown_username=whoever
上传后改变属主。改变以后,当前用户对文件的权限就会受到限制。
#idle_session_timeout=600,控制链接的空闲时间。
#data_connection_timeout=120,数据传输链接的超时时间。
#ascii_upload_enable=YES 和 #ascii_download_enable=YES,以ascii进行上传下载
#chroot_list_enable=YES 和 #chroot_list_file=/etc/vsftpd/chroot_list,第一项是启用禁锢用户功能,第二项指定一个文件,在文件中列出需要禁锢的用户列表。在chroot_list中添加test01:

此时,test01用户被禁锢在FTP的根目录下。
#chroot_local_user=YES,如果想禁锢所有的系统用户,可以使用这条配置,上面两条就不需要了。
使用root用户进行登录测试:

不允许登录。在/etc/vsftpd目录下有ftpusers文件,其中每一行是一个系统用户名,这些用户不允许登录vsftpd。

默认vsftpd使用的是pam认证,在vsftpd.conf配置文件中。有pam_service_name=vsftpdp配置项。
PAM使用vsftpd文件,如下:

可以看到,PAM认证使用ftpusers文件,默认是deny。
vsftpd还可以使用user_list文件进行登录用户的控制。配置文件中有userlist_enable=YES,说明启用user_list文件进行用户控制,默认文件中的用户不允许登录,即有一个默认配置项:userlist_deny=YES

将test03加入这个文件中,测试:

可以发现无法登陆;如果修改默认权限配置,即增加userlist_deny=NO,即允许登录,再次测试:

可以看到,test03登录成功,root还是登录失败,但是可以输入密码了,因为还要受到ftpusers文件设定权限的限制。将ftpusers中的root去掉,再次测试:

root登录成功。
max_clients=# 最大并发连接数
max_per_ip=# 每个客户端IP地址可同时发起的最多并发请求数数
local_max_rate=# 系统用户(本地用户)的最大传输速率设置
anon_max_rate=# 匿名用户的最大传输速率设置
pasv_min_port=#   pasv_max_port=# 将使客户端连接时的端口范围在最小值和最大值之间。
chown_uploads=YES
chown_username=nobody
  启用上传文件修改属主,属主改为nobody。

虚拟用户:所有的虚拟用户会被统计映射为一个指定的系统账号,访问的共享位置即为此系统用户的家目录;各虚拟用户可被赋予不同的访问权限,主要是通过匿名用户的权限控制参数进行指定。
构建基于虚拟用户的vsftpd服务器——虚拟用户账号基于文件
1、建立虚拟FTP用户的账号数据库文件;
2、创建FTP根目录及虚拟用户映射的系统用户;
3、建立支持虚拟用户的PAM认证文件;
4、在vsftpd.conf文件中添加支持配置;
5、为个别虚拟用户建立独立的配置文件;
6、重新加载vsftpd配置;
7、使用虚拟FTP账号访问测试;

1、创建虚拟FTP用户账户文件,在/etc/vsftpd/目录下创建vusers.list,格式为每两行代表一个用户,奇数行代表用户名,偶数行代表密码。如:
user01
pass01
user02
pass02
将上述文件转化为Berkeley DB格式的数据文件,使用db_load 转换工具,需安装 db4-utils-4.3.29-9.fc6.i386.rpm 软件包。


在使用 db_load 命令时,“-f”选项用于指定用户名/密码列表文件,“-T”选项允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件,“-t hash”选项指定读取数据文件的基本方法。将帐号文件的权限设置为600,可以有效提高安全性。
2、创建FTP根目录及虚拟用户映射的系统用户,vsftpd虚拟用户需要有一个对应的系统用户帐号(该帐号无需设置密码及登录Shell),该用户帐号的宿主目录作为所有虚拟用户登录后的共同FTP根目录。

3、建立支持虚拟用户的PAM认证文件:/etc/pam.d/vsftpd.vu
PAM配置文件(名称可以自行定义)主要用于为程序提供用户认证控制,vsftpd服务使用的默认PAM配置文件为/etc/pam.d/vsftpd,可以参考该文件的格式建立新的PAM配置文件,用于虚拟用户认证控制 。如下文件,其中db=就是上一步vusers.list转换的vusers.db,不需要加后缀。

4、在vsftpd.conf文件中添加支持配置:
pam_service_name=vsftpd.vu,指定PAM验证使用的文件,即上一步创建的文件;
local_enable=YES,因为映射的是本地用户登录,所以这一项要配置成YES;
guest_enable=YESguest_username=virtualuser,配置虚拟用户可以访问;
userlist_enable=YESuserlist_deny=NO先注释掉,将匿名用户的配置注释掉,即以anon开头的配置注释掉。
测试,使用虚拟用户可以登录,但是不能创建目录,不能上传文件:

在vsftpd.conf配置文件中添加guest_enable、guest_username配置项,将访问FTP服务的所有虚拟用户对应到同一系统用户帐号virtualuser。并修改pam_service_name配置项,指向上一步建立的PAM配置文件/etc/pam.d/vsftpd.vu
在vsftpd服务中,虚拟用户帐户默认作为匿名用户处理以降低权限,因此对应的权限设置通常使用以anon_开头的配置项。例如,在设置虚拟用户所上传文件的默认权限掩码时应采用配置项anon_umask而不是local_umask。
5、为个别虚拟用户建立独立的配置文件
在vsftpd.conf文件中添加用户配置目录支持
 user_config_dir=/etc/vsftpd/vusers_dir ,这里目录为vusers_home
为用户user01、user02建立独立的配置目录及文件, 配置文件名与用户名同名

此时可以创建目录,可以上传文件。
一个很奇怪的问题是:在使用CentOS的ftp命令登录时,只能创建目录,不能上传文件,改为lftp就可以。

构建基于虚拟用户的vsftpd服务器——虚拟用户账号基于Mysql
1、安装mysql数据库,系统上已经编译安装了MariaDB,此步骤略过;
2、安装相关包:yum install mysql-devel pam_mysql
3、准备数据库及相关表;首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456';
mysql> flush privileges;
mysql> use vsftpd;
mysql> create table users (
 id int AUTO_INCREMENT NOT NULL,
 name char(20) binary NOT NULL,
password char(48) binary NOT NULL,
 primary key(id) );

  添加测试的虚拟用户,根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

mysql> insert into users(name,password) values('vuser01',password('123456'));
mysql> insert into users(name,password) values('vuser02',password('123456'));

4、配置vsftpd
1)建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

2)修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录,利用上一次的虚拟用户:
# useradd -s /sbin/nologin -d /var/myftproot virtualuser
# chmod go+rx /var/myftproot

请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项
guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql
5、重启vsftpd,访问测试:

6、配置虚拟用户具有不同的访问权限:与上一个使用文件的虚拟用户一样,vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
配置vsftpd为虚拟用户使用配置文件目录:
# vim vsftpd.conf   , 添加如下选项
user_config_dir=/etc/vsftpd/vusers_home
创建所需要目录,并为虚拟用户提供配置文件:
# mkdir /etc/vsftpd/vusers_home/
# cd /etc/vsftpd/vusers_home/
# touch vuser01
配置虚拟用户的访问权限:
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。修改/etc/vsftpd/vusers_config/vuser01文件,在里面添加如下选项即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}

lftp命令:支持命令行补全,语法着色等
lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]  登录ftp服务器
lftpget [-c] [-d] [-v] URL [URL...] 下载文件命令
axel,可以多线程下载,支持断点续传。

ftp协议是明文的,如要安全,使用:
  ftps:SSL
  sftp:SSH
 

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

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

相关文章

raw.githubusercontent.com未能解析” 解决方案

1.操作场景 通过windows11 powershell 下载依赖包 2.报错信息如下 irm : 未能解析此远程名称: raw.githubusercontent.com 所在位置 行:1 字符: 27 & ([scriptblock]::Create((irm "https://win11debloat.raphi.re/"))) ~~~~~~~~~…

2 Python开发工具:PyCharm的安装和使用

本文是 Python 系列教程第 2 篇,完整系列请查看 Python 专栏。 1 安装 官网下载地址https://www.jetbrains.com.cn/pycharm/,文件比较大(约861MB)请耐心等待 双击exe安装 安装成功后会有一个30天的试用期。。。本来想放鸡火教程&…

Mybatis中的缓存

一,为什么要使用缓存 1,缓存的作用 缓存(cache)的作用是为了减去数据库的压力,提高查询性能。 缓存实现的原理: 从数据库中查询出来的对象在使用完后不要销毁,而是存储在内存(缓存)…

智能指针(RAII)

智能指针(RAII) 一、内存泄漏1、介绍2、原因3、泄漏的内存类型分类 二、RAII1、介绍2、基本思想3、优点4、实现方式 三、unique_ptr1、介绍2、主要特性3、注意事项4、unique_ptr类5、示例代码6、运行结果7、简单实现 四、shared_ptr1、介绍2、主要特点3、…

单自由度无阻尼系统振动分析

特别感谢:https://www.bilibili.com/video/BV114411y7ab/?p6&spm_id_frompageDriver&vd_sourceebe07816bf845358030fc92d23830b29 本文图片该系列视频 tips:关于特征方程与振动方程: 特征方程有助于我们理解和确定系统的固有频率和模…

C语言基础(二十)

链表是一种常见的数据结构,通常用来存储一系列元素,每个元素由一个节点来表示。在链表中,每个节点包含两部分:数据元素本身和指向下一个节点的指针。这种结构使得链表中的元素在内存中不是连续存储的,而是通过指针连接…

随笔九、SARADC按键程控测试

目录 1. 泰山派环境 2. 按键3分析 3. 编程测试 1. 泰山派环境 泰山派开发板上有3个按键 按键1是电源按键PWRON,实测按几下会导致开发板重启 按键2是复位按键RESET,按下立马复位重启 按键3是升级按键RECOVER,配合RESET按键可以使开发板进…

Unity编辑器扩展之Scene视图扩展

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity编辑器扩展之Scene视图扩展 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取! …

使用cJSON进行JSON文件读写

推荐cJSON下载地址: Git地址:https://github.com/arnoldlu/cJSON 可以尝试:sudo apt-get install libcjson-dev,笔者未使用该方式。 百度AI搜索程序,供参考,部分函数名称应以cJSON模块内定义为主 json文…

游泳耳机哪个牌子的好?四大口碑精品游泳耳机专业推荐!

在追求健康生活的同时,游泳成为了许多人选择的锻炼方式。它不仅能够帮助人们塑造身材,还能有效缓解压力。而在游泳过程中,音乐的陪伴无疑能让人更加享受这段时光。因此,一款适合游泳时使用的耳机,成为了游泳爱好者们不…

CSS学习笔记(01)flex布局

1、首先对父元素设置disiplay:felx, 其有6个属性 fex-direction:设置主轴的方向 justify-content:设置主轴上的子元素排列方式 flex-wrap:设置子元素是否换行 align-content:设置侧轴上的子元素的排列方式(多行) align-items:设置侧轴上的子元素排列方式…

前端性能优化:提升网站加载速度的五个关键技巧

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端性能优化:提升网站加载速度的五个关键技巧1. 引言2. 前端性能优化的五个关键技巧2.1 减少HTTP请求技巧说明实现示例 2.2 启用浏览器缓存技巧说明实现示例 2.3 使用内容分发网络(CDN)技巧说明…

8.27FLEX,BISON

RC ParseStage::handle_request(SQLStageEvent *sql_event) 这个意思是返回类型是RC,然后用到的函数来自 ParseStage,::就是用来标识作用域的,函数名是handle_request,是ParseStage里的函数 FLEX BISON

一个浏览器插件如何月入12万美元:深入了解 GoFullPage

一个浏览器插件如何月入12万美元:深入了解 GoFullPage 前言 GoFullPage 这个插件的诞生,源于其创作者 Peter Coles 的一个简单想法:解决一个他在日常开发工作中遇到的痛点。早在 2012 年,Coles 发现许多现有的网页截图工具无法完…

x264 编码器 AArch64汇编系列:zigzag 扫描相关汇编函数

zigzag 在x264_zigzag_init函数中初始化具体的 zigzag 实现函数: 以scan_4x4为例 c 语言实现 4x4 变换块扫描:zigzag_scan_4x4_frame。#define ZIGZAG4_FRAME\ZIGDC( 0,

ssh远程连接服务

1、概述 一种安全访问远程服务器的协议,远程管理工具,通过加密方式管理连接,使服务器更安全。 2、加密算法 对称加密 发送密码前将密码数据加密成密文,然后发送出去 接收方收到密文后,使用同一个密钥将密文解密。…

windows安全中心永久卸载工具分享

使用方法 博客:h0ck1r丶羽~从零到一 卸载工具下载链接: 夸克网盘分享 一路回车,选项Y即可 耐心等待几秒种,自动重启 此时打开windows安全中心,已经完全不能使用了,响应的杀毒功能也关了 往期推荐 【渗透测…

【STM32】RTT-Studio中HAL库开发教程五:UART的DMA应用

文章目录 一、简介1.关于DMA2.DMA使用场景3.DMA控制结构4.IDLE空闲中断5.实现方法 二、RTT配置三、串口收发流程四、完整代码五、测试验证 一、简介 1.关于DMA DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件…

python办公自动化:PPT工具之`Python-PPTX`简介

第1章 简介 1.1 什么是Python-PPTX库? Python-PPTX库是一个用于创建和修改Microsoft PowerPoint (.pptx) 文件的Python库。它提供了一个易于使用的API,使得开发者能够以编程方式操纵PowerPoint文件,包括创建新文件、修改现有文件、添加文本…

2024最新最全面的JMeter 做接口加密测试

JMeter 怎么做接口的加密? JMeter如果需要做加密测试,是需要加密类型对应的jar包的。本文以MD5,加密作为教程。 1、在Test Plan 引用jar包; 2、添加BeanShell Sampler取样器,并输入调用代码 import md5.mymd5;//调用jar包 String…