apache如何在普通用户下启动

发布时间 - 2020-08-28 00:00:00    点击率:

目标:

(推荐教程:apache)

普通用户编译的apache,要在该用户下启动1024端口以下的apache端口。

1、假设普通用户为sims20,用该用户编译 安装了一个apache,安装路径为/opt/aspire/product/sims20/apache

./configure --prefix=/opt/aspire/product/sims20/apache   --enable-so --enable-modules=all   --enable-mods-shared=all   --enable-mods-shared='proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http proxy_rewrite'
make  
make install

2、编译完成后,设置http.conf的监听端口为80

3、直接用普通用户sims20启动

  [sims20@bcd-app01 bin]$ ./apachectl  start
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

出错原因:在linux下,普通用户只能用1024以上的端口,而1024以内的端口只能由root用户才可以使用

4、利用setuid来解决问题,这样使用httpd能以root权限运行

用root用户登录,进入/opt/aspire/product/sims20/apache/bin,分别用chown root  httpd、chmod u+s httpd 设置httpd的属主为root及特殊权限

[root@bcd-app01 bin]# ls  -l  httpd
-rwxr-xr-x 1 sims20 aspire 3517470  3月 15 17:12 httpd
[root@bcd-app01 bin]# chown root  httpd
[root@bcd-app01 bin]# ls  -l  httpd
-rwxr-xr-x 1 root aspire 3517470  3月 15 17:12 httpd
[root@bcd-app01 bin]# chmod u+s httpd
[root@bcd-app01 bin]# ls  -l  httpd
-rwsr-xr-x 1 root aspire 3517470  3月 15 17:12 httpd

5、重新进入普通用户sims20,启动apache

[sims20@bcd-app01 bin]$ ./apachectl  start

可以正常启动,没报错

6、试着访问一下

 [sims20@bcd-app01 bin]$ curl  http://10.24.12.159:80


403 Forbidden

Forbidden

You don't have permission to access / on this server.

报403 Forbidden错误

7、看一下进程

[sims20@bcd-app01 bin]$ ps  -ef |grep httpd
root      7841     1  0 17:24 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
daemon    7844  7841  0 17:24 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
daemon    7845  7841  0 17:24 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
daemon    7846  7841  0 17:24 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
daemon    7847  7841  0 17:24 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
daemon    7848  7841  0 17:24 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
sims20    8006  3026  0 17:29 pts/4    00:00:00 grep httpd

怎么跑出daemon 用户了,  原来httpd主进程仍然以root用户的权限运行,而它的子进程将以一个较低权限的用户运行 ,而这个较低权限用户daemon 在http.conf中配置

8、在http.conf中配置一下,将用户改成root

User daemon
Group daemon

改成

User root
Group root

9、再次用普通用户启动apache

[sims20@bcd-app01 bin]$ ./apachectl  restart
Syntax error on line 76 of /opt/aspire/product/sims20/apache/conf/httpd.conf:
Error:\tApache has not been designed to serve pages while\n\trunning as root.  
There are known race conditions that\n\twill allow any local user to read any file on the system.\n\tIf you still desire to serve pages as root then\n\tadd -DBIG_SECURITY_HOLE to the CFLAGS env variable\n\tand then rebuild the server.\n\tIt is strongly suggested that you instead modify the User\n\tdirective in your httpd.conf file to list a non-root\n\tuser.\n

不行的,要重新加参数编译

10、再次修改在http.conf中配置一下,将用户改成普通用户吧

改成

User sims20
Group aspire

11、再次用普通用户sims20启动apache

[sims20@bcd-app01 bin]$ ./apachectl  start
[sims20@bcd-app01 bin]$ ps  -ef  |grep  httpd
root      9720     1  0 18:09 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
sims20    9721  9720  0 18:09 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
sims20    9722  9720  0 18:09 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
sims20    9723  9720  0 18:09 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
sims20    9724  9720  0 18:09 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
sims20    9725  9720  0 18:09 ?        00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start
sims20    9739  3026  0 18:09 pts/4    00:00:00 grep httpd

12、试着访问一下

[sims20@bcd-app01 bin]$ curl  http://10.248.12.159:80

It works!

成功了。


# apache  # http  # linux  # 普通用户  # 较低  # 试着  # 该用户  # 要在  # 才可以  # 解决问题  # 将以  # 看一下  # 报错 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel用户密码怎么加密_Laravel Hash门面使用教程  php 三元运算符实例详细介绍  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  香港服务器如何优化才能显著提升网站加载速度?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  php结合redis实现高并发下的抢购、秒杀功能的实例  如何在腾讯云免费申请建站?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  JavaScript实现Fly Bird小游戏  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  C++用Dijkstra(迪杰斯特拉)算法求最短路径  详解Android图表 MPAndroidChart折线图  网站制作报价单模板图片,小松挖机官方网站报价?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  linux top下的 minerd 木马清除方法  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  高防服务器如何保障网站安全无虞?  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何快速配置高效服务器建站软件?  深圳网站制作培训,深圳哪些招聘网站比较好?  Swift中swift中的switch 语句  Laravel如何实现API速率限制?(Rate Limiting教程)  EditPlus中的正则表达式实战(5)  Android中AutoCompleteTextView自动提示  如何用AI帮你把自己的生活经历写成一个有趣的故事?  怎样使用JSON进行数据交换_它有什么限制  phpredis提高消息队列的实时性方法(推荐)  如何确认建站备案号应放置的具体位置?  潮流网站制作头像软件下载,适合母子的网名有哪些?  ,南京靠谱的征婚网站?  浅述节点的创建及常见功能的实现  JavaScript如何实现倒计时_时间函数如何精确控制  Laravel如何生成URL和重定向?(路由助手函数)  无锡营销型网站制作公司,无锡网选车牌流程?  如何自定义建站之星模板颜色并下载新样式?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Android自定义listview布局实现上拉加载下拉刷新功能  Java解压缩zip - 解压缩多个文件或文件夹实例  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  香港服务器WordPress建站指南:SEO优化与高效部署策略  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  香港服务器租用每月最低只需15元?  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何在橙子建站中快速调整背景颜色?