Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制
Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.基于用户的访问控制概述
认证质询:
WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码
认证:
Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源
认证方式两种:
basic:
明文认证,不过可以配合https进行加密传输问题也不大。
digest:
消息摘要认证,兼容性差,有的浏览器可能不支持哟~
安全域:
需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因
用户的账号和密码
虚拟账号:
仅用于访问某服务时用到的认证标识
存储:
文本文件,SQL数据库,ldap目录存储,nis等
二.基于basic认证配置实战案例
1>.创建测试数据
[root@node101.yinzhengjie.org.cn ~]# mkdir /var/www/html/admin
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo "/var/www/html/admin/index.html" > /var/www/html/admin/index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /var/www/html/admin
total
-rw-r--r-- root root Dec : index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/index.html
/var/www/html/admin/index.html
[root@node101.yinzhengjie.org.cn ~]#
2>.提供账号和密码存储(文本文件)
使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
常用选项:
-c:
自动创建文件,仅应该在文件不存在时使用
-p:
明文密码
-d:
CRYPT格式加密,默认
-m:
md5格式加密
-s:
sha格式加密
-D:
删除指定用户 具体使用案例如下图所示。
[root@node101.yinzhengjie.org.cn ~]# htpasswd -c /etc/httpd/conf.d/httpdpasswd jason #创建第一个用户时需要使用"-c"选项创建的用户的同时会自动创建文件,若文件已经存在则清空文件所有内容重新写入咱们新创建的用户。
New password:
Re-type new password:
Adding password for user jason
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd
-rw-r--r-- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# date
Mon Dec :: CST
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# htpasswd -s /etc/httpd/conf.d/httpdpasswd jay #创建第二个用户时千万别在使用"-c"选项哟,不过咱们可以使用-s指定加密算法为sha格式加密哟~
New password:
Re-type new password:
Adding password for user jay
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# chmod /etc/httpd/conf.d/httpdpasswd #为了安全起见,可以将文件权限改小点。
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd
-rw------- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdpasswd
jason:$apr1$fnoHrDaP$Q0ZGtsOj9D4W3xHzIKm9E/
jay:{SHA}o78nbN18sxTgXokaJRMEYOxV5b8=
[root@node101.yinzhengjie.org.cn ~]#
htpasswd命令使用案例
3>.修改httpd的配置文件
[root@node101.yinzhengjie.org.cn ~]# ll /var/www/html/admin/
total
-rw-r--r-- root root Dec : index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/index.html
/var/www/html/admin/index.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/auth.conf
<Directory "/var/www/html/admin">
AuthType Basic #指明验证方式
AuthName "Welecon to Login" #指定客户端验证时的提示信息
AuthUserFile "/etc/httpd//conf.d/httpdpasswd" #指定账号验证文件,一定要确认httpd运行用户是否对该文件有执行权限哟~
Require user jason #此处我们只写了允许jason用户访问,若果想要jay用户也可以访问则输入"Require user jason jay",如果允许帐号验证文件中所有用户登录访问则这里可以写"Require valid-user"
</Directory>
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -t
Syntax OK
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
[root@node101.yinzhengjie.org.cn ~]#
4>.浏览器访问页面并使用jason用户登录
5>.用户名密码验证成功就可以访问成功啦~(如果不能访问的话,错误原因可以自行查看错误日志信息哟~)
6>.使用jay用户访问并不会成功,因为咱们在httpd的配置文件中配置的是"Require user jason" 表示只允许jason用户访问
7>.在配置文件中定义一个".htaccess"隐藏文件
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/auth.conf
<Directory "/var/www/html/admin">
AllowOverride AuthConfig #除了AuthConfig的其它指令都无法覆盖,即允许使用权限验证功能。
</Directory>
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/.htaccess #将之前的验证信息直接写在这里的隐藏文件即可
AuthType Basic
AuthName "Welecon to Login"
AuthUserFile "/etc/httpd//conf.d/httpdpasswd"
Require user jason jay #此处我们允许jason和jay用户访问,若允许账号验证文件的所有用户均有权限访问可直接写"Require valid-user"即可。
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
[root@node101.yinzhengjie.org.cn ~]#
8>.为什么".htaccess"文件客户端看不到呢?(如下图所示,那是因为以".ht*"开头的文件都被拒绝啦~)
[root@node101.yinzhengjie.org.cn ~]# grep -C htaccess /etc/httpd/conf/httpd.conf
# for more information.
#
Options Indexes FollowSymLinks #
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None --
<IfModule dir_module>
DirectoryIndex index.html
</IfModule> #
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# grep -C 5 htaccess /etc/httpd/conf/httpd.conf #查看匹配到"htaccess"内容的前后5行
三.基于组账号进行认证实战案例
1>.创建用户账号和组账号文件
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdpasswd
jason:$apr1$fnoHrDaP$Q0ZGtsOj9D4W3xHzIKm9E/
jay:{SHA}o78nbN18sxTgXokaJRMEYOxV5b8=
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# htpasswd /etc/httpd/conf.d/httpdpasswd jerry
New password:
Re-type new password:
Adding password for user jerry
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdpasswd
jason:$apr1$fnoHrDaP$Q0ZGtsOj9D4W3xHzIKm9E/
jay:{SHA}o78nbN18sxTgXokaJRMEYOxV5b8=
jerry:$apr1$NC0Az6Ga$2ers2ZQZttbW.DPNrie.n0
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# vim /etc/httpd/conf.d/httpdgroup
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/httpdgroup #每一行定义一个组,组中的用户用空格分开
testgroup: jason jerry
[root@node101.yinzhengjie.org.cn ~]#
2>.定义安全域
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.d/auth.conf
<Directory "/var/www/html/admin">
AllowOverride AuthConfig
</Directory>
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# vim /var/www/html/admin/.htaccess
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/admin/.htaccess
AuthType Basic
AuthName "Welecon to Login"
AuthUserFile "/etc/httpd//conf.d/httpdpasswd"
AuthGroupFile "/etc/httpd/conf.d/httpdgroup"
Require group testgroup
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -t
Syntax OK
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd
[root@node101.yinzhengjie.org.cn ~]#
3>.使用jerry用户访问
4>.jerry用户访问成功
5>.远程客户端和用户验证的控制
Satisfy ALL|Any
ALL:
客户机IP和用户验证都需要通过才可以
Any:
客户机IP和用户验证,有一个满足即可 示例:
Require valid-user #这种写法是httpd2.2版本的写法,在httpd2.4推荐使用Require all granted
Order allow,deny
Allow from 192.168.
Satisfy Any
四.认证时需要启动认证模块(默认是启动的)
1>.禁用基本认证模块
[root@node101.yinzhengjie.org.cn ~]# grep auth_basic_module /etc/httpd/conf.modules.d/-base.conf #禁用基本的身份验证模块,只需要在前面添加"#"号注释即可。
#LoadModule auth_basic_module modules/mod_auth_basic.so
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -M | grep basic #若没有输出说明动态模块被咱们禁用了
[root@node101.yinzhengjie.org.cn ~]#
2>.禁用认证模块后用户将无法使用认证功能
[root@node101.yinzhengjie.org.cn ~]# tail -10f /var/log/httpd/error_log #错误日志出现如下的报错信息哟~
......
[Mon Dec ::58.813900 ] [authn_core:error] [pid :tid ] [client 172.30.1.254:] AH01796: AuthType Basic configured without corresponding module
[root@node101.yinzhengjie.org.cn ~]#
3>.启用基本认证模块
[root@node101.yinzhengjie.org.cn ~]# grep auth_basic_module /etc/httpd/conf.modules.d/-base.conf #"auth_basic_module"是基本的身份验证的模块,默认是开启的。
LoadModule auth_basic_module modules/mod_auth_basic.so #加载模块的指令使用的是LoadModule,加载模块的名称为"auth_basic_module",该模块在磁盘上存放的位置是"modules/mod_auth_basic.so"
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/modules/mod_auth_basic.so #根据上面指定的位置咱们的确可以找到该模块哟~
-rwxr-xr-x root root Aug : /etc/httpd/modules/mod_auth_basic.so
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -M | grep basic #该动态模块已经被加载啦
auth_basic_module (shared)
[root@node101.yinzhengjie.org.cn ~]#
五.客户端验证失败原因
1>.查看错误日志
[root@node101.yinzhengjie.org.cn ~]# tail /var/log/httpd/access_log
172.30.1.254 - - -- :: "-" - "-" "-"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /favicon.ico HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /favicon.ico HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - jason -- :: "GET /admin/ HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
172.30.1.254 - - -- :: "GET /favicon.ico HTTP/1.1" "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# tail /var/log/httpd/access_log
[root@node101.yinzhengjie.org.cn ~]# tail /var/log/httpd/error_log
[Mon Dec ::58.813900 ] [authn_core:error] [pid :tid ] [client 172.30.1.254:] AH01796: AuthType Basic configured without corresponding mod
ule[Mon Dec ::57.638316 ] [authn_core:error] [pid :tid ] [client 172.30.1.254:] AH01796: AuthType Basic configured without corresponding mod
ule[Mon Dec ::08.559118 ] [mpm_worker:notice] [pid :tid ] AH00297: SIGUSR1 received. Doing graceful restart
[Mon Dec ::08.567627 ] [lbmethod_heartbeat:notice] [pid :tid ] AH02282: No slotmem from mod_heartmonitor
[Mon Dec ::08.567967 ] [mpm_worker:notice] [pid :tid ] AH00292: Apache/2.4. (CentOS) configured -- resuming normal operations
[Mon Dec ::08.567977 ] [core:notice] [pid :tid ] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Mon Dec ::20.795627 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[Mon Dec ::22.947555 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[Mon Dec ::34.561196 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[Mon Dec ::18.925494 ] [authn_file:error] [pid :tid ] ()Permission denied: [client 172.30.1.254:] AH01620: Could not open password file
: /etc/httpd/conf.d/httpdpasswd[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# tail /var/log/httpd/error_log
2>.错误原因分析
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd #错误原因可能会是客户端输入了错误密码,但是从上面的日志分析可以看出来应该是权限被拒绝,于是查看该文件发现果不其然,的确是没有权限访问的。
-rw------- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
3>.解决方案
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd
-rw------- root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ps aux | grep httpd #需要查明httpd服务是被哪个用户启用的,不难发现是apache用户在运行httpd服务。
root 0.0 0.0 ? Ss : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? S : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
apache 0.0 0.0 ? Sl : : /usr/sbin/httpd -DFOREGROUND
root 0.0 0.0 pts/ S+ : : grep --color=auto httpd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# setfacl -m u:apache:r /etc/httpd/conf.d/httpdpasswd #于是我们需要为httpd服务添加ACL权限
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /etc/httpd/conf.d/httpdpasswd
-rw-r-----+ root root Dec : /etc/httpd/conf.d/httpdpasswd
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# getfacl /etc/httpd/conf.d/httpdpasswd #再次确认一下httpd的验证文件是否有权限哟~确认有访问权限后再使用浏览器访问就可以成功啦,如下图所示。
getfacl: Removing leading '/' from absolute path names
# file: etc/httpd/conf.d/httpdpasswd
# owner: root
# group: root
user::rw-
user:apache:r--
group::---
mask::r--
other::--- [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#
Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制的更多相关文章
- Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机
Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.虚拟主机实现方案 1>.Apache httpd 有三种实现虚 ...
- Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面
Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.status功能概述 status页 ...
- Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项
Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ServerSignature指令概述 ...
- Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享
Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.实现用户家目录的http共享前提 在配置家目录共 ...
- Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名
Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建测试数据 [root@node101.yinzhengj ...
- Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集
Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看生产环境中使用的字符集案例 1>.查看腾讯设置的默认 ...
- Httpd服务入门知识-Httpd服务常见配置案例之日志设定
Httpd服务入门知识-Httpd服务常见配置案例之日志设定 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志类型 [root@node101.yinzhengjie.org ...
- Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制
Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Options 1>.OPTIONS指 ...
- Httpd服务入门知识-Httpd服务常见配置案例之定义站点主页面及错误页面配置
Httpd服务入门知识-Httpd服务常见配置案例之定义站点主页面及错误页面配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.定义站点主页面 [root@node101.yi ...
随机推荐
- nuxt中localstorage的替代方案
采用异步的方式进行存储数据,更高效快速,使用localforage是你最好的选择 具体转载自博客 Heap Stack Blog(pingbook.top) Nuxt storage data in ...
- vultr的防火墙注意事项
如下图所示,你设置让任意IP的TCP,UDP,GRE,ESP,ICMP都允许访问,并不表示开放了任意协议和端口了. 下图只是表示开放了TCP,UDP,GRE,ESP,ICMP五个协议,比如ROS路由的 ...
- Android 从零编写一个带标签 TagTextView
最近公司的项目升级到了 9.x,随之而来的就是一大波的更新,其中有个比较明显的改变就是很多板块都出了一个带标签的设计图,如下: 怎么实现 看到这个,大多数小伙伴都能想到这就是一个简单的图文混排,不由得 ...
- 基于GPU的算法并行化
GPU计算的目的即是计算加速.相比于CPU,其具有以下三个方面的优势: l 并行度高:GPU的Core数远远多于CPU(如G100 GPU有240个Cores),从而GPU的任务并发度也远高于CPU ...
- SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
这条警告表明一个SQL Server代理设置没有配置,可能阻止某些作业运行. 你可以设置作业在CPU“空闲”时运行(在第一篇提到过).然而,在这个系统中空闲的定义还没有被 设置. 在SSMS配置此选项 ...
- 2、word插入目录、图/表
一.word插入目录 依次对每个标题在“段落”中进行大纲级别选择. 光标定位于目录生成的页面,再“引用”->“目录”->选择“自动目录1/2”,则可自动生成目录.若目录有所更改,则可选择“ ...
- Lua代码编写规范
开发中,大量使用lua,暂时根据当前状况,总结相对而言较好的规范,在多人协作中可以更好的开发.交流. 介绍 该文档旨在为使用lua编写应用程序建立编码指南. 制订编码规范的目的: 统一编码标准,通用 ...
- Linux 常用文件描述
Linux 常用文件描述 /etc/issue 本地登陆显示的信息,本地登录前 /etc/issue.net 网络登陆显示的信息,登录后显示,需要由sshd配置 /etc/motd 常用于通告信息,如 ...
- 【题解】最大 M 子段和 Max Sum Plus Plus [Hdu1024] [51nod1052]
[题解]最大 M 子段和 Max Sum Plus Plus [Hdu1024] [51nod1052] 传送门:最大 \(M\) 子段和 \(Max\) \(Sum\) \(Plus\) \(Plu ...
- 【题解】Editor [HDU4699]
[题解]Editor [HDU4699] 传送: \(Editor\) \([HDU4699]\) [题目描述] 有一个维护整数序列的强大编辑器,初始状态为空,下面提供五种不同的操作,给出的总操作次数 ...