Come mettere l'umask desiderato con SFTP?


23

Ho un server SFTP (openssh / sftp-server) e vorrei impostare umask 002 per gli utenti che usano questo servizio. Ho provato a impostare PAM (pam.d / common-session) e .profile per ciascun utente, ma senza fortuna.

Con l'accesso SSH va tutto bene, ma quando provo con SFTP (con gFTP) ho impostato 022 umask.

Ho già provato a usare un wrapper per sftp-server che sta cambiando umask prima di chiamare sftp-server, senza fortuna.

Qualsiasi aiuto? Molte grazie!

Risposte:


25

Dal momento che OpenSSH 5.4p1 credo, è possibile utilizzare l'opzione "-u", ad esempio:

Subsystem sftp /usr/lib/openssh/sftp-server -u 022

Dalla pagina man:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.

bello!! Darò un'occhiata al più presto e
riferirò i

5
Per quelli senza l'opzione -u, questo funziona:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay

1
Buona soluzione Risolve il problema con le shell e le applicazioni client, come CyberDuck, che impostano le autorizzazioni predefinite indipendentemente dal sistema umask. Ho trovato utile assicurarsi che ogni app client imposti le autorizzazioni giuste per consentire ai miei utenti di lavorare insieme sui file di gruppo. Potrebbe essere utile aggiungere anche che questa impostazione non impedisce agli utenti di personalizzare le autorizzazioni dei file se lo desiderano.
Gerlos,

Un'ultima cosa da aggiungere: se hai bisogno solo della funzione sftp e non devi dare ai tuoi utenti l'accesso alla shell, puoi anche considerare di usare rssh invece di bash per le loro shell e impostare umask predefinito per loro in /etc/rssh.conf . Questo potrebbe rendere il tuo server più sicuro
gerlos

7

Spero che questo possa salvare qualcun altro ore di frustrazione ...

Se stai utilizzando un'applicazione GUTP SFTP, controlla le sue preferenze per impostare le autorizzazioni per il caricamento.

Avevo provato tutte le soluzioni sopra e si scopre che l'applicazione le stava semplicemente ignorando.


^^ Sì, per molto tempo ho impostato umask sulla connessione sftp creando uno script simile alla soluzione di Weboide. Di recente mi sono grattato la testa sul perché questo non sembrava funzionare come in passato. Beh, a quanto pare a un certo punto un aggiornamento del mio client SFTP ha reso esplicitamente impostato umask dopo essersi connesso con ssh, quindi vai a capire.
Jared Kipe

Non sono solo le GUI. Nemmeno i clienti. Mi ci è voluto troppo tempo per scoprire che il file di test che avevo caricato aveva 0600 che il client (OpenSSH sftp) aveva copiato sul lato remoto.
xebeche,

Grazie! Ho passato così tanto tempo a giocare con le autorizzazioni per niente.
Tania Rascia,

2

Dopo molte ore che ho provato ad applicare vari hack e correzioni, ho trovato una soluzione adeguata!

C'è una patch per SSH che ti consente di scegliere l'umask che desideri per SFTP. Puoi scaricarlo qui: http://sftpfilecontrol.sourceforge.net/

Per me (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 ott 2007) funziona perfettamente!


2
Solo per notare che l'opzione '-u' per impostare umask è disponibile in OpenSSH da 5.4p1, vedi la mia risposta più in basso.
Weboide

2

Nel file di configurazione di ssh puoi anche usarlo per impostare specificamente la modalità del file (sovrascrivendo qualsiasi chmod che il client potrebbe provare a impostare). Qui sto usando internal-sftp ma immagino che sarebbe lo stesso per sftp-server:

ForceCommand internal-sftp -u 0022   

0

Per citare questo messaggio :

Ho funzionato bene aggiungendo una riga "umask 007" in /etc/init.d/ssh.

Bash usa le .profileshell di login interattive. Non penso che sftpconta come uno. Potresti essere in grado di impostare l'umask /etc/bash.bashrco ~/.bashrcse la punta sopra non funziona o desideri un controllo più accurato.


2
grazie per la risposta, ma avevo già in ssh umask 002 (ho provato anche 0002) e non funziona :( anche il bashrc non viene preso in considerazione, poiché con un client SFTP esterno non penso che bash sia usato. Se accedo direttamente con ssh tutto va bene. Il mio problema è solo con i client SFTP Grazie!
mat_jack1

Oops, hai ragione. Non so perché stavo pensando al coinvolgimento di Bash.
In pausa fino a nuovo avviso.

0

Fare riferimento a questa domanda per trovare una soluzione semplice che non richiede specifiche versioni di openssh né patch personalizzate.

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.