Devi sempre chown quando aggiungi un nuovo file? Centos 6


2

Ogni volta che carico un nuovo file sul mio server, devo chown -R apache:apache /dirfarlo affinché sia ​​accessibile.

C'è un modo più semplice per aggirare questo?


Questo è il tuo server? Quindi dobbiamo sapere quale server ftp stai utilizzando. In ogni server ftp è possibile modificare la configurazione in modo che i file caricati ottengano l'utente giusto: gruppo e autorizzazioni. È anche possibile lavorare con l'autorizzazione ereditata dalla directory principale o con ACL (Access Control List), ma è molto più semplice impostarlo nel server ftp.
Rik,

A meno che tu non stia eseguendo l'FTP nel tuo server come utente, apache:apacheallora sì, devi farlo, sia manualmente che tramite una sorta di configurazione client / server FTP
Jobbo

@Jobbo Come potrei procedere dopo il caricamento come utente apache: apache?
Travis,

@Travis Puoi accedere a ftp con nome utente apache(se hai una password per quello). Altrimenti è necessario modificare la configurazione del server ftp. Questo è il tuo server? E quale demone server stai eseguendo? VSFTPD o qualcos'altro?
Rik,

@Rik Sto usando vsftpd Questo è anche il mio server. Ho l'accesso come root e ho caricato tutto come root.
Travis,

Risposte:


2

Molto probabilmente, ciò che è effettivamente necessario affinché i file siano accessibili è che il loro gruppo è impostato su apache. È possibile impostarlo facilmente per impostazione predefinita per i nuovi file creati eseguendo:

find /path/to/root/directory/of/website -type d -print0 | xargs -0 chmod g+s

Questo imposterà la setgidbandiera anche su tutte le sottodirectory. Con questo flag impostato, qualsiasi nuovo file creato in esso erediterà il gruppo della sua directory principale. ( -print0e le -0opzioni sono progettate per gestire correttamente gli spazi nei nomi dei file)

Assicurarsi che le proprietà dei file siano corrette prima di eseguirlo. Se non sei sicuro, puoi risolverlo allo stesso modo:

find /path/to/root/directory/of/website -print0 | xargs -0 chown apache:apache

E che dire di una nuova directory che crea con il programma ftp?
Rik

Dovrebbero anche ereditare, purché il programma ftp non cambi esplicitamente il gruppo.
Levans,

Sì, funziona. Penso di essere stato confuso con "user" -part. Questo non può essere ereditato senza usare ACL. Ma solo per la parte del gruppo setgidfunziona benissimo (+1). Se il programma ftp imposta il gruppo ... beh ... allora non c'è nient'altro da fare quindi cambiare la sua configurazione. L'ho appena provato con VSFTPD e funziona così. (Il gruppo non è impostato su quello definito in vsftpd.conf ma lo prende dalla sua directory principale)
Rik

@Levans quando eseguo quel comando, lancio 'find /var/www/travisingram.net/public_html -type d | xargs chmod g + s 'e le autorizzazioni non sono interessate. Un altro modo in cui so che non è cambiato è in WordPress, ogni volta che aggiorno / installo un plugin richiederà FTP o SFTP. Ora, se è stato vestito con Apache: Apache non dovrei vederlo. Non ho eseguito correttamente il comando? Sto correndo vsftpd
Travis il

@Travis stai eseguendo questo comando con diritti sufficienti (come rootutente)? Quando si visualizzano le autorizzazioni per i file (con ls -l), è necessario visualizzare Sle xautorizzazioni di gruppo anziché le autorizzazioni di gruppo sulle directory.
Levans,

0

Ecco cosa potresti fare con VSFTPD:

Puoi impostare in te le seguenti 2 opzioni vsftpd.conf:

guest_enable=YES
guest_username=apache

guest_enable, se abilitato, si assicura che tutti i file vengano caricati come utente / gruppo apache.

Si noti che funzionerà solo per i file caricati tramite FTP. Se copi un file in Linux stesso nella tua directory www, questo non regolerà le autorizzazioni .


Ecco perché, se chmod g+saccedi anche a quella directory tramite il filesystem, è meglio usare il metodo Levans suggerito.
(ie)

find /var/www/site/public_html -print0 | xargs -0 chown apache:apache
find /var/www/site/public_html -type d -print0 | xargs -0 chmod g+s

guest_enable
Se abilitato, tutti gli accessi non anonimi vengono classificati come accessi "guest". Un login ospite viene rimappato all'utente specificato nell'impostazione guest_username.

Impostazione predefinita: NO

guest_username
Vedere l'impostazione booleana guest_enable per una descrizione di ciò che costituisce un accesso ospite. Questa impostazione è il vero nome utente a cui sono mappati gli utenti guest.

Predefinito: ftp


Apache avrebbe la stessa password di root? Suppongo di no, ho deciso di provarlo prima di chiedere. Quindi è senza password aperta per uso generale? Sorta qui confuso.
Travis,

Non dovresti usare root per accedere a ftp. C'è una configurazione ftp nome utente per questo. Ma non importa con quale utente accedi (puoi configurare gli utenti ftp nella configurazione), devi dire al programma ftp di scrivere i file come se il apache:apachetuo server web necessita dell'accesso. (Anche se l'utente Apache non ha accesso password / ftp, i file possono comunque essere scritti con quell'utente fintanto che vsftpd lo assegna a quell'utente. Ecco dove sono queste linee)
Rik

E solo se hai abilitato l'anonimo, chiunque potrebbe accedere senza una password. Se è disabilitato puoi accedere con gli utenti a cui hai abilitato l'accesso per ftp. Questo potrebbe essere dallo standard Linux usato a un semplice login.txt in cui hai definito utenti e password. Dipende dal tuo file di configurazione. guest_enabledè un po 'confuso perché non ha nulla a che fare con l'accesso' ospite 'ma fa scrivere a vsftpd un utente diverso (rimappa) per utenti' normali '.
Rik,

come potrei andare dopo aver impostato le password per questo? Non conosco i comandi specifici per vsftpd.
Travis,

Visto che hai postato su quell'altra domanda che ho fatto prima. Ho dimenticato di fare una domanda precedente. Ho scoperto che avevo questo in realtà dopo averlo creato. Comunque, l'ho appena rimosso.
Travis,
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.