由于以前在虚拟机中每次都是以root用户身份登录和进行操作,所以基本都没有用到sudo,但是最近项目需要要进行这么个事: 通过 浏览器访问php网页,php网页里会调用 执行 linux下的一个 脚本 。本来这个事很简单的,但是我在实际操作的时候,发现每次 通过 浏
由于以前在虚拟机中每次都是以root用户身份登录和进行操作,所以基本都没有用到sudo,但是最近项目需要要进行这么个事:通过浏览器访问php网页,php网页里会调用执行linux下的一个脚本。本来这个事很简单的,但是我在实际操作的时候,发现每次通过浏览器访问时,脚本都没有被执行,而我在终端里面通过命令行执行php网页确又是没有任何问题的,当时就觉得很差异,后来仔细想了想,通过浏览器访问和直接在终端里执行其发起者不一样,想想应该是用户权限的问题,于是就上网查了查,结果就有了sudo这么回事。好了,说了一堆废话,下面来介绍下怎么用sudo解决上面的权限问题。
1.sudo介绍
sudo允许root分配给普通用户一些不具备的权利,让普通用户也可以具有root用户的相关权限(比如说sudo可以分配给某一用户某些特定的命令执行权限)。
其中sudo一个重要的文件就是/etc/sudoers,哪些用户具有什么样的命令可以执行都是靠这个文件的,主要只有里面分配了的用户才能使用sudo。
sudo -l 列出该用户能<strong>执行</strong>的命令 sudo -u user 以指定用户来<strong>执行</strong>命令 sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码 sudo -b 在后台<strong>执行</strong>命令在终端里面输入visudo即可打开/etc/sudoers文件。
找到如图所示的地方

图中红色方框的内容是我自己后来加的,其中daemon是php运行的用户,不同的环境下默认名字会不一样,我在fedora 9下的为daemon而在unbuntu中则不是这个名。
查看php运行的用户可以通过下面这个php网页获取。
<?php echo shell_exec("id -a"); ?>
看图中每行都有三个ALL,第一个ALL代表网络中的主机,第二个括号里面的ALL代表目标用户,表示以谁的身份去执行命令,最后一个ALL代表的是可执行的命令名(可以指定你想要该用户能够执行的命令)。
其中NOPASSWD表示不用输入密码。(为了方便嘛,不然我通过浏览器访问难道程序里面多了道填写密码,还要等反馈,真是麻烦,这样就省事多了)
若是Ubuntu则不用再修改了,若是fedora 等则还需要进行一些修改,
Defaults env_reset打开就可以了(即前面的#号去掉)
2.检查php.ini配置文件中是否打开了安全模式
safe_mode = off 这样就可以了
php执行linux脚本的函数有多个,shell_exec()、system()等,这里也不多做介绍了,用就行了,我采用system()函数。
route.php
<?php $ip=(string)$_POST["ip"]; system("sudo ./route.sh $ip",$status); if($status == 'true') { echo "设置成功"; } else { echo "设置失败"; } ?>
前面设置妥当后,执行后,浏览器会显示设置成功,说明脚本成功执行。
上面是网上找的其他人写的文章,我原封不动的拿来了,发现了一些个人认为不妥当的地方。
1.php执行shell实际是用的Apache或Nginx的用户去执行的,php本身不创建用户。
2.涉及到php代码中的路径问题,上面代码是不规范的,具体看我的另一篇文章

在Windows10上安装OracleLinux8或7.5的步骤|11WSL1.启用WSL–Windows子系统Linux我们需要拥有的第一件事是WSL,如果尚未启用它,请启用它。转到搜索框并输入–打开或关闭Windows功能。在选项出现时,单击以打开相同。在打开的窗口中,向下滚动并选择为Linux的Windows子系统提供的框。然后单击确定按钮。之后重新启动系统以应用更改。2.在Windows11或10上下载OracleLinx8或

通过sudo命令,用户可以在提升权限模式下运行命令,而无需切换到超级用户模式。本文将介绍如何在Windows系统中模拟类似于sudo命令的功能。什么是数道司令部?Sudo(“超级用户do”的缩写)是一种命令行工具,允许基于Unix的操作系统(如Linux和MacOS)的用户以提升的权限执行命令,这些权限通常是管理员所拥有的。在Windows11/10中运行SUDO命令然而,随着最新发布的Windows11Insider预览版推出,Windows用户现在也可以体验到这一项功能。这一新功能使用户能够

Golang(Go编程语言)是一种基于C语言的编程语言,被广泛用于Web开发、网络编程、操作系统等领域。然而,在编写Golang程序时经常会遇到一个常见的问题,就是“undeclaredname”(未声明名称)错误。下面将介绍如何解决这个问题。了解错误信息在编译和运行Golang程序时,如果遇到了未声明名称错误,会在控制台输出相应的错误信

在Windows11或10上安装Adminer的步骤在Windows11和10操作系统上都可以按照这些步骤安装Adminer来管理不同的数据库系统。1.在Windows上启用WSL如果您已经启用了WSL,则转到下一步,否则转到Windows开始菜单并键入“打开或关闭Windows功能”,并在其图标出现时将其打开。向下滚动到WindowsSubsystemforLinux,选择它,然后点击OK按钮。WSL安装完成后,会出现一个对话框要求您重新启动系统。2

linux sudo密码是随机的,即每次开机都有一个新的root密码,其设置新密码的方法是:1、在终端输入命令“sudo passwd”,然后输入当前用户的密码,按下“Enter”键;2、重新在终端输入新的密码并确认即可。

sudo(超级用户执行)是Linux和Unix系统中的一个关键命令,允许普通用户以root权限运行特定命令。sudo的功能主要体现在以下几个方面:提供权限控制:sudo通过授权用户以临时方式获取超级用户权限,从而实现了对系统资源和敏感操作的严格控制。普通用户只能在需要时通过sudo获得临时的特权,而不需要一直以超级用户身份登录。提升安全性:通过使用sudo,可以避免在常规操作中使用root账户。使用root账户进行所有操作可能会导致意外的系统损坏,因为任何错误或不小心的操作都将具有完全的权限。而

在AlpineLinux上,你可以使用iptables工具来配置和管理防火墙规则。以下是在AlpineLinux上启用或禁用防火墙的基本步骤:检查防火墙状态:sudoiptables-L如果输出结果中显示有规则(例如,有一些INPUT、OUTPUT或FORWARD规则),则表示防火墙已启用。如果输出结果为空,则表示防火墙当前处于禁用状态。启用防火墙:sudoiptables-PINPUTACCEPTsudoiptables-POUTPUTACCEPTsudoiptables-PFORWARDAC

在Debian11服务器上安装SSH并创建新用户允许SSH远程登录的步骤如下:步骤1:安装SSH为了安装SSH服务器,您需要以root用户或具有sudo特权的用户身份登录到您的Debian11服务器。在终端中执行以下命令来安装SSH服务器:sudoaptupdatesudoaptinstallopenssh-server步骤2:创建新用户要创建一个新用户,您可以使用adduser命令。将下面的命令替换为您想要的用户名:sudoaddusernew_username系统会提示您设置新用户的密码和其


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)