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
Last revisionBoth sides next 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:33] – [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>
 +
 +===== 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 427:
 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 458:
 <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.txt · Last modified: 2021/05/19 12:46 by niccolo