So che questa domanda è già stata discussa, ma leggendo i post non sono riuscito a capire le risposte, perché alcuni hanno detto "sì, umask può funzionare", e altri dicono "OpenSSH put command conserva sempre le autorizzazioni"
Prima di tutto solo per precisare:
- Uso OpenSSH 5.9 su RHEL 6.2
- Ho configurato un server SFTP chroot, usando il
internal-sftp
sottosistema, con-u 0002
for umask - Preciso di non usare l' opzione
-p
o-P
Da quello che ho letto da un lato: ci sono molti modi per definire umask per i trasferimenti SFTP:
- opzione
-u
diinternal-sftp
(osftp-server
), da OpenSSH 5.4 - crea un wrapper su
sftp-server
(in cui impostiamo esplicitamente umask - questo non si adatta all'ambiente chrootato tra l'altro) - aggiungere una configurazione specifica nel
pam.d/sshd
file
D'altra parte ho letto:
Il client e il server SFTP OpenSSH trasferiscono le autorizzazioni (come estensione) e creano il file remoto con le autorizzazioni sul lato locale. AFAICT, non c'è modo di disabilitare questo comportamento.
Quindi ho fatto il seguente test:
Sul mio client ho creato file MYFILE
e directory MYDIR
con autorizzazioni 600 e 700.
Quindi con i sftp
comandi:
mkdir => the new directory has permissions following the umask (OK)
put MYFILE => MYFILE has same permissions as on client (KO)
put -r MYDIR => MYDIR has same permissions as on client (KO)
Se cambio le autorizzazioni da MYFILE
e MYDIR
sul lato client e lo ricarico di nuovo, ottengo le nuove autorizzazioni sul lato server.
Ho provato anche la pam.d
soluzione, ma non ha cambiato nulla.
Quindi ora sono confuso:
Da quello che ho testato e da una parte di ciò che ho letto, direi che OpenSSH conserva sempre le autorizzazioni. Ma poiché ci sono molti post che dicono che è possibile definire un umask, posso immaginare di fare una cosa sbagliata nelle mie configurazioni di test.
Gradirei un feedback con esperienza.
Grazie.