2

我是我自己的网络服务器的根,我确实编写了一个 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!

4

3 回答 3

4

这不正是 Unix 小组想要解决的问题吗?将文件权限设置为0664,将目录权限设置为0775,并将文件和目录分配给 webserver 用户所属的组。

于 2012-05-02T17:06:28.367 回答
1

不要忽视安全。使用sudo

于 2012-05-02T17:15:57.813 回答
0

我维护一个带有 html 页面和 Java 脚本的 Perl 网站。所有程序文件均受根所有权保护。

即使您通过网站上的用户名和密码限制对该程序的访问,root 也应该拥有该程序chown root:root <full-path-to-your-program-name>,并且该程序文件应该受到保护chmod 755 <full-path-to-your-program-name>

于 2012-05-02T21:40:19.973 回答