我是我自己的网络服务器的根,我确实编写了一个perl脚本来维护我的网站。从浏览器调用此脚本显示用于维护的用户界面。为了能够从我的浏览器启动这个脚本,我必须输入用户名和密码,所以除了我之外没人能运行这个脚本。
我希望当我点击相应按钮时,此脚本会重命名服务器上的某些文件。从perl脚本我调用shell命令`mv oldFilename newFilename`
,但没有任何反应。 Apache的错误日志显示以下消息:
[ timestring ] [error] [client nnnn ] mv:无法将 oldFilename 移动到 newFilename :权限否认,引用者:推荐人
filename 的所有者是root,权限设置为0644(每个人都可以读取,只有root可以写)
这个问题的最佳解决方案是什么?有没有比将文件权限更改为0666更好的方法?我想避免更改权限。我会优先考虑一个解决方案,其中perl-script对shell说:“亲爱的shell,这是root的密码。现在请将文件X重命名为Y!”
答案 0 :(得分:4)
这不是Unix组要解决的确切问题吗?将文件权限设置为0664
,将目录权限设置为0775
,并将文件和目录分配给Web服务器用户所属的组。
答案 1 :(得分:1)
不要忽视安全性。使用sudo。
答案 2 :(得分:0)
我维护一个包含html页面和Java脚本的Perl网站。所有程序文件都受root权限保护。
即使您通过网站上的用户名和密码限制对此程序的访问,root也应该拥有程序chown root:root <full-path-to-your-program-name>
,程序文件应该受到保护chmod 755 <full-path-to-your-program-name>
。