如何删除以root身份作为参数传递的文件?

时间:2015-04-09 11:11:49

标签: linux bash unix

我想从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

2 个答案:

答案 0 :(得分:2)

虽然有可能setuid root有问题的bash脚本(如果你的操作系统发行版支持这个),这是一个非常糟糕的主意和可能的安全漏洞。

要删除的文件是否真的必须由root拥有?

答案 1 :(得分:1)

汤姆,这听起来像是在混淆Unix权限(上面提到的' 777'权利')。将脚本的文件权限设置为777意味着系统上的任何用户都可以打开并修改它 - 它意味着运行它的任何用户都能够以提升的权限执行任务。

设置文件所有权(在您的情况下,设置为root)的目的是限制谁可以读取,写入或执行该文件。在传统的Unix权限的符号中,有一个很好的解释,它是如何工作的。'在Wikipedia

不幸的是,迈克是对的,允许任何人编辑和运行一个以root身份执行操作的文件是一个非常糟糕的主意。如果您需要一个脚本来删除root拥有的文件,请确保只有root用户才能运行该脚本(将.sh文件的所有者设置为root,将chmod文件设置为744甚至700)并且把删除电话放在那里。

希望有所帮助。