User Tools

Site Tools


doc:appunti:linux:tux:samba

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:tux:samba [2018/11/28 17:31] – [Gestione Avanzata del Dominio con Samba 4] niccolodoc:appunti:linux:tux:samba [2021/05/19 12:46] (current) – [Problema "Nome di dispositivo locale già in uso" (win => smb)] niccolo
Line 158: Line 158:
  
 In un dominio NT ogni utente ha un **RID** (relative identifier), il RID è utilizzato per impostare il controllo di accesso (ACL) sugli oggetti di sistema: file, ecc. Nei profili roaming salvati sul PDC (''**ntuser.dat**'') ci sono delle ACL che fanno riferimento ar RID, purtroppo il metodo con cui Samba genera il RID differisce tra Windows NT, Samba-2 e Samba-3. Quindi con la semplice copia si ottiene un profile non utilizzabile a causa di problemi con i permessi. In un dominio NT ogni utente ha un **RID** (relative identifier), il RID è utilizzato per impostare il controllo di accesso (ACL) sugli oggetti di sistema: file, ecc. Nei profili roaming salvati sul PDC (''**ntuser.dat**'') ci sono delle ACL che fanno riferimento ar RID, purtroppo il metodo con cui Samba genera il RID differisce tra Windows NT, Samba-2 e Samba-3. Quindi con la semplice copia si ottiene un profile non utilizzabile a causa di problemi con i permessi.
 +
 +==== Copia delle password ====
 +
 +Se è attiva l'opzione **passdb backend = tdbsam** allora le password sono contenute nel file **/var/lib/samba/private/passdb.tdb** (Samba 4.11), dovrebbe essere sufficiente copiare il file dal server vecchio a quello nuovo (dopo aver fermato il servizio).
 +
  
 ===== Scadenza password ===== ===== Scadenza password =====
Line 252: Line 257:
  
 La soluzione è da //Control Panel//, //User Accounts//, //Credential Manager// aggiungendo una voce con il nome o l'indirzzo IP del server remoto, un login e una password (eventualmente anche guest/guest). Senza bisogno di riavviare. La soluzione è da //Control Panel//, //User Accounts//, //Credential Manager// aggiungendo una voce con il nome o l'indirzzo IP del server remoto, un login e una password (eventualmente anche guest/guest). Senza bisogno di riavviare.
 +
 +===== Problema "Nome di dispositivo locale già in uso" (win => smb) =====
 +
 +Problema con unità disco mappata su risorsa di rete (ad esempio lettera **G:** mappata su **%%\\server\share%%**) in modo permanente, al riavvio di Windows l'unità di rete risulta disconnessa e cliccando su di essa si ottiene l'errore:
 +
 +<code>
 +Errore durante la riconnessione di G: a \\server\share
 +Microsoft Windows Network: Nome di dispositivo locale già in uso.
 +La connessione non è stata ripristinata.
 +</code>
 +
 +in inglese:
 +
 +<code>
 +An error occurred while reconnecting G: to \\server\share
 +Microsoft Windows Network: The local device name is already in use.
 +This connection has not been restored.
 +</code>
 +
 +FIXME Non si riesce a trovare una soluzione. Una cosa strana: creando un batch che disconnette e riconnette l'unità di rete, il batch fallisce se viene eseguito poco dopo il logon (ad esempio in esecuzione automatica). Lo stesso batch invece funziona qualche minuto dopo il logon.
 +
 +<code>
 +net use G: /delete
 +net use G: \\server\share
 +</code>
 +
 +===== Problema smbclient con Windows a dominio (smb => win) =====
 +
 +Se un PC Windows è unito a un dominio, le credenziali fornite per accedere ad una risorsa condivisa vengono fatte verificare al controllore del dominio stesso.
 +
 +Ad esempio con il comando:
 +
 +<code>
 +smbclient -U user%password -L '\\WORKSTATION'
 +</code>
 +
 +il programma **smbclient** usa come nome di dominio ciò che è indicato dal parametro **workgroup** di **/etc/samba/smb.conf** e quindi la **WORKSTATION** chiede al controllore del dominio di autenticare l'utente **user** con la **password** fornita.
 +
 +Se si utilizzano le credenziali di un utente locale della WORKSTATION (che non esiste a livello di dominio), il comando fallisce con:
 +
 +<code>
 +session setup failed: NT_STATUS_LOGON_FAILURE
 +</code>
 +
 +Per risolvere il problema si può indicare esplicitamente sulla riga di comando **smbclient** sia il nome del dominio che l'ambito di esistenza dell'utente; quello che fa effettivamente la differenza è l'ambito **LOCAL/** aggiunto all'utente:
 +
 +<code>
 +smbclient -W WORKGROUP -U LOCAL/user%password -L '\\WORKSTATION'
 +</code>
  
 ===== Lettura/esecuzione di un file PDF in cartella Samba ===== ===== Lettura/esecuzione di un file PDF in cartella Samba =====
Line 380: Line 434:
 Domain Users Domain Users
 Domain Guests Domain Guests
 +</code>
 +
 +
 +Si può chiedere l'elenco dei permessi assegnabili:
 +
 +<code>
 +net rpc rights list -U Administrator%password
 +</code>
 +
 +e assegnare, vedere e revocare un privilegio ad un utente:
 +
 +<code>
 +net rpc rights grant simone SeBackupPrivilege -U Administrator%password
 +net rpc rights list simone -U Administrator%password
 +net rpc rights revoke simone SeBackupPrivilege -U Administrator%password
 </code> </code>
  
Line 396: Line 465:
 <code> <code>
 pdbedit --fullname="Niccolo Rigacci" -u niccolo pdbedit --fullname="Niccolo Rigacci" -u niccolo
 +</code>
 +
 +===== Accesso ad uno share Windows 7 smbclient =====
 +
 +After a Windows 7 update (which upgraded the operating system to **Windows 7 Professional 7601 Service Pack 1**) a connection from a GNU/Linux host via **smbclient** stopped working:
 +
 +<code>
 +smbclient -L pcwindows7 -U username%password
 +session setup failed: NT_STATUS_INVALID_HANDLE
 +</code>
 +
 +asking for debug on the smbclient command line showed the usual, useless data:
 +
 +<code>
 +SPNEGO login failed: Invalid handle
 +</code>
 +
 +
 +The **Event Viewer** on the sharing host were showing the expected **Logon Type 3 (Network)**, but the event were immediately followed by a **disconnect** event.
 +
 +It turned out theat the user had the **Administrator's privileges**, removing that and **making it a regular user, fixed the problem**.
 +
 +===== Analisi Log Samba =====
 +
 +Ecco alcuni **esempi di log** (ripuliti da informazioni non strettamente necessarie come timestamp, riferimento alla funzione sorgente, ecc.):
 +
 +==== Join a dominio di un host ====
 +
 +<code>
 +_samr_create_user:
 +    Running the command
 +    `/usr/sbin/useradd -g machines -c "Machine account" -d /var/lib/samba -s /bin/false myhost$'
 +    gave 0
 +Forcing Primary Group to 'Domain Users' for MYHOST$
 +api_rpcTNP: rpc command: SAMR_QUERYUSERINFO
 +User:[MYHOST$]
 +api_rpcTNP: rpc command: SAMR_GETUSERPWINFO
 +api_rpcTNP: rpc command: SAMR_SETUSERINFO2
 +Forcing Primary Group to 'Domain Users' for MYHOST$
 +</code>
 +
 +==== Logon ====
 +
 +<code>
 +check_ntlm_password:  Checking password for unmapped user
 +                      [MYDOMAIN]\[myuser]@[MYHOST] with the new password interface
 +check_ntlm_password:  mapped user is: [MYDOMAIN]\[myuser]@[MYHOST]
 +Forcing Primary Group to 'Domain Users' for myuser
 +check_ntlm_password: sam authentication for user [myuser] succeeded
 +check_ntlm_password:  authentication for user [myuser] -> [myuser] -> [myuser] succeeded
 +Forcing Primary Group to 'Domain Users' for myuser
 +</code>
 +
 +==== Logon fallito ====
 +
 +È stato usato un account macchina al posto di un account utente:
 +
 +<code>
 +check_ntlm_password:  Checking password for unmapped user
 +                      [MYDOMAIN]\[MYHOST$]@[MYHOST] with the new password interface
 +check_ntlm_password:  mapped user is: [MYDOMAIN]\[nobody]@[MYHOST]
 +check_sam_security: Couldn't find user 'nobody' in passdb.
 +check_ntlm_password:  Authentication for user [MYHOST$] -> [nobody] FAILED with
 +                      error NT_STATUS_NO_SUCH_USER, authoritative=1
 </code> </code>
doc/appunti/linux/tux/samba.1543422718.txt.gz · Last modified: 2018/11/28 17:31 by niccolo