apache搭建web服务后调用shell脚本,部分cmd指令无法执行,没有触发脚本命令执行

最近在centos7.2系统做一个自动化安装程序时,开机自启过程后,调用cmd命令,shell脚本等一系列操作发现没有办法执行,并且也不报错。苦恼了好久,导致程序无法执行,明明在django测试环境中程序一切正常,换到apache导致无法正常运作,开始锁定问题的来源是在apache上,于是深层次的研究了一下apache的工作原理。今天重点说一下解决问题的过程。

如果你是第一次使用apache,可能安装过后,没有调用cmd,shell的脚本需求,一切正常,所以可能没有进一步了解apache httpd的权限问题。

检测是否脚本,cmd命令都无法执行

程序中包含
打开一个文件夹 f = open(’/etc/sysconfig/network-scripts/ifcfg-’+devname, ‘r+’, encoding = ‘utf-8’)
执行django命令 v_return = os.system(‘sudo /usr/bin/python3 /var/www/WebGUI/www/manage.py migrate’)
检测网卡命令 result = os.popen(‘nmcli dev status’)
测试发现,并不是所有的命令无法实现,而是所有的只是读取操作都可以正常执行,写入操作,带有更高权限的操作就无法执行。于是锁定错误在于权限上。

于是我查看apache端口80

apache默认端口号为80

在这里插入图片描述
检测后发现user 用户这一块多了一个apache.这表示80的端口服务是被apache这个用户执行的。

自然想到apache执行权限一定小于root

于是我准备更换apache的配置文件使其以root用户权限去执行操作,/etc/httpd/conf/httpd.conf文件中换取了apache 换成root
在这里插入图片描述
这个位置为apache服务的操作用户,换成root后报错,错误我没来得及研究,不过也许是root用户不允许这样的操作,或许在2.4.88的这个版本中不允许这样的操作了,当然之后我有时间一定会去找到原因,后来我想新加入一个拥有root权限的用户用来执行apache服务

于是在CentOS 7 中添加新用户并授权

创建新用户 adduser [用户名]
设定密码 passwd [用户名]
将文件权限修改 chmod -v u+w /etc/sudoers
修改文件找到如下位置 vim /etc/sudoers
在这里插入图片描述
将apache配置如下
将文件修改回原来的权限 chmod -v u-w /etc/sudoers

这样一来apache这个用户就拥有了root权限
运行时出现错误日志有信息提示我脚本对应的目录下没有执行权限,于是我将该脚本chomd 755
这样再起apache服务的时候终于脚本可以正常运行了但是又出现新的问题,他跑不完就停止了,这次日志有发现,脚本命令没有权限执行,于是我将脚本全部加上sudo
在这里插入图片描述
于是脚本完全正常执行,到这一步完全OK,只为解决在过程中遇到的困难,不要害怕,理清思路对症下药,就可以很快的解决了。希望有用。一个不断成长的奋斗者!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端工匠之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值