• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
permessi cartella cgi bin

Permessi cartella CGI-BIN
#1
Ciao,
eccomi di nuovo qua con un nuovo quesito.
Non sono nessun esperto di apache e permessi quindi chiedo se qualcuno
può aiutarmi a capire meglio come risolvere quello che cerco di fare.

Qui cerco di sintetizzare quello che sono riuscito a mettere insieme.

Ho installato sul raspberry apache e php.
Ho abilitato modulo cgi-bin

All’interno della cartella /usr/lib/cgi-bin
ho inserito un file python che se lo eseguo da linea
di comando nel terminale
Codice:
python nomefile.py
viene seguito correttamente.

Nella stessa cartella ho inserito un file che si chiama
nomefile.txt che mi serve per salvare un dato che scrivo con python.
Ci ho scritto semplicemente ciao al suo interno.

Ora se vado nel web server e digito
Codice:
ipadress/cgi-bin/nomefile.txt

Ricevo un errore internal server error 
Guardo nel log di apache e leggo al fondo di tutto che i permessi non sono corretti.

Questi sono i permessi della cartella cgi-bin
Codice:
drwxr-xr-x  4 root root    4096 mar 30 19:10 cgi-bin

Questi sono i permessi dei due file nella cartella cgi-bin.

Codice:
-rwxr-xr-x  1 root root  654 mar 30 19:10 nome.py

-rwxr-xr-x  1 root root  843 mar 30 16:43 nome.txt

Questo quello che ho in questa configurazione di apache

Codice:
/etc/apache2/sites-enabled/000-default.conf


Codice:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        <Directory />
            Options FollowSymLinks
            AllowOverride None
         </Directory>
 <Directory /var/www/html/>
 Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    Options +ExecCGI
        AddHandler cgi-script .py .txt
    </Directory>

  <Directory /var/www/html/cgi-bin>
 Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    Options +ExecCGI
        AddHandler cgi-script .py .txt
    </Directory>


    ScriptAlias "/cgi-bin/" "/usr/lib/cgi-bin/"
   
 <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Questo sarebbe il httpd.conf

che trovo in /etc/apache2/apache2.conf

Codice:
<Directory />
        Options FollowSymLinks
        AllowOverride None 
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

LoadModule python_module modules/mod_python.so

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
        AddHandler cgi-script .py
        PythonHandler mod_python
        PythonDebug On

</Directory>

<FilesMatch "^\.ht">
        Require all denied
</FilesMatch>



<IfModule mod_dir.c>
     DirectoryIndex index.html index.py index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Dopo varie ricerche e ore di strippaggio, in questo momento mi sono totalmente
perso tra permessi, cgi, apache, e poi con i vari cambi/esperimenti
che ho fatto, magari sono stato io stesso a rompere i permessi.

Grazie se qualcuno ne sa qualcosa.
Ciao
Risposta
#2
apache opera con utente www-data e gruppo www-data quindi ogni file che apache deve "toccare" deve essere leggibile da quell'utente.

Mini corso:

Hai postato l'output di ls -l della cartella:

-rwxr-xr-x 1 root root 654 mar 30 19:10 nome.py
-rwxr-xr-x 1 root root 843 mar 30 16:43 nome.txt

I permessi sono visualizzabile grazie alla stringa -rwxr-xr-x (il primo carattere identifica il tipo di file (- normale, d directory, ecc.)

- Hai due file creati con l'utente root (utente proprietario) e con il gruppo root (gruppo proprietario)
- L'utente root ha totali permessi sul file lettura (2° carattere), scrittura (3° carattere) ed esecuzione (4° carattere)
- Il gruppo root può leggere ed eseguire (caratteri 5° e 7°) ma non scrivere
- Idem per gli altri, tutti quelli che non sono l'utente root e non appartengono al gruppo root (carattere 8° e 10°)

Per risolvere di solito si preferisce cambiare il proprietario del file così che apache non abbia nessun problema a gestirlo

Il comando è:

sudo chown www-data:www-data nomefile

Puoi anche mettere a tutti il permesso di scrittura ma è sconsigliato:

sudo chmod a+x nomefile
(a sta per all)

Se vuoi approfondire ti do il link di un tutorial scritto da me sul mio blog: https://www.wearegeek.it/permessi-sui-file/
Risposta
#3
Ciao Stormageddon,
intanto grazie per il tempo che dedichi nel aiutarmi.

Ti dico la verità, la storia dei permessi mi manda in crash
il cervello, ho usato anche strumenti online come https://chmod-calculator.com
per aiutarmi perché per me é veramente un film capire i permessi.

Ti ringrazio anche per la spiegazione mini corso, e nonostante me lo hai scritto
quando leggo i caratteri dei permessi mi viene tipo la nausea XD

Cmq, non mi abbatto e voglio arrivare in fondo a sta cosa per capire come si fa.

Ho provato a fare come mi hai detto, anche se devo dirti la verità, ci avevo già provato
tra le mie tante prove, ma non avevo ottenuto nessun risultato piacevole.

Ora l'ho rifatto, esattamente come mi hai detto, e solo al file txt
sono entrato nella cartella /usr/lib/cgi-bin
ho eseguito il comando 

Codice:
 sudo chown www-data:www-data file.txt

digito ls -la per vedere cosa è cambiato, questo è il risultato del file:

Codice:
-rwxr-xr-x  1 www-data www-data   20 apr  1 22:17 file.txt

così va bene giusto?
Cioè sia il grande capo "proprietario" che il gruppo dovrebbero capirsi con apache...

Vado nel browser e digito il solito ip/cgi-bin/file.txt 
e mi trovo un bel 

Citazione:Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.



MI suggerisce di contattare l'amministratore ..peccato che sono io ..

cmq.. se ho fatto fatto bene dovrebbe andare..ma così non è :-(

Ho provato ad eseguire anche il file python da terminale sempre da dentro
la sua cartella, e quando il file python deve scrivere sul file txt, strippa...
con questo errore che è sempre riferito ai permessi "credo io" 

ed ecco qui una bella vomitata di codice gratuito per tutti...

Codice:
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #708284; background-color: #042029; background-color: rgba(4, 32, 41, 0.96)} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #708284; background-color: #042029; background-color: rgba(4, 32, 41, 0.96); min-height: 13.0px} span.s1 {font-variant-ligatures: no-common-ligatures}
en&gt;</font></small></td></tr></table><p><strong>&lt;type 'exceptions.IOError'&gt;</strong>: [Errno 13] Permission denied: 'file.txt'
<br><tt><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small>&nbsp;</tt>args&nbsp;=
(13, 'Permission denied')
<br><tt><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small>&nbsp;</tt>errno&nbsp;=
13
<br><tt><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small>&nbsp;</tt>filename&nbsp;=
'file.txt'
<br><tt><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small>&nbsp;</tt>message&nbsp;=
''
<br><tt><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small>&nbsp;</tt>strerror&nbsp;=
'Permission denied'


<!-- The above is a description of an error in a Python program, formatted
     for a Web browser because the 'cgitb' module was enabled.  In case you
     are not reading this in a Web browser, here is the original traceback:

Traceback (most recent call last):
  File "file.py", line 33, in &lt;module&gt;
    file = open('file.txt', 'w')
IOError: [Errno 13] Permission denied: 'file.txt'

-->


Poi ho pensato di fare un'altra prova visto che il file.py sembra funzionare..
Sono andato nel browser e come al solito ip/cgi-bin/file.py
non che mi aspettassi grandi cose, ma se vado nel inspect element 
lo status è 200 e di colore verde quindi YES! Funzia..
Lo script viene eseguito

Quindi ho pensato...ma non e che apache non capisce i file txt?
Per quanto riguarda i permessi, se ho capito bene, li posso lasciare cosi...

Vengono cambiati per una questione di direttive di apache o robe del genere immagino..
nel senso quando dici

"apache opera con utente www-data e gruppo www-data quindi ogni file che apache deve "toccare" deve essere leggibile da quell'utente"

Mi pare di capire che è così e non si discute.

Per quanto riguarda i permessi del file che ora sono così.
Codice:
rwxr-xr-x

che se ho capito bene significa,
che il gruppo può leggere ed esecutare ...

Quindi non può scrivere...
Allora ho pensato di provare a cambiare i permessi per la scrittura..in questo modo

Codice:
sudo chmod 777 file.txt
e mi ritrovo 

Codice:
-rwxrwxrwx  1 www-data www-data   20 apr  1 22:40 file.txt

Quindi ora il trattino iniziale sta per FILE e tutto il resto sta per superEroe..cioè
dovrebbe poter far tutto...
e invece non fa un bel niente ahahah...
Peccato...

Boo ora l'ho rimesso come prima a 755 visto che non so bene quello che faccio ,
magari attendo tue notizie e mi dici cosa ne pensi di quello che penso..

Al momento non va cmq...Ora mi metto un pò a vedere se ci salto fuori.

**Altri aggiornamenti

Forse il problema è del file txt..
nel senso che spulciando meglio l'inspect element
vedo questo errore
Referrer Policy: no-referrer-when-downgrade

Ho provato a fare un'ulteriore prova, ho creato un
file.`php con scritto semplicemente
< ? php echo "prova" ? >
e se vado nel ip/cgi-bin/file.php
questo funziona...


Grazie ancora e scusa il papiro ma magari così è chiaro...

buona giornata
Risposta
#4
mi sono trovato in un problema simile,

che permessi ha la cartella . (cioè quella dove stanno i file)?

mi è capitato di non avere i giusti permessi ai file ma errati alla cartella quindi niente scrittura

fai un ls -la (a sta per anche file nascosti) e vedi che dice per la cartella .

io metterei anche quella di proprietà dell'utente www-data e del gruppo www-data
Risposta
#5
Ciao,
avevo provato a cambiare i permessi l'ultima volta che ho fatto delle prove ma non ho avuto risultati.

Questi sono quelli attuali e dentro ci sono tutti i file, nessuna cartella solo il file .py e il file txt
Codice:
drwxr-xr-x  4 root root    4096 apr  3 21:49 cgi-bin

Poi ho cambiato in questo modo dopo aver letto il tuo messaggio
Codice:
 sudo chown -R www-data:www-data cgi-bin/

Risultato
Codice:
drwxr-xr-x  4 www-data www-data    4096 apr  3 21:49 cgi-bin

il file dentro la cartella ha i seguenti permessi
Codice:
-rwxr-xr-x  1 www-data www-data   20 apr  1 23:20 file.txt


vado in ip/cgi/nomefile.txt e mi continua a da Internal server error...

Mentre il file py continua a funzionare.
Mentre se vado in ip/cgi-bin mi dice che non ho i permessi.

Sinceramente non so piu che pesci pigliare...

Hai qualche altra idea ?
Grazie

ps: La cosa che non capisco è perche i file .py e html, php se li ciuccia tutti meno quello che serve a me!=?!?!=! i txt
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect