由于以前在虚拟机中每次都是以root用户身份登录和进行操作,所以基本都没有用到sudo,但是最近项目需要要进行这么个事:通过浏览器访问PHP网页,php网页里会调用执行linux下的一个脚本。本来这个事很简单的,但是我在实际操作的时候,发现每次通过浏览器访问时,脚本都没有被执行,而我在终端里面通过命令行执行php网页确又是没有任何问题的,当时就觉得很差异,后来仔细想了想,通过浏览器访问和直接在终端里执行其发起者不一样,想想应该是用户权限的问题,于是就上网查了查,结果就有了sudo这么回事。好了,说了一堆废话,下面来介绍下怎么用sudo解决上面的权限问题。
1.sudo介绍
sudo允许root分配给普通用户一些不具备的权利,让普通用户也可以具有root用户的相关权限(比如说sudo可以分配给某一用户某些特定的命令执行权限)。
其中sudo一个重要的文件就是/etc/sudoers,哪些用户具有什么样的命令可以执行都是靠这个文件的,主要只有里面分配了的用户才能使用sudo。
- sudo -l 列出该用户能执行的命令
- sudo -u user 以指定用户来执行命令
- sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码
- sudo -b 在后台执行命令
在终端里面输入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
- $ip=(string)$_POST["ip"];
- system("sudo ./route.sh $ip",$status);
- if($status == 'true')
- {
- echo "设置成功";
- }
- else
- {
- echo "设置失败";
- }
- ?>
前面设置妥当后,执行后,浏览器会显示设置成功,说明脚本成功执行。
相关推荐
linux bash shell脚本文件.sh,自动输入sudo的密码 在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码
远程批量修改linux服务器密码的脚本归类.pdf
[Linux] 通过注入拥有sudo令牌的进程进行权限提升
sudo.pdf
Linux下获取root权限的c程序 传递euid和egid给脚本,使脚本具有特殊用户的权限 使脚本实现类于设置了stick位的效果 shell, python, perl等脚本、程序不能取得suid,因为这些脚本程序需要解释器-/bin/bash, /usr/bin/...
业务背景: yourcmd为我的linux程序,它对权限要求非常严格,当用php去执行yourcmd程序 系统:CentOS 6.3 apache是php的执行用户 用exec函数去执行linux系统上的程序/usr/local/yourcmd/sbin/yourcmd php代码如下: ...
linux不能使用sudo命令解决方案,username is not in the sudoers file
SUDO - 通过叫喊来执行bash命令
主要介绍了如何在Linux环境为用户添加sudo权限,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
termux-sudo, 为Termux提供sudo的bash脚本 termux为Termux提供sudo的bash脚本Termux是面向Android的终端 模拟器 和Linux环境需求带su二进制的根SUDO无法在没有ldap的情况下工作安装英镑下载sudo到电话并提取打开 ...
介绍了权限管理中的 sudo权限,并附有截图演示。
下面小编就为大家带来一篇Linux用户配置sudo权限(visudo)的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
能学到什么:设置普通用户执行sudo的权限,使其只能执行指定的命令。 用户使用su命令切换root。但是权限太大,而且root密码有泄露风险。那么能否在不泄露root密码的前提下对权限进行限制呢?答案就是用sudo。 sudo...
最近同事问了一个关于Python脚本自启动与定时任务的问题,发现很多的朋友对这块都不是特别的熟悉,所以本文主要给大家介绍的是关于Linux下Python脚本自启动与定时任务的相关内容,分享出来供大家参考学习,话不多说...
sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等
sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。sudo不是对...
“Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,或者编辑一些系统配置文件。这样以来,就不仅减少...
08.1.1 权限管理-ACL权限-简介与开启.mp4 08.1.2 权限管理-ACL权限-查看与设定.mp4 08.1.3 权限管理-ACL权限-最大有效权限与删除.mp4 08.1.4 权限管理-ACL权限-默认与递归ACL权限.mp4 ...08.4 权限管理-sudo权限.mp4
sudo 与 su 两个命令的最大区别是:sudo ...另外一个区别是其默认行为。sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。