Modificare i permessi di default dei file caricati tramite protocollo sftp

Il protocollo sftp, di default, utilizza l’umask dell’utente che lo sta utilizzando. Nella maggior parte dei casi questa umask è impostata nel modo corretto.

I file caricati su un server web dovrebbero avere i permessi di lettura e scrittura sia per l’utente che per il gruppo (che di solito rappresenta l’utente www, o apache o chi per lui sta eseguendo il server web). Per questo otivo l’umask di default degli utenti è solitamente impostata su 0002.

Molti server, tuttavia, sono impostati per utilizzare suPHP, che consente di far girare gli script in php con l’uid dell’utente proprietario, dando così a questi pieni permessi sui file dell’utente stesso e praticamente nessuno sui file che non gli appartengono. Per questo motivo bisognerebbe impostare l’umask a 0022.

Qualora la vostra impostazione di default sia errata (e non vi vada di rischiare la modifica di impostazioni globali) è possibile sovrascrivere questa impostazione dicendo al server sftp quale umask utilizzare indipendentemente da quella impostata dall’utente.

Il server sftp viene caricato dal server ssh. Aprite il file di configurazione di ssh e cercate la riga

Subsystem	sftp	/usr/libexec/openssh/sftp-server

Il comando sftp-server (sul vostro sistema il percorso potrebbe essere diverso) mette a nostra disposizione l’opzione -u, che ci consente di impostare l’umask desiderata:

Subsystem	sftp	/usr/libexec/openssh/sftp-server -u 0022

Ovviamente modificate l’umask con quella che vi serve.

Ulteriori informazioni relativamente al funzionamento di umask le potete trovare in questo articolo.