SAMBA: possibili problemi: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
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''
 
==== NT_STATUS_INVALID_NETWORK_RESPONSE ====
 
Qualora si dovesse riceve il seguente messaggio d'errore usando <code>smbclient</code>:
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>
<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).
controllare di aver incluso nel parametro ''hosts allow'' l'indirizzo ''WWW.XXX.YYY.ZZZ'' (o la subnet che lo contiene).


=== 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 61:
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_ACCESS_DENIED ====


Se si riceve l'errore <code>tree connect failed: NT_STATUS_ACCESS_DENIED</code> assicurarsi che:
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>;
* l'utente usato esista davvero, per esempio attraverso il comando <code># pdbedit -w -L</code>;
* assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.
* assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.
==== 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 il messaggio d'errore <code>Connection failed: Error NT_STATUS_CONNECTION_REFUSED</code> è 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 sambra restituisca il succitato errore. Provare dunque ad attivare tale connessione e riprovare a connettersi.


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

Versione delle 15:22, 3 ott 2015

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_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_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_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;
  • assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.

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 sambra restituisca il succitato errore. Provare dunque ad attivare tale connessione e riprovare a connettersi.

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.