2009-10-21 9 views
15

मैं पहली बार सीजीआई-स्क्रिप्ट को आजमा रहा हूं लेकिन सफलता के बिना। मैंने कई ट्यूटोरियल पढ़े हैं और विभिन्न मंचों में धागे का पालन किया है लेकिन मैं इसे काम नहीं कर सकता। मैं फेडोरा 10 मशीन पर एक ऐपैच वेब सर्वर का उपयोग कर रहा हूं। मैं हमेशा(13) अनुमति अस्वीकार कर दी गई: /cgi-bin/test.cgi तक पहुंच

[Wed Oct 21 20:47:36 2009] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0 
[Wed Oct 21 20:47:36 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Wed Oct 21 20:47:36 2009] [notice] Digest: generating secret for digest authentication ... 
[Wed Oct 21 20:47:36 2009] [notice] Digest: done 
[Wed Oct 21 20:47:36 2009] [notice] Apache/2.2.11 (Unix) DAV/2 PHP/5.2.9 mod_ssl/2.2.11 OpenSSL/0.9.8g configured -- resuming normal operations 

साथ समस्या है मैं मदद की जरूरत है। यह मेरा पर्यावरण जैसा दिखता है।

[Wed Oct 21 21:00:27 2009] [error] [client 192.168.50.69] (13)Permission denied: access to /cgi-bin/test.cgi denied 

मैं लाइन जोड़ लिया है:

uname -a 
Linux localhost.localdomain 2.6.27.5-117.fc10.i686 #1 SMP Tue Nov 18 12:19:59 EST 2008 i686 i686 i386 GNU/Linux 

ls -l /var/www/cgi-bin/ 
total 36 
-rwxrwxrwx 1 root root 106 2009-10-21 18:29 index.html 
-rwxr-xr-x 1 root root 11089 2009-02-24 20:11 squidGuard.cgi 
-rwxr-xr-x 1 root root 5720 2009-02-24 20:11 squidGuard-simple.cgi 
-rwxr-xr-x 1 root root 5945 2009-02-24 20:11 squidGuard-simple-de.cgi 
-rwxrwxrwx 1 root root 110 2009-10-21 17:38 test.cgi 

apachectl -v 
Server version: Apache/2.2.11 (Unix) 
Server built: Mar 6 2009 09:12:25 

perl -version 
This is perl, v5.10.0 built for i386-linux-thread-multi 
Copyright 1987-2007, Larry Wall 

मेरे स्क्रिप्ट

cat test.cgi 
#!/usr/bin/perl 
print "Content-Type: text/html\n\n"; 
print "Hello, world!\n"; 

त्रुटि संदेश मैं जनरल जब मैं वेब पेज सर्वर "http://192.168.50.29/cgi-bin/test.cgi" तक पहुँचने का प्रयास इस तरह दिखता है:

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 

से /etc/httpd/conf/httpd.conf

मैं इसे अभी काम नहीं कर सकता। क्या कोई मेरी मदद कर सकता है?

+0

त्रुटि संदेश मैं जनरल जब मैं वेब पेज सर्वर "http://192.168.50.29/test तक पहुँचने का प्रयास।सीजीआई "इस तरह दिखता है: [बुध अक्टूबर 21 22:31:32 200 9] [त्रुटि] [ग्राहक 192.168.50.69] (13) अनुमति अस्वीकार: '/var/www/html/test.cgi' का निष्पादन विफल [बुध अक्टूबर 21 22:31:32 200 9] [त्रुटि] [क्लाइंट 192.168.50.6 9] स्क्रिप्ट हेडर का समयपूर्व अंत: test.cgi –

+1

क्यों, ओह क्यों, रूट उन फ़ाइलों का मालिक क्यों है? –

+0

पता लगाएं कि कौन सा उपयोगकर्ता/समूह अपाचे सर्वर प्रक्रिया का मालिक है और सुनिश्चित करें कि यह आपकी सीजीआई स्क्रिप्ट का मालिक है और उसके पास निष्पादन अनुमति है। – heferav

उत्तर

11

test.cgi के लिए अपनी ओएस अनुमतियों की जांच करें और सुनिश्चित करें कि आप जिस उपयोगकर्ता या समूह का उपयोग कर रहे हैं, वह आपके अपाचे को चलाने के लिए उपयोग कर रहा है।

संपादित करें - समस्या अनुमतियों के साथ है, लेकिन पढ़ने की अनुमतियों के साथ नहीं, जैसा कि आप SELinux का उपयोग कर रहे हैं, आपको अपने फ़ाइल संदर्भ के बारे में चिंता करने की आवश्यकता है। फेडोरा मंचों पर यह thread देखें, यह आपकी समस्या का समाधान करने के लिए कुछ विकल्प बताता है।

+0

प्रश्न के अनुसार test.cgi में 777 अनुमतियां हैं - यानी उपयोगकर्ता, समूह और अन्य के लिए पढ़ना, लिखना, निष्पादित करना - इसलिए सभी उपयोगकर्ता कुछ भी कर सकते हैं –

+0

सच है, मैंने अपने पहले पढ़ने में अनफॉर्टेड कोड के साथ उस बिट को याद किया। – pedromarce

5

पहले HTTPD.CONF FILE सेट करें। स्क्रिप्ट निर्देशिका को httpd.conf में निम्नानुसार सेट करें।
यहां आपको यह सुनिश्चित करना होगा कि आपको सही httpd.conf फ़ाइल मिल जाए। उदाहरण के लिए, मेरे डेबियन में, डिफ़ॉल्ट httpd.conf/etc/apache2/sites-avaialbe/default है।

 
<Directory "dir_name"> 
    Options All 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
<Directory> 

या तुम सिर्फ डिफ़ॉल्ट/cgi-bin फ़ोल्डर इस्तेमाल कर सकते हैं।

.Set परीक्षण स्क्रिप्ट के लिए अनुमति निष्पादित।

 
chmod +x script_name 
+1

फेसपाल्म, मेरे मामले में निष्पादन अनुमति – elhombre

4

आपका fstab जाँच लें कि घुड़सवार फाइल सिस्टम पर अमल करने की अनुमति

UUID=xxx-xxx-xxx-xx-xx  /mnt/mountpoint  ext4  rw,user,exec  0  0 

कार्यकारी हिस्सा महत्वपूर्ण है

4

SELinux मेरे मामले में cgi स्क्रिप्ट तक पहुँचने से अपाचे को रोका। एक त्वरित-एन-गंदा ठीक है कि मेरे लिए काम किया बंद SELinux मोड़ था:

vim /etc/sysconfig/selinux 
set "SELINUX=disabled" 
reboot 
+1

ठीक है, अब आपको समस्या है कि आप वाई नहीं चल रहे हैं वें SELinux;) मुझे लगता है कि आपके मामले में आपने एक अन्य स्थान पर एक सीजीआई-बिन निर्देशिका बनाई है जिसका अर्थ है कि आपको 'semange fcontext -a -t httpd_sys_script_exec_t "आदेश का उपयोग करके नीति सूची में एक नया फ़ाइल संदर्भ जोड़ना होगा। फ़ाइलों को नई फ़ाइल संदर्भ लागू करने के लिए पथ/से/निर्देशिका (/.*)? "'और फिर' restorecon -Rv/path/to/directory '। मैन सेमनेज-फॉनटेक्स्ट देखें और उदाहरण अनुभाग पर जाएं, इस प्रक्रिया का एक शानदार उदाहरण है। – elhombre

संबंधित मुद्दे