SAMBA: possibili problemi: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
{{SAMBA1}}
{{SAMBA1}}
=== Log ===
=== Log ===
Se nessuna delle soluzioni qui proposte funziona e/o si vogliono più informazioni ricordarsi di controllare i log. Oltre ai soliti <code>/var/log/syslog</code> e <code>/var/log/messages</code>, Samba ha anche una serie di suoi log predefiniti presenti in <code>/var/log/samba</code>.
Se nessuna delle soluzioni qui proposte funziona e/o si vogliono più informazioni ricordarsi di controllare i log. Oltre ai soliti <code>/var/log/syslog</code> e <code>/var/log/messages</code>, Samba ha anche una serie di suoi log predefiniti presenti in <code>/var/log/samba</code>.
=== "Falso" avvio ===
Assicurarsi sempre che il demone di samba sia davvero in esecuzione:
<pre># systemctl status smbd -l</pre>
Se si riceve un output di questo tipo allora il demone è davvero in funzione
<pre>
● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
  Loaded: loaded (/etc/init.d/smbd)
  Active: active (running) since sab 2015-10-03 16:26:10 CEST; 43min ago
  Process: 2213 ExecStop=/etc/init.d/smbd stop (code=exited, status=0/SUCCESS)
  Process: 2218 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/smbd.service
          ├─2227 /usr/sbin/smbd -D
          ├─2234 /usr/sbin/smbd -D
</pre>
Notare la scritta <code>Active: active '''(running)'''</code>.
Se invece si riceve qualcosa del genere allora non è in esecuzione:
<pre>
● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
  Loaded: loaded (/etc/init.d/smbd)
  Active: active (exited) since sab 2015-10-03 11:39:58 CEST; 4min 12s ago
  Process: 1799 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)
</pre>
Notare la scritta <code>Active: active '''(exited)'''</code>.


=== Collegamenti simbolici ===
=== Collegamenti simbolici ===
Riga 15: Riga 43:
</pre>
</pre>


=== NT_STATUS_INVALID_NETWORK_RESPONSE ===
=== Errori restituiti da ''smbclient'' e ''mount'' ===
Qualora si dovesse riceve il seguente messaggio d'errore usando <code>smbclient</code>:
 
<pre>machine WWW.XXX.YYY.ZZZ rejected the negotiate protocol. Error was : NT_STATUS_INVALID_NETWORK_RESPONSE</pre>
==== NT_STATUS_ACCESS_DENIED ====
controllare di aver incluso nel parametro ''hosts allow'' l'indirizzo ''WWW.XXX.YYY.ZZZ'' (o la subnet che lo contiene).
 
Se si riceve l'errore <code>tree connect failed: NT_STATUS_ACCESS_DENIED</code> assicurarsi che:
* l'utente usato esista davvero, per esempio attraverso il comando <code># pdbedit -w -L</code> che dovrebbe restituire qualcosa di simile a:
:<pre>nome_utente:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:[U          ]:AAA-BBBBBBBB:</pre>
:Se l'output è vuoto o l'utente desiderato non compare significa che questo non è stato ancora aggiunto a samba (si veda [[SAMBA: configurazione lato server#Creazione_utenti_e_Autenticazione|come creare un utente]]).
* assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.


=== NT_STATUS_BAD_NETWORK_NAME ===
==== NT_STATUS_BAD_NETWORK_NAME ====
In genere quest'errore di <code>smbclient</code> è dovuto ad una errata indicazione del servizio cui si vuole accedere, per esempio:
In genere quest'errore di <code>smbclient</code> è dovuto ad una errata indicazione del servizio cui si vuole accedere, per esempio:
<pre>
<pre>
Riga 30: Riga 63:
Nel primo caso si sono usati troppi '''/''', nel secondo l'opzione '''-L'''  andava anticipata rispetto all'indirizzo IP e nel terzo caso si è  indicata una risorsa condivisa inesistente. Nell'ultima riga si è usato o un nome al posto dell'indirizzo IP, il che è assolutamente lecito, tuttavia se tale nome è errato oppure il PC in uso non è in grado di risolvere correttamente il nome specificato allora si riceve l'errore in oggetto.
Nel primo caso si sono usati troppi '''/''', nel secondo l'opzione '''-L'''  andava anticipata rispetto all'indirizzo IP e nel terzo caso si è  indicata una risorsa condivisa inesistente. Nell'ultima riga si è usato o un nome al posto dell'indirizzo IP, il che è assolutamente lecito, tuttavia se tale nome è errato oppure il PC in uso non è in grado di risolvere correttamente il nome specificato allora si riceve l'errore in oggetto.


=== NT_STATUS_ACCESS_DENIED ===
==== NT_STATUS_INVALID_NETWORK_RESPONSE ====
 
Qualora si dovesse riceve il seguente messaggio d'errore usando <code>smbclient</code>:
<pre>machine WWW.XXX.YYY.ZZZ rejected the negotiate protocol. Error was : NT_STATUS_INVALID_NETWORK_RESPONSE</pre>
controllare di aver incluso nel parametro ''hosts allow'' l'indirizzo ''WWW.XXX.YYY.ZZZ'' (o la subnet che lo contiene).
 
==== NT_STATUS_IO_TIMEOUT ====
 
Se si riceve il messaggio d'errore <code>protocol negotiation failed: NT_STATUS_IO_TIMEOUT</code> è possibile che smbd non sia in esecuzione, si veda "falso avvio" qui sopra.
 
==== NT_STATUS_CONNECTION_REFUSED ====


Se si riceve l'errore <code>tree connect failed: NT_STATUS_ACCESS_DENIED</code> assicurarsi che:
Se si riceve il messaggio d'errore <code>Connection failed: Error NT_STATUS_CONNECTION_REFUSED</code> è possibile che:
* l'utente usato esista davvero, per esempio attraverso il comando <code># pdbedit -w -L</code>;
* smbd non sia in esecuzione, si veda allora "falso avvio" qui sopra;
* assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.
* ci sia un problema con una connessione di tipo PPP. Se infatti si è configurato una connessione adsl e la corrispondente interfaccia di rete, ad es. ppp0, non è attiva allora può accadere che samba restituisca il succitato errore. Provare dunque ad attivare tale connessione e riprovare a collegarsi alla risorsa condivisa.


=== Schede di rete multiple ===
=== Schede di rete multiple ===

Versione attuale delle 13:56, 15 dic 2019

Guida estesa

Sommario

  1. Lato server
  2. Lato client
  3. Esempi
  4. Troubleshooting
  5. Approfondimenti


Log

Se nessuna delle soluzioni qui proposte funziona e/o si vogliono più informazioni ricordarsi di controllare i log. Oltre ai soliti /var/log/syslog e /var/log/messages, Samba ha anche una serie di suoi log predefiniti presenti in /var/log/samba.

"Falso" avvio

Assicurarsi sempre che il demone di samba sia davvero in esecuzione:

# systemctl status smbd -l

Se si riceve un output di questo tipo allora il demone è davvero in funzione

● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
   Loaded: loaded (/etc/init.d/smbd)
   Active: active (running) since sab 2015-10-03 16:26:10 CEST; 43min ago
  Process: 2213 ExecStop=/etc/init.d/smbd stop (code=exited, status=0/SUCCESS)
  Process: 2218 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/smbd.service
           ├─2227 /usr/sbin/smbd -D
           ├─2234 /usr/sbin/smbd -D

Notare la scritta Active: active (running).

Se invece si riceve qualcosa del genere allora non è in esecuzione:

● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
   Loaded: loaded (/etc/init.d/smbd)
   Active: active (exited) since sab 2015-10-03 11:39:58 CEST; 4min 12s ago
  Process: 1799 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)

Notare la scritta Active: active (exited).

Collegamenti simbolici

Se si hanno dei collegamenti simbolici che puntano a risorse non comprese in quelle dichiarate in Samba e si riceve un errore simile al seguente:

smbd[7407]: check_reduced_name: Bad access attempt: cartella_condivisa is a symlink outside the share path

provare ad aggiungere quanto segue nella sezione globale di smb.conf:

follow symlinks = yes
unix extensions = no
wide links = yes

Errori restituiti da smbclient e mount

NT_STATUS_ACCESS_DENIED

Se si riceve l'errore tree connect failed: NT_STATUS_ACCESS_DENIED assicurarsi che:

  • l'utente usato esista davvero, per esempio attraverso il comando # pdbedit -w -L che dovrebbe restituire qualcosa di simile a:
nome_utente:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:[U          ]:AAA-BBBBBBBB:
Se l'output è vuoto o l'utente desiderato non compare significa che questo non è stato ancora aggiunto a samba (si veda come creare un utente).
  • assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.

NT_STATUS_BAD_NETWORK_NAME

In genere quest'errore di smbclient è dovuto ad una errata indicazione del servizio cui si vuole accedere, per esempio:

$ smbclient ////WWW.XXX.YYY.ZZZ//cartella_condivisa -U nome_utente
$ smbclient WWW.XXX.YYY.ZZZ -L -U nome_utente
$ smbclient //WWW.XXX.YYY.ZZZ/cartella_inesistente -U nome_utente
$ smbclient //nome_server_scoretto/cartella_inesistente -U nome_utente

Nel primo caso si sono usati troppi /, nel secondo l'opzione -L andava anticipata rispetto all'indirizzo IP e nel terzo caso si è indicata una risorsa condivisa inesistente. Nell'ultima riga si è usato o un nome al posto dell'indirizzo IP, il che è assolutamente lecito, tuttavia se tale nome è errato oppure il PC in uso non è in grado di risolvere correttamente il nome specificato allora si riceve l'errore in oggetto.

NT_STATUS_INVALID_NETWORK_RESPONSE

Qualora si dovesse riceve il seguente messaggio d'errore usando smbclient:

machine WWW.XXX.YYY.ZZZ rejected the negotiate protocol. Error was : NT_STATUS_INVALID_NETWORK_RESPONSE

controllare di aver incluso nel parametro hosts allow l'indirizzo WWW.XXX.YYY.ZZZ (o la subnet che lo contiene).

NT_STATUS_IO_TIMEOUT

Se si riceve il messaggio d'errore protocol negotiation failed: NT_STATUS_IO_TIMEOUT è possibile che smbd non sia in esecuzione, si veda "falso avvio" qui sopra.

NT_STATUS_CONNECTION_REFUSED

Se si riceve il messaggio d'errore Connection failed: Error NT_STATUS_CONNECTION_REFUSED è possibile che:

  • smbd non sia in esecuzione, si veda allora "falso avvio" qui sopra;
  • ci sia un problema con una connessione di tipo PPP. Se infatti si è configurato una connessione adsl e la corrispondente interfaccia di rete, ad es. ppp0, non è attiva allora può accadere che samba restituisca il succitato errore. Provare dunque ad attivare tale connessione e riprovare a collegarsi alla risorsa condivisa.

Schede di rete multiple

È possibile che nel caso siano presenti più schede di rete, di cui una o più non configurate, l'accesso al server Samba risulti impedito. Possibili soluzioni sono:

  • Creare un bridge di rete comprendente tutte le schede.
  • Togliere fisicamente le schede di rete non necessarie.
  • Configurare il Bind delle schede di Rete correttamente nel samba.conf aggiungendo:
    interfaces = localhost 192.168.1.0/24
    bind interfaces only = Yes
    Il servizio si presenta sul localhost e sulla "EthX" che è configurata con la classe privata descritta da "interfaces"

Impossibile montare automaticamente le risorse all'avvio

Se si riesce a montare manualmente le risorse remote senza problemi, ma non in automatica all'avvio tramite fstab, provare ad aggiungere alle opzioni della risorsa anche auto, quindi riavviare.
A questo punto eseguire:

# mount -a

Se la risorsa remota viene caricata correttamente è probabile che il problema sia di tipo temporale, ovvero il sistema tenta di montare la risorsa remota prima che l'interfaccia di rete sia correttamente configurata, altrimenti è probabile che ci sia un qualche errore nella relativa riga di fstab.
Nel primo caso se si usa uno strumento grafico come network-manager, il primo tentativo da fare è provare a configurare le interfacce di rete tramite /etc/network/interfaces, quindi riavviare.
Se il problema persiste si hanno ancora alcune opzioni:

  • Aggiungere alla riga di fstab relativa alla risorsa samba l'opzione auto ed inserire nello script /etc/rc.local il comando mount -a. Val la pena notare che non si tratta di una soluzione, ma di un brutale trucco per aggirare il problema (anche se generalmente efficace).
  • Uso di uno script personalizzato che provveda al montaggio delle risorse invece di fstab; si noti in tal senso che lo strumento grafico wicd permette di associare script a particolari eventi.
  • Sostituire il caricamento automatico all'avvio tramite fstab con l'utilizzo di autofs, uno strumento che permette il caricamento dinamico delle risorse remote su imput dell'utente.