我想从PHP运行一个bash脚本,它以root身份删除给定的文件。 PHP脚本:
passthru('./deleter.sh "hello.gif" 2>&1');
我的bash脚本(deleter.sh)是:
rm "$1"
它拥有权限= 777并且所有者设置为root。但是当由PHP脚本运行时,它不会删除任何内容,只是说:
rm: can't remove 'hello.gif': Permission denied
答案 0 :(得分:2)
虽然有可能setuid root
有问题的bash脚本(如果你的操作系统发行版支持这个),这是一个非常糟糕的主意和可能的安全漏洞。
要删除的文件是否真的必须由root拥有?
答案 1 :(得分:1)
设置文件所有权(在您的情况下,设置为root)的目的是限制谁可以读取,写入或执行该文件。在传统的Unix权限的符号中,有一个很好的解释,它是如何工作的。'在Wikipedia
不幸的是,迈克是对的,允许任何人编辑和运行一个以root身份执行操作的文件是一个非常糟糕的主意。如果您需要一个脚本来删除root拥有的文件,请确保只有root用户才能运行该脚本(将.sh文件的所有者设置为root,将chmod文件设置为744甚至700)并且把删除电话放在那里。
希望有所帮助。