- 相关推荐
php通过sudo执行root指令
PHP是一种很强大的语言,那么下面就一起来看他在指令方面的应用吧!下面是百分网小编精心为大家整理的php通过sudo执行root指令,希望对大家学习有帮助,更多内容请关注应届毕业生网!
1.高级的用法如限制主机、用户组、命令组的用法可以参照下面的规则,详细可参看"man sudoers": Host alias specification : Host_Alias <主机组名>=<主机名1>,<主机名2> User alias specification : User_Alias <用户组名>=<用户名1>,<用户名2> Cmnd alias specification : Cmnd_Alias <命令集名>=<命令1>,<命令2> User privilege specification : <用户名> <主机组名>=([sudo目的角色])[NOPASSWD:]<命令1>,<命令2> : ([sudo目的角色])[NOPASSWD:]<命令1>,<命令2> sudo的默认目的角色为root;没有配置"NOPASSWD"参数,则默认5分钟后再次用sudo需要重新验证身份(即输入密码)。 sudo的使用,常用参数解释:
-b 在后台执行指令。 -H 将HOME环境变量设为新身份的HOME环境变量。 -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。
-l 列出目前用户可执行与无法执行的指令。 -p 改变询问密码的提示符号。 -s 执行指定的shell。 -u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。 -v 延长密码有效期限5分钟。备注 : 1.使用sudo时,虽然是以目的用户(如root)的身份执行命令,但是环境变量并没有变成目的用户的,所以执行命令是要给出绝对路径,如普通用户需要输入"sudo /sbin/ifconfig"后才能执行root的ifconfig命令。
2.要记录日志需要在/etc/sudoers添加"Defaults logfile=/var/log/sudo.log"php通过sudo执行root指令 例如 apache使用nobody用户运行,现在需要通过php来重启apache 首先编辑 /etc/sudoers 使用 visudo来编辑 #visudo 在最下面添加一行 nobody ALL=NOPASSWD:/usr/local/apache/bin/apachectl restart 然后注释掉文件中的Defaults requiretty这行 否则会出现sudo: sorry, you must have a tty to run sudo的错误 保存退出即可 测试 写一个php文件,内容如下 sudo使用 sudo的作用在man中概括为"execute a command as another user",即以另外一个用户的身份来执行一条命令。 之所以想到这条命令是因为前段时间公司服务器上的文件莫名全部消失而导致的系统重装,追根朔源,系统的安全措施不够到位。 1. 登陆到机器上的用户为使用方便,全部使用root用户 2.root密码过于简单,并且没有做相应的定期更换 3.通过telnet登陆的用户大部分为同一个用户,造成系统记录多是以该用户名记录的,虽然可以通过IP地址查证本人,但是IP的伪装确是再容易不过的事 为解决第一和第三个问题,可以实行“实名制”,即为每个用户分配一个用户名,所有用户对系统的使用必须通过自己的用户名来完成。 那么一些必须由root用户才能进行的操作就以sudo的方式来执行,因为对sudo的使用是有记录可查的,那么大部分用户的行为也就是可以记录的了。
sudo可以为每一个用户单独授权,授权(也就是用户可以执行的命令)是命令的条数为单位的。 sudo的配置在/etc/sudoers文件中完成,使用专用的"visudo"命令来编辑(visudo保证用户能够安全的编辑/etc/sudoers文件,如语法检查、并行编辑等)。 最简单的/etc/sdoers文件如下: # sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the sudoers man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # User privilege specification root ALL=(ALL) ALL gongam ALL=NOPASSWD:/sbin/ifconfig #gongam
ALL=/sbin/ifconfig # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now 仅在原始文件上添加了红色的两行,以#开头的行为注释行。 "gongam ALL=NOPASSWD:/sbin/ifconfig"的意思是允许gongam这个用户在任何主机登陆使用"sudo /sbin/ifconfig"命令并且不需要输入密码。 仿照这个文件我们就可以为特定用户赋予特定
【php通过sudo执行root指令】相关文章:
php执行sql语句的写法05-16
PHP怎么执行Linux系统命令函数08-10
php通过Chianz.com获取IP地址与地区的方法08-12
PHP下通过exec获得计算机的唯一标识10-03
关于php操作mysql执行数据库查询08-11
linux系统下sudo命令使用方法09-22
php与php MySQL之间的关系10-03
什么是PHP PHP与ASP比较09-18