1. sudo介绍
sudo允许root分配给普通用户一些不具备的权利,让普通用户也可以具有root用户的相关权限(比如说sudo可以分配给某一用户某些特定的命令执行权限)。
其中sudo一个重要的文件就是/etc/sudoers,哪些用户具有什么样的命令可以执行都是靠这个文件的,主要只有里面分配了的用户才能使用sudo。
sudo -l 列出该用户能执行的命令 sudo -u user 以指定用户来执行命令 sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码 sudo -b 在后台执行命令
在终端里面输入 vim 即可打开/etc/sudoers文件。
找到如图所示的地方:
图中红色方框的内容是我自己后来加的,其中www是php运行的用户,不同的环境下默认名字会不一样,我在 centos 下的为www。
查看php运行的用户可以通过下面这个php网页获取。
<?php echo shell_exec("id -a"); ?>
看图中每行都有三个ALL,第一个ALL代表网络中的主机,第二个括号里面的ALL代表目标用户,表示以谁的身份去执行命令,最后一个ALL代表的是可执行的命令名(可以指定你想要该用户能够执行的命令)。
其中NOPASSWD表示不用输入密码。(为了方便嘛,不然我通过浏览器访问难道程序里面多了道填写密码,还要等反馈,真是麻烦,这样就省事多了)
若是Ubuntu则不用再修改了,若是fedora 等则还需要进行一些修改,
Defaults env_reset打开就可以了(即前面的#号去掉);
检查php.ini配置文件中是否打开了安全模式
safe_mode = off 这样就可以了
php执行linux脚本的函数有多个,shell_exec()、system()等,这里也不多做介绍了,用就行了,我采用system()函数。
route.php
<?php $ip=(string)$_POST["ip"]; system("su ./route.sh $ip",$status); if($status == 'true') { echo "设置成功"; } else { echo "设置失败"; } ?>
前面设置妥当后,执行后,浏览器会显示设置成功,说明脚本成功执行。
1.php执行shell实际是用的Apache或Nginx的用户去执行的,php本身不创建用户。
2.由转载
由于以前在ECS中每次都是以root用户身份登录和进行操作,所以基本都没有用到sudo,但是最近项目需要要进行这么个事:通过浏览器访问php网页,php网页里会调用执行linux下的一个脚本。本来这个事很简单的,但是我在实际操作的时候,发现每次通过浏览器访问时,脚本都没有被执行,而我在终端里面通过命令行执行php网页确又是没有任何问题的,当时就觉得很差异,后来仔细想了想,通过浏览器访问和直接在终端里执行其发起者不一样,想想应该是用户权限的问题,于是就上网查了查,结果就有了sudo这么回事。
1. sudo介绍
sudo允许root分配给普通用户一些不具备的权利,让普通用户也可以具有root用户的相关权限(比如说sudo可以分配给某一用户某些特定的命令执行权限)。
其中sudo一个重要的文件就是/etc/sudoers,哪些用户具有什么样的命令可以执行都是靠这个文件的,主要只有里面分配了的用户才能使用sudo。
sudo -l 列出该用户能执行的命令 sudo -u user 以指定用户来执行命令 sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码 sudo -b 在后台执行命令
在终端里面输入 vim 即可打开/etc/sudoers文件。
找到如图所示的地方:
图中红色方框的内容是我自己后来加的,其中www是php运行的用户,不同的环境下默认名字会不一样,我在 centos 下的为www。
查看php运行的用户可以通过下面这个php网页获取。
<?php echo shell_exec("id -a"); ?>
看图中每行都有三个ALL,第一个ALL代表网络中的主机,第二个括号里面的ALL代表目标用户,表示以谁的身份去执行命令,最后一个ALL代表的是可执行的命令名(可以指定你想要该用户能够执行的命令)。
其中NOPASSWD表示不用输入密码。(为了方便嘛,不然我通过浏览器访问难道程序里面多了道填写密码,还要等反馈,真是麻烦,这样就省事多了)
若是Ubuntu则不用再修改了,若是fedora 等则还需要进行一些修改,
Defaults env_reset打开就可以了(即前面的#号去掉);
检查php.ini配置文件中是否打开了安全模式
safe_mode = off 这样就可以了
php执行linux脚本的函数有多个,shell_exec()、system()等,这里也不多做介绍了,用就行了,我采用system()函数。
route.php
<?php $ip=(string)$_POST["ip"]; system("su ./route.sh $ip",$status); if($status == 'true') { echo "设置成功"; } else { echo "设置失败"; } ?>
前面设置妥当后,执行后,浏览器会显示设置成功,说明脚本成功执行。
php执行shell实际是用的Apache或Nginx的用户去执行的,php本身不创建用户。
相关推荐:
以上是php关于shell脚本权限问题分析的详细内容。更多信息请关注PHP中文网其他相关文章!

<p>定制您的操作系统是让您的日常生活更加愉快的绝佳方式。您可以更改用户界面、应用自定义主题、添加小部件等等。因此,我们今天将向您展示如何在Windows11上安装ClassicShell。</p><p>该程序已经存在了很长时间,并允许您修改操作系统。志愿者现在已经开始运营该组织,该组织于2017年解散。新项目名为OpenShell,目前在Github上可供感兴趣的人使用。</p>&a
![Explorer.exe 在系统启动时不启动 [修复]](https://img.php.cn/upload/article/000/887/227/168575230155539.png)
如今,许多Windows用户开始遇到严重的Windows系统问题。问题是系统加载后Explorer.exe无法启动,用户无法打开文件或文件夹。虽然,Windows用户在某些情况下可以使用命令提示符手动打开Windows资源管理器,并且每次系统重新启动或系统启动后都必须这样做。这可能是有问题的,并且是由于下面提到的以下因素造成的。损坏的系统文件。启用快速启动设置。过时或有问题的显示驱动程序。对系统中的某些服务进行了更改。修改后的注册表文件。请记住以上所有因素,我们提出了一些肯定会对用户有所帮助

您在运行脚本时是否看到此错误消息“Add-AppxPackage:部署失败,HRESULT:0x80073D02,无法安装该包,因为它修改的资源当前正在使用中。PowerShell中出现错误0x80073D02…”?如错误消息所述,当用户在前一个进程运行时尝试重新注册一个或所有WindowsShellExperienceHost应用程序时,确实会发生这种情况。我们已经获得了一些简单的解决方案来快速解决这个问题。修复1–终止体验主机进程您必须在执行powershell命令之前结束

Linux系统下在处理文件时,有时候需要删除文件末尾的行。这种操作在实际应用中很常见,可以通过一些简单的命令来实现。本文将介绍在Linux系统中快速删除文件末尾行的操作步骤,同时提供具体的代码示例。步骤一:查看文件末尾行在进行删除操作之前,首先需要确认文件的末尾行是哪一行。可以使用tail命令来查看文件的末尾行,具体命令如下:tail-n1filena

适用于 Linux 的 Windows 子系统第一种选择是使用适用于 Linux 或 WSL 的 Windows 子系统,这是一个兼容层,用于在 Windows 系统上本地运行 Linux 二进制可执行文件。它适用于大多数场景,允许您在 Windows 11/10 中运行 shell 脚本。WSL 不会自动可用,因此您必须通过 Windows 设备的开发人员设置启用它。您可以通过转到设置 > 更新和安全 > 对于开发人员来完成。切换到开发人员模式并通过选择是确认提示。接下来,查找 W

无法在Windows 11上运行的 Open shell 并不是一个新问题,并且自从这个新操作系统问世以来一直困扰着用户。Open-Shell Windows 11 不工作问题的原因并不具体。它可能是由程序中的意外错误、病毒或恶意软件的存在或损坏的系统文件引起的。对于那些不知道的人,Open-Shell 是 2017 年停产的 Classic Shell 的替代品。您可以查看我们的教程,了解如何在 Windows 11 上安装 Classic Shell。如何替换 Windows 11 的开始菜

Python 脚本部分实例:企业微信告警、FTP 客户端、SSH 客户端、Saltstack 客户端、vCenter 客户端、获取域名 ssl 证书过期时间、发送今天的天气预报以及未来的天气趋势图;Shell 脚本部分实例:SVN 完整备份、Zabbix 监控用户密码过期、构建本地 YUM 以及上篇文章中有读者的需求(负载高时,查出占用比较高的进程脚本并存储或推送通知);篇幅有些长,还请大家耐心翻到文末,毕竟有彩蛋。Python 脚本部分企业微信告警此脚本通过企业微信应用,进行微信告警,可用于

OpenShell是一个免费的软件实用程序,可用于自定义Windows11开始菜单,使其类似于经典风格的菜单或Windows7样式的菜单。以前版本的Windows上的开始菜单为用户提供了一种浏览其系统内容的简单方法。基本上,OpenShell是ClassicShell的替代品,它提供了不同的用户界面元素,有助于从以前的Windows版本获取后一个版本的功能。一旦ClassicShell的开发在2017年停止,它就由GitHub志愿者以OpenShell的名义维护和开发。它与Win


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境