Come posso chmod 777 tutte le sottocartelle di / var / www?


54

Sto eseguendo un server web e un server FTP, a cui /var/wwwè associato /home/user/www.

Ho impostato entrambe le directory su chmod 777(il che va bene poiché è solo per il test).

Posso caricare file in /home/user/www, ma ogni volta che creo una nuova directory, devo sempre correre chmod 777su quella cartella.

Altrimenti, quando provo a sfogliarlo, ricevo il messaggio di errore

Non sei autorizzato ad accedere / testare / su questo server.

C'è un modo per rendere tutte le sottocartelle all'interno /var/wwwaccessibili a chiunque? O le loro autorizzazioni potrebbero essere impostate automaticamente su 777? È fastidioso dover scrivere chmod 777ogni volta.


12
Lo lascerò qui PER FAVORE CONSIDERARE DI NON USARE 777 SU UN SERVER WEB . Una domanda migliore da porsi è "Come posso far funzionare il mio server web senza usare le autorizzazioni 777?"
Marco Ceppi

12
mi dispiace che sia una cattiva pratica e mi rifiuto di rispondere :) Spero che tutti siano d'accordo :)
Rinzwind

Risposte:


90

Questa è una cattiva pratica, ma speriamo che tu la stia usando solo per lo sviluppo, o hai un'altra buona ragione. È possibile specificare le autorizzazioni quando si crea una directory utilizzando l' -mopzione:

mkdir -m 777 dirname

Oppure puoi impostare le autorizzazioni in modo ricorsivo.

sudo chmod -R 777 /var/www

Prima di usare uno di questi, considera davvero se vuoi che il tuo filesystem sia così accessibile.


Modifica: come menzionato da Rinzwind, qui è un modo migliore per ottenere ciò che desideri.

Controlla quale gruppo possiede la tua /var/wwwdirectory e aggiungi il tuo utente a quel gruppo.

sudo adduser yourusername group

Il gruppo lo è probabilmente www-data.

Quindi starai bene impostando le tue autorizzazioni su 775.


4
Questo fa quello che hai chiesto ma per favore leggi prima Perché / var / www non dovrebbe avere chmod 777 . E ' davvero sconsigliato pratica.
Warren Hill,

8
Per favore, non aiutare le persone con un metodo che è una cattiva pratica. Preferirei se mi spiegassi come farlo: aggiungendo il suo utente a un gruppo www-data o apache;)
Rinzwind

4
L'istruzione viene prima di tutto. Aiutare le persone a rovinare la propria macchina non è il modo di Linux. Quindi non sono assolutamente d'accordo con te.
Rinzwind,

2
Il richiedente ha detto che questo è solo per i test. Posso sicuramente capire se vuoi che il tuo lato di sviluppo sia facilmente accessibile in modo da poter lavorare più rapidamente. Gli darò il beneficio del dubbio, che non è abbastanza sciocco da farlo con un server di produzione.
Dan

1
@ dan08 Ci sono modi migliori per testare, incluso l'uso della tua home directory. Vedi askubuntu.com/questions/46331/… e kimbriggs.com/computers/computer-notes/linux-notes/… . Ci sono modi sicuri per raggiungere questi obiettivi;)
Panther

7

I file e le directory in Unix possono avere tre tipi di autorizzazioni: read ( r), write ( w) ed execute ( x). Ciascuna autorizzazione può essere ono offper ciascuna delle tre categorie di utenti: il proprietario del file o della directory; altre persone dello stesso gruppo del proprietario; e tutti gli altri. Per modificare la modalità di un file, utilizzare il comando chmod. Il modulo generale è chmod X @ Y file1 file2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 


3

Annuncio di servizio pubblico:


Non usare mai chmod 777 per risolvere i problemi


  • È un grave rischio per la sicurezza se si esegue qualsiasi servizio disponibile al pubblico, in particolare le applicazioni Web (ad esempio PHP).

    Il modello di sicurezza del sistema operativo presuppone che molti servizi (come il server Web) vengano eseguiti con privilegi ridotti, per impedire loro di poter modificare i file. L'impostazione 777 sui file interrompe questo disegno.

    Un utente remoto potrebbe scrivere o caricare file e quindi ingannare il server (o qualche altro processo sul sistema) per leggerli o eseguirli. Script o software possono presentare difetti che lo consentono. È molto difficile bloccare ogni singolo modo in cui ciò potrebbe accadere se ci sono directory scrivibili in tutto il mondo.

  • Utilizzato in alcune directory di sistema (/ usr, / etc, / var e così via), può rompere il sistema in modi sorprendenti.

    Alcuni file di sistema essenziali richiedono autorizzazioni speciali come le autorizzazioni setuid / setgid per funzionare. Ad esempio, sudo. Evitare di modificare le autorizzazioni dei file su directory e file impostati dal sistema stesso.

  • Non c'è modo di annullarlo e recuperare tutte le vecchie autorizzazioni.

    Cioè, se in precedenza avevi file e cartelle con varie autorizzazioni diverse, non c'è modo di tornare a quelle autorizzazioni specifiche - solo per cambiarle tutte nella stessa cosa, che potrebbe perdere qualsiasi impostazione di autorizzazione specifica necessaria su file specifici.

  • C'è sempre un modo più appropriato per raggiungere ciò che vuoi ottenere.

In questo caso, sembra che tu voglia solo che il tuo server web sia in grado di leggere una directory. Dare il permesso scrivibile in tutto il mondo è molto più di quanto tu debba fare.

Scopri perché il server web non è in grado di leggere quella directory (suggerimento: è probabilmente perché la tua home directory non è leggibile dal mondo. La lettura del mondo è molto più sicura di quella scrivibile dal mondo - imposta la tua home directory su qualcosa come 755, oppure spostare quella directory www fuori casa in un posto come / var / www o / srv).


0

Questo non funziona per me.

sudo chmod -f 777 /path/to/your/file/or/directory

Devo usare -fanche io .

sudo chmod -R -f 777 /path/to/your/file/or/directory

0

Se desideri copiare permessi e / o proprietà da un altro file di cui sei soddisfatto, puoi farlo usando sudo chmod --reference = path / to / file / to / reference path / to / file / you / want / a / cambiamento / permissino / a

E puoi fare la stessa cosa anche per la proprietà dei file.

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.