L'amministratore del mio server vuole che imposti le autorizzazioni di scrittura pubblica su una directory


9

Sono relativamente nuovo allo sviluppo web, quindi per favore sii paziente.

Sono principalmente uno sviluppatore di iPhone, ma recentemente ho creato un sito per qualcun altro utilizzando l'hosting condiviso. Potrei scrivere bene su file in PHP su quel sito, senza dover pensare alle autorizzazioni.

Sto implementando un servizio Web per una nuova app che sto realizzando, ma non sta andando per il meglio. La differenza più importante qui è che sto usando il server di qualcun altro e ho solo l'accesso FTP / DB.

Fondamentalmente, ho un sacco di file PHP che compongono il mio CMS, in questo modo:

mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php

Tali script modificano quindi il database o i file. Possono interagire bene con il DB, tuttavia, i miei script non possono scrivere sul filesystem. Potrebbero, ad esempio, tentare di scrivere nei seguenti file:

mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt

Questo ha funzionato bene sulla mia installazione di MAMP (localmente), ma una volta distribuito sul server, PHP ha rivelato errori ogni volta che si è tentato di scrivere ... qualcosa del genere:

Impossibile aprire il file "../data/img/someimage.png" per la scrittura.

Quindi ho mandato un'e-mail al ragazzo che esegue il server e è tornato dicendo:

Funziona con autorizzazione pubblica? (777)

E lo ha fatto, ma sono stato molto cauto nell'utilizzare le autorizzazioni pubbliche, quindi l'ho disabilitato immediatamente. Gli ho mandato un'email dicendo "come posso far scrivere i miei script PHP usando le autorizzazioni standard dell'utente", e ha detto:

Lascialo come pubblico, andrà bene

Penso che sia un conflitto IP da qualche parte nella risoluzione del dominio, ma non sono preoccupato.

Gli ho quindi inviato un'email dicendo "sicuramente questo è insicuro" o qualcosa del genere, e ha risposto con il seguente:

la realtà è che ci sono milioni di siti Web, compresi alcuni che gestisco e che hanno 777 su varie cartelle, è solo un modo di vivere.

Qualcuno potrebbe darmi un'idea di una soluzione che potrei dargli? O cosa posso fare per evitare di usare 777? Non mi piace l'idea che qualsiasi cartella sul mio sito / servizio sia pubblicamente scrivibile.

Apprezzerei molto il tuo consiglio dato che so molto poco sui server web.


12
Scappa da questo ragazzo e non guardare indietro.
user9517

Non proprio un'opzione ... vedi i commenti sulla risposta di SvenW ...
Alex Coplan,

Risposte:


13

Analizziamolo :

È necessario che l'utente esegua lo script per leggere, eseguire e scrivere nella directory, quindi dovrebbe essere:

7 = (r) ead, (w) rite, e (x) ecute

Altri utenti appartenenti allo stesso gruppo dovrebbero essere in grado di eseguire il file php all'interno della directory, ma non di scriverlo (per ovvi motivi); non devono necessariamente leggere i file PHP. Pertanto, dobbiamo fornire solo le autorizzazioni di esecuzione:

1 = e (x) ecuto

Lo stesso per il pubblico. In effetti, questo è tutto ciò che serve per gli utenti esterni che devono visualizzare file php e statici:

1 = e (x) ecuto

Quindi il minimo indispensabile dovrebbe essere:

711

Ho confermato le impostazioni sopra con la mia configurazione, quindi dovrebbe funzionare; tuttavia, questo è sotto l'utente web predefinito. Se stai caricando con un login diverso da www, i file e le directory probabilmente sarebbero sotto un altro utente. In tal caso, l'utente Web predefinito potrebbe non essere in grado di leggere o scrivere i file di proprietà dell'utente. A quel punto, probabilmente dovrai aggiungere l'utente web predefinito al tuo gruppo (l'amministratore di sistema dovrà farlo) e quindi dare autorizzazioni di lettura, scrittura ed esecuzione agli utenti appartenenti al gruppo:

771

E probabilmente funzionerebbe. O quello, o fare in modo che l'amministratore di sistema cambi l'utente e la proprietà del gruppo di tali file con l'utente del server Web predefinito (ma NON LE PERMESSI!). Se il problema persiste, un esempio di output delle autorizzazioni (qualcosa come "ls -la all'interno della directory") ci aiuterebbe a risolvere ulteriormente questo problema. Detto ciò, purché tu debba dare solo autorizzazioni di esecuzione al pubblico ( o "altro"), dovresti stare bene dal punto di vista della sicurezza.


2
Vorrei poter votare due volte.
Wesley,

Il problema è che il sito Web non dovrebbe scrivere sui file all'interno della propria struttura piuttosto che sulle autorizzazioni stesse.
JamesRyan,

Hai ragione. A seconda dei dati, probabilmente vorrai scrivere su un file esterno al webroot pubblico.
Rilindo,

Qui sto scrivendo in una /datacartella - questa cartella contiene script PHP che compongono il mio servizio Web JSON e un mucchio di immagini utilizzate per il contenuto trasmesso nel servizio Web (in una /data/imgcartella)
Alex Coplan,

Quindi le immagini devono essere pubbliche, allora? Ciò ha chiarito le cose.
Rilindo,

18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

Questo ragazzo è un idiota e questa è una totale assurdità. I diritti di accesso non hanno nulla a che fare con l'indirizzo IP o la risoluzione del dominio, sta solo lasciando cadere le parole.

Data la qualità di questo "amministratore", consiglierei di ospitare il tuo sito altrove, poiché è molto probabile che il sito sia amministrato in modo molto scadente e insicuro. Mettere le 777autorizzazioni su qualcosa in modo che funzioni è un segno sicuro che non capisce un po 'di quello che sta facendo.

Quali diritti di accesso sono realmente necessari dipende dal modo in cui il sistema viene utilizzato e configurato ed è difficile dirti qualcosa senza saperlo.


grazie - il mio pensiero riguarda esattamente le autorizzazioni - Non ho davvero la possibilità di ospitarla altrove poiché la società che sto sviluppando non pagherà per questo, e mi ha consigliato questo ragazzo e mi ha detto che lo avrebbero portato a fallo gratuitamente - da quello che posso dire sono solo a corto di uno dei suoi server virtuali. Quindi, come funziona normalmente, come può uno script PHP essere eseguito come "utente" e quindi essere in grado di scrivere su qualsiasi cosa sul sito?
Alex Coplan,

Bene, vorrei informarli su ciò che ottengono "gratuitamente". Non ho molta esperienza con nessun hosting condiviso, quindi non posso commentarlo. I miei siti tutti corrono server web Debian e le cartelle che devono essere scrivibile sarà di proprietà di www-datacon 700i permessi, ma questo non è probabile che a lavorare nel vostro caso.
Sven

Penso che lo stiano pagando anche per il loro sito principale, quindi ecco perché - se c'è qualche aiuto in fondo a qualsiasi pagina di errore del server, dice questoApache/2.2.9 (Debian) PHP/5.2.6-1
Alex Coplan,

anche questo è vps non condiviso
Alex Coplan il

2
Bene, provo a capire quali autorizzazioni e proprietà i tuoi file potrebbero essere trasferiti sul server. Se si tratta di un utente che non è almeno un membro del www-datagruppo, è necessario modificare utenti / gruppi dopo il trasferimento o utilizzare effettivamente le 777autorizzazioni. Ma è inutile, non possiamo aiutarti in questo modo.
Sven
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.