locked
[samba] Come impedire la memorizzazione delle credenziali di accesso alla rete? RRS feed

  • Domanda

  • Riporto di seguito una domanda che ho fatto su "Microsoft Answers". Mi è stato risposto di rivolgermi a TechNet perché più attinente ad ambito professionale che non di utente consumer.

    ----

    Avrei la seguente necessità: accesso da postazioni Windows7 e WindowsXP (alcuni home, altri professional, quindi 4 versioni in tutto) a delle cartelle condivise su un server Linux tramite il servizio samba.

    Lo scopo è avere un gruppo di utenti, ognuno con una cartella accessibile in lettura/scrittura solo a lui, tutti però devono poter inserire documenti nella cartella degli altri appartenenti al gruppo, ma senza poi poter vedere il contenuto di quella cartella (una sorta di buca delle lettere).
    Ho messo  a punto tutto sul server samba, i permessi funzionano e ogni utente può accedere solo alla cartella a lui riservata.

    Mi rimane un solo problema, ma abbastanza grosso:
    se da una postazione si esegue l'accesso alla cartella di utente1 tutto bene, viene chiesto nome utente e password e di accede.
    Però, nonostante NON sia marcata la casella per memorizzare le credenziali di accesso, Windows, in qualche modo le memorizza, oppure lascia una sessione aperta sul server, quindi se un secondo utente usa lo stesso PC non ha la possibilità di accedere alla propria cartella.

    Sono a conoscenza delle seguenti cose
    1. bisognerebbe avere un dominio o almeno tanti utenti sulla macchina quanti sono gli utenti che la usano.
    2. per far dimenticare a windows la sessione e la risorsa condivisa si può usare net use * /d /y

    Purtroppo nella situazione in cui deve funzionare il sistema la soluzione del dominio non è praticabile, né far fare log-out e log-in agli utenti, e, infine, dubito che anche facendogli un pulsante con un batch per disconnettere la risorsa lo useranno mai.

    Ciò premesso, per me la soluzione ideale sarebbe riuscire a forzare la disconnessione della risorsa quando si chiude la cartella utilizzata.
    Esiste qualche modifica al registro che possa fare al caso mio? Ad esempio impedire di fare una cache della password?

    Immagino che ogni versione di Windows abbia leggere differenze nelle chiavi di registro da ritoccare. Ho trovato in rete qualcosa riguardo alla creazione di nuove chiavi in caso si difficoltà a collegarsi a samba, ma non su cosa fare nel mio caso in cui il collegamento non dà problemi, ma viene mantenuto aperto.

    Spero di essere stato abbastanza sintetico e chiaro
    Grazie a tutti

    ----

    Ho provato anche a tentare di aggirare il problema forzando samba a chiudere le connessioni inattive dopo solo 1 minuto, ma da windows continua ad essere inviato l'ultimo set di credenziali utilizzato



    giovedì 16 febbraio 2012 14:44

Risposte

  • Ciao Luigi,
    aggiungo qualcosina a quanto già spiegato chiaramente da Alessandro.
    La chiave di registry DisablePwdCaching credo valga per versioni di Windows precedenti e comunque non nell'ambito che serve a te (Microsoft Support: Dial-up networking password is not saved, oppure "Save Password" check box is unavailable when you link ODBC tables).

    Detto questo, nel momento in cui "si chiude la cartella utilizzata" la risorsa remota è ancora "valida" (net use da prompt DOS) e l'unico modo quindi è quello che già conosciamo (comando manuale, oppure log-off).

    Alchè ti butto la un'idea (da provare !!!): tramite l'utility Handle è possibile avere l'elenco degli handle aperti e quindi anche della finestra aperta sulla share di rete. Si potrebbe creare uno script (Batch o VBScript) schedulato per girare ogni 1, 2 minuti (sul client) il quale verifica la presenza dell'handle della finestra in questione; se non esiste significa che la finestra è chiusa e viene lanciato il comando net use * /d /y altrimenti lo script esce.

    Es. (comando handle)

    Share Samba: \\SambaServer\ShareName

    > Finestra aperta sulla share
    Comando: handle | find "SambaServer\ShareName"
    Output: F24: File  (RWD)   \Device\Mup\SambaServer\ShareNam

    > Finestra chiusa
    Comando: handle | find "SambaServer\ShareName"
    Output: N/A

    ...Non saprei se può essere d'aiuto, ma non essendoci alcuna soluzione by design alla tua domanda, l'unico modo è inventarsi qualcosa.

    Tienici informato !!!

    Ciao,
    Luca


    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees, and confers no rights.









    • Modificato lucafabbri365 venerdì 24 febbraio 2012 21:57
    • Proposto come risposta lucafabbri365 lunedì 27 febbraio 2012 07:14
    • Contrassegnato come risposta Anca Popa mercoledì 29 febbraio 2012 09:43
    venerdì 24 febbraio 2012 20:21
  • Luca hai avuto una idea ottima!

    Per realizzarla sono necessari 2 passi

    1) schedulare questo script ogni minuto con lo stesso utente usato per login
    Si dovrà schedulare  wscript.exe e come parametro lo script sotto runhide.vbs, questo per evitare lo sfarfallio ogni minuto quando viene esguito il batch...

    '--- RunHide.vbs
    set E=WScript.CreateObject("WScript.Shell")
    E.Run "C:\admin\ForzaDisconnesione.cmd",0
    set E=Nothing
    '--- end RunHide.vbs


    2) batch che forza la disconnessione se la finestra di explorer è Chiusa

    :: *** ForzaDisconnesione.cmd
    :: *** Explorer aperto sulla share
    set Share=MySambaserver\MySahre
    ( c:\admin\handle.exe -p explorer.exe|find /i "Device\Mup\%Share%" )&& net use * /d /y
    :: *** fine ForzaDisconnesione.cmd
    
    Ora basta che l'utente chiuda la finestra sulla share ed eventuali file da essa aperti, tempo 60 secondi max e il gioco è fatto...

    Non so quali vincoli ti abbiano portato a questa soluzione, mai io avrei modificato quelle 4 rige del file smb.conf che ti permettono di avere un dominio, poi join delle macchine e logon e logoff degli utenti che accedono al pc...

    Ciao Gas


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!

    • Contrassegnato come risposta Anca Popa mercoledì 29 febbraio 2012 09:43
    domenica 26 febbraio 2012 22:48
    Moderatore
  • Ciao, che io sappia non hai modo di forzare la disconnessione se non disconnettendo realmente l'utente. Di solito è un'impostazione che si da lato server il fatto di disconnettere l'utente dopo N minuti (anche 1 solo) di inattività e richiedere le credenziali. Lato sistema, windows sia Xp che 7 si comporta memorizzando le credenziali di accesso durante il logon inziale di sessione o dopo la prima richiesta di accesso a risorse. Dopodichè per tutta la sessione le mantiene tant'è che non puoi accedere nemmeno con 2 credenziali diverse su risorse di rete nella stessa sessione. Nel tuo caso non vedo soluzioni. Il dominio non risolve il problema, si comporta ugualmente anche sotto AD. L'unica cosa che puoi fare lato client è tramite le policy disconnettere totalmente l'utente dopo N minuti di inattività. Ma se vuoi utilizzare la piattaforma in maniera che ogni volta che uno si siede accede con le sue credenziali differenti non è contemplato. in effetti ha poco senso. Altrimenti gli utenti diversi a che servono? :-)

    ciao A.

    • Contrassegnato come risposta Anca Popa mercoledì 29 febbraio 2012 09:43
    domenica 19 febbraio 2012 11:14
    Moderatore

Tutte le risposte

  • Su un forum ho trovato che si potrebbero aggiungere (o modificare se già esistenti) due chiavi di registro

    Registry Settings
    User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Network]
    System Key: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Network]
    Value Name: DisablePwdCaching
    Data Type: REG_DWORD (DWORD Value)
    Value Data: (0 = disabled, 1=enabled)

    Ho provato in un Windows 7 Professional ma non ho avuto cambiamenti.


    giovedì 16 febbraio 2012 20:34
  • Ciao, che io sappia non hai modo di forzare la disconnessione se non disconnettendo realmente l'utente. Di solito è un'impostazione che si da lato server il fatto di disconnettere l'utente dopo N minuti (anche 1 solo) di inattività e richiedere le credenziali. Lato sistema, windows sia Xp che 7 si comporta memorizzando le credenziali di accesso durante il logon inziale di sessione o dopo la prima richiesta di accesso a risorse. Dopodichè per tutta la sessione le mantiene tant'è che non puoi accedere nemmeno con 2 credenziali diverse su risorse di rete nella stessa sessione. Nel tuo caso non vedo soluzioni. Il dominio non risolve il problema, si comporta ugualmente anche sotto AD. L'unica cosa che puoi fare lato client è tramite le policy disconnettere totalmente l'utente dopo N minuti di inattività. Ma se vuoi utilizzare la piattaforma in maniera che ogni volta che uno si siede accede con le sue credenziali differenti non è contemplato. in effetti ha poco senso. Altrimenti gli utenti diversi a che servono? :-)

    ciao A.

    • Contrassegnato come risposta Anca Popa mercoledì 29 febbraio 2012 09:43
    domenica 19 febbraio 2012 11:14
    Moderatore
  • Purtroppo è quello che sospettavo.

    Il problema è che spesso, almeno nella mia sperienza, per "praticità" gli utenti non gradiscono fare log out ogni volta che finiscono una sessione di lavoro.

    In questo caso in particolare, lo stesso PC è sempre accesso e loggato con un solo utente,  vari operatori si alternano su quello, e ognuno di questi operatori dovrebbe accedere solo alla propria cartella in rete.

    Il dubbio che ancora mi resta è come mai non funzioni la disconnessione forzata lato server samba: l'ho impostata a 1 minuto ed effettivamente (comando smbstatus) il server mostra che non ci sono risorse utilizzate dopo 1 minuto, però se dopo la disconnessione provo a riconnettere una cartella da Windows, la password non viene richiesta, ma si collega coomunque con le ultime credenziali utilizzate.

    Alla fine proverò a fargli un collegamento ad un file batch che tramite net use connette o disconnete la risorsa.

    lunedì 20 febbraio 2012 06:42
  • Ciao Luigi,
    aggiungo qualcosina a quanto già spiegato chiaramente da Alessandro.
    La chiave di registry DisablePwdCaching credo valga per versioni di Windows precedenti e comunque non nell'ambito che serve a te (Microsoft Support: Dial-up networking password is not saved, oppure "Save Password" check box is unavailable when you link ODBC tables).

    Detto questo, nel momento in cui "si chiude la cartella utilizzata" la risorsa remota è ancora "valida" (net use da prompt DOS) e l'unico modo quindi è quello che già conosciamo (comando manuale, oppure log-off).

    Alchè ti butto la un'idea (da provare !!!): tramite l'utility Handle è possibile avere l'elenco degli handle aperti e quindi anche della finestra aperta sulla share di rete. Si potrebbe creare uno script (Batch o VBScript) schedulato per girare ogni 1, 2 minuti (sul client) il quale verifica la presenza dell'handle della finestra in questione; se non esiste significa che la finestra è chiusa e viene lanciato il comando net use * /d /y altrimenti lo script esce.

    Es. (comando handle)

    Share Samba: \\SambaServer\ShareName

    > Finestra aperta sulla share
    Comando: handle | find "SambaServer\ShareName"
    Output: F24: File  (RWD)   \Device\Mup\SambaServer\ShareNam

    > Finestra chiusa
    Comando: handle | find "SambaServer\ShareName"
    Output: N/A

    ...Non saprei se può essere d'aiuto, ma non essendoci alcuna soluzione by design alla tua domanda, l'unico modo è inventarsi qualcosa.

    Tienici informato !!!

    Ciao,
    Luca


    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees, and confers no rights.









    • Modificato lucafabbri365 venerdì 24 febbraio 2012 21:57
    • Proposto come risposta lucafabbri365 lunedì 27 febbraio 2012 07:14
    • Contrassegnato come risposta Anca Popa mercoledì 29 febbraio 2012 09:43
    venerdì 24 febbraio 2012 20:21
  • Luca hai avuto una idea ottima!

    Per realizzarla sono necessari 2 passi

    1) schedulare questo script ogni minuto con lo stesso utente usato per login
    Si dovrà schedulare  wscript.exe e come parametro lo script sotto runhide.vbs, questo per evitare lo sfarfallio ogni minuto quando viene esguito il batch...

    '--- RunHide.vbs
    set E=WScript.CreateObject("WScript.Shell")
    E.Run "C:\admin\ForzaDisconnesione.cmd",0
    set E=Nothing
    '--- end RunHide.vbs


    2) batch che forza la disconnessione se la finestra di explorer è Chiusa

    :: *** ForzaDisconnesione.cmd
    :: *** Explorer aperto sulla share
    set Share=MySambaserver\MySahre
    ( c:\admin\handle.exe -p explorer.exe|find /i "Device\Mup\%Share%" )&& net use * /d /y
    :: *** fine ForzaDisconnesione.cmd
    
    Ora basta che l'utente chiuda la finestra sulla share ed eventuali file da essa aperti, tempo 60 secondi max e il gioco è fatto...

    Non so quali vincoli ti abbiano portato a questa soluzione, mai io avrei modificato quelle 4 rige del file smb.conf che ti permettono di avere un dominio, poi join delle macchine e logon e logoff degli utenti che accedono al pc...

    Ciao Gas


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!

    • Contrassegnato come risposta Anca Popa mercoledì 29 febbraio 2012 09:43
    domenica 26 febbraio 2012 22:48
    Moderatore
  • Ciao Gastone,
    sono contento che l'idea ti sia stata d'aiuto !!!

    Non ti seguo quando parli del file di configurazione di Samba (smb.conf): che vorresti fare in merito ? 

    Ciao,
    Luca


    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees, and confers no rights.

    lunedì 27 febbraio 2012 07:21
  • Non ti seguo quando parli del file di configurazione di Samba (smb.conf): che vorresti fare in merito ? 

    Qui viene fuori il sistemista linux che è in me! Samba può essere configurata come PDC (emulando un dominio nt4) modificando opportunamente il file smb.conf, non continuo e  chiudo qui il post, ho già nominato linux (2 volte) in un forum di Microsoft :)


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!


    mercoledì 29 febbraio 2012 08:19
    Moderatore