我是我自己的网络服务器的根,我确实编写了一个 perl 脚本来维护我的网站。从浏览器调用此脚本显示用于维护的用户界面。为了能够从我的浏览器启动这个脚本,我必须输入用户名和密码,所以除了我之外没有人可以运行这个脚本。
当我点击相应的按钮时,我希望这个脚本重命名服务器上的一些文件。从 perl-script 我调用 shell-command `mv oldFilename newFilename`
,但没有任何反应。Apache 的错误日志显示以下消息:
[ timestring ] [error] [client nnnn ] mv: cannot move oldFilename to newFilename : Permission denied, referer: referrer
filename的所有者是 root,权限设置为 0644(每个人都可以读取,只有 root 可以写入)
这个问题的最佳解决方案是什么?有没有比将文件权限更改为 0666 更好的方法?我想避免更改权限。我更喜欢一种解决方案,其中 perl 脚本对 shell 说:“亲爱的 shell,这是 root 的密码。现在请将文件 X 重命名为 Y! ”