我尝试使用CentOS 7,Apache 2.4和Ruby 2.0创建一个简单的CGI脚本。所有工具都是从官方软件包安装的。
我的脚本位于/var/www/cgi-bin/test.cgi
:
#!/usr/bin/ruby
puts "Content-Type: text/plain\n\n"
begin
file = File.open("test.log", "a")
file.puts("foobar")
file.close
rescue Exception
puts "pwd: #{`pwd`}"
puts $!.inspect
end
当我加载http://myhost/cgi-bin/test.cgi
时,我得到以下内容:
pwd: /var/www/cgi-bin
#<Errno::EACCES: Permission denied - test.log>
然而:
[root@host cgi-bin]# ls -l /var/www/cgi-bin
total 8
-rwxr-xr-x. 1 root root 153 Jul 10 22:03 env.cgi
-rwxr-xr-x. 1 root root 359 Jul 11 00:45 test.cgi
-rw-rw-rw-. 1 root root 0 Jul 11 00:42 test.log
如果不是脚本自己的工作目录中的世界可写文件,我可以如何(以及在何处)从这个cgi脚本中写入数据?
答案 0 :(得分:2)
SELinux阻止了文件写入。 &#34; setenforce Permissive&#34;允许他们通过。编辑/ etc / sysconfig / selinux并重新启动以使其永久化。