# [SAMBA] "failed to setup guest info"

## Carlino

Bonjour,

Samba ne fonctionne pas correctement sur ma Gentoo : pas de visibilité du réseau windows. Côté windows, le serveur est visible mais non accessible. Le diallogue windows / Debian fonctionne, donc pas de soucis côté windosw, (ça arrive...) J'ai suivi le guide avec attention. 

le log est plutôt bavard:

```

# cat /var/log/samba/log.smbd

[2007/11/11 23:42:32, 0] smbd/server.c:main(847)

  smbd version 3.0.24 started.

  Copyright Andrew Tridgell and the Samba Team 1992-2006

[2007/11/11 23:42:32, 1] param/loadparm.c:lp_do_parameter(3426)

  WARNING: The "printer admin" option is deprecated

[2007/11/11 23:42:32, 1] param/loadparm.c:lp_do_parameter(3426)

  WARNING: The "printer admin" option is deprecated

[2007/11/11 23:42:32, 0] printing/print_cups.c:cups_cache_reload(85)

  Unable to connect to CUPS server localhost - Famille d'adresses non supportée par le protocole

[2007/11/11 23:42:32, 0] printing/print_cups.c:cups_cache_reload(85)

  Unable to connect to CUPS server localhost - Famille d'adresses non supportée par le protocole

[2007/11/11 23:42:32, 0] passdb/pdb_interface.c:guest_user_info(295)

  guest_user_info: Unable to locate guest account [samba]!

[2007/11/11 23:42:32, 0] smbd/server.c:main(960)

  ERROR: failed to setup guest info.

```

J'ai l'impression que le problème vient de "smbd/server.c:main(960) ERROR: failed to setup guest info".

Mon fichier de conf. est ordinaire, renseigné à partir du guide:

```
 # cat /etc/samba/smb.conf

[global]

workgroup = Mylan

server string = Samba Server %v

printcap name = cups

printing = cups

load printers = yes

log file = /var/log/samba/log.%m

max log size = 50

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

interfaces = lo eth0

bind interfaces only = yes

hosts allow = 127.0.0.1 192.168.0.0/5

hosts deny = 0.0.0.0/0

security = share

guest account = samba

guest ok = yes

#vfs object = vscan-clamav

#vscan-clamav: config-file = /etc/samba/vscan-clamav.conf

[print$]

comment = Pilotes d'impression

path = /etc/samba/printer # Ce chemin contient la structure des pilotes

guest ok = yes

browseable = yes

read only = yes

write list = carlino,root

[HPPhotosmart7260]

comment = HP Photosmart 7260 Network Printer

printable = yes

path = /var/spool/samba

public = yes

guest ok = yes

printer admin = carlino,root

[printers]

comment = All Printers

browseable = no

printable = yes

writable = no

public = yes

guest ok = yes

path = /var/spool/samba

printer admin = carlino,root

[public]

comment = Public Files

browseable = yes

public = yes

create mode = 0766

guest ok = yes

path = /home/samba/public

```

Des idées ? merci

----------

## geekounet

Salut !

 *Carlino wrote:*   

> Des idées ? merci

 

Mettre ton titre du topic en conformité avec les conventions de notre forum s'il te plait. Merci  :Wink: 

----------

## blasserre

```
guest account = samba

```

question à 0.001 cent : t'as un user samba sur ta machine ?

----------

## Carlino

ah ouais... merci blasserre ! En dégageant cette info, le serveur samba ne produit plus l'erreur mentionnée:

```
[2007/11/13 20:28:17, 0] smbd/server.c:main(847)

  smbd version 3.0.24 started.

  Copyright Andrew Tridgell and the Samba Team 1992-2006

[2007/11/13 20:28:17, 1] param/loadparm.c:lp_do_parameter(3426)

  WARNING: The "printer admin" option is deprecated

[2007/11/13 20:28:17, 1] param/loadparm.c:lp_do_parameter(3426)

  WARNING: The "printer admin" option is deprecated

[2007/11/13 20:28:17, 0] printing/print_cups.c:cups_cache_reload(85)

  Unable to connect to CUPS server localhost - Address family not supported by protocol

[2007/11/13 20:28:17, 0] printing/print_cups.c:cups_cache_reload(85)

  Unable to connect to CUPS server localhost - Address family not supported by protocol

[2007/11/13 20:34:20, 0] printing/print_cups.c:cups_queue_get(737)

  Unable to connect to CUPS server localhost - Address family not supported by protocol

[2007/11/13 21:47:21, 0] printing/print_cups.c:cups_cache_reload(85)

  Unable to connect to CUPS server localhost - Address family not supported by protocol

[2007/11/13 21:47:21, 0] printing/print_cups.c:cups_cache_reload(85)

  Unable to connect to CUPS server localhost - Address family not supported by protocol

```

Pas mal de WARNING cependant. je vais creuser du côté de Cups. Le réseaux n'est cependant toujours pas visible.

En bref:

```
 $ /usr/bin/testparm

Load smb config files from /etc/samba/smb.conf

Processing section "[print$]"

Processing section "[HPPhotosmart7260]"

WARNING: The "printer admin" option is deprecated

Processing section "[printers]"

WARNING: The "printer admin" option is deprecated

Processing section "[public]"

Loaded services file OK.

WARNING: You have some share names that are longer than 12 characters.

These may not be accessible to some older clients.

(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

[global]

        workgroup = MYLAN

        server string = Samba Server %v

        interfaces = lo, eth0

        bind interfaces only = Yes

        security = SHARE

        log file = /var/log/samba/log.%m

        max log size = 50

        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

        printcap name = cups

        guest ok = Yes

        hosts allow = 127.0.0.1, 192.168.0.0/5

        hosts deny = 0.0.0.0/0

[print$]

        comment = Pilotes d'impression

        path = /etc/samba/printer # Ce chemin contient la structure des pilotes

        write list = carlino, root

[HPPhotosmart7260]

        comment = HP Photosmart 7260 Network Printer

        path = /var/spool/samba

        printer admin = carlino, root

        printable = Yes

[printers]

        comment = All Printers

        path = /var/spool/samba

        printer admin = carlino, root

        printable = Yes

        browseable = No

[public]

        comment = Public Files

        path = /home/samba/public

        create mask = 0766
```

```
# smbclient -L localhost

Password: 

Domain=[MYLAN] OS=[Unix] Server=[Samba 3.0.24]

        Sharename       Type      Comment

        ---------       ----      -------

        print$          Disk      Pilotes d'impression

        HPPhotosmart7260 Printer   HP Photosmart 7260 Network Printer

        public          Disk      Public Files

        IPC$            IPC       IPC Service (Samba Server 3.0.24)

Domain=[MYLAN] OS=[Unix] Server=[Samba 3.0.24]

        Server               Comment

        ---------            -------

        LITTLEINDIAN         Samba Server 3.0.24

        ULYSSE               

        Workgroup            Master

        ---------            -------

        MYLAN                LITTLEINDIAN

```

à suivre ...

----------

## blasserre

 *Carlino wrote:*   

> ah ouais... merci blasserre ! En dégageant cette info, le serveur samba ne produit plus l'erreur mentionnée

 

mais là tu n'as pas résolu ton problème ; dans ta conf tu autorises les accès invité (sans auth) 

seulement samba a besoin de savoir quel user linux est utilisé quand un accès 

se fait via la compte invité (ce à quoi sert guest account)

donc soit tu crées un user samba et tu remets la ligne que tu viens de virer

soit tu utilise un compte sans droit ni shell déjà existant (au hasard nobody)

(lol, j'ai du faire un useradd __help un jour.... boulay)

soit tu t'autentifies tout le temps....

----------

## Carlino

lo pô comprris...   :Embarassed: 

 *Quote:*   

> soit tu utilises un compte sans droit ni shell déjà existant (au hasard nobody)

 

guest account = nobody ?

ou  alors je renseigne cette valeur avec un username existant ?

----------

## blasserre

 *Carlino wrote:*   

> lo pô comprris...  
> 
>  *Quote:*   soit tu utilises un compte sans droit ni shell déjà existant (au hasard nobody) 
> 
> guest account = nobody ?
> ...

 

le principe est le suivant : si tu comptes diffuser des fichiers à n'importe qui sur ton samba 

il te faut mettre guest ok = yes sur le partage

à partir de ce moment le partage sera accessible sans demande de mot de passe,

mais en interne (sur ton système de fichier) samba doit utiliser un utilisateur local pour lire les fichiers

c'est là qu'est l'utilité de guest account = xxxx avec cette ligne, lors d'un accès anonyme à ton partage samba,

samba utilisera les droits de xxxx sur le système de fichiers

je disais nobody, car c'est un bon exemple d'utilisateur pour cet usage

il est (si mes souvenirs sont bons) créé par apache et utilisé pour accéder aux fichers du serveur web 

(pour cela on lui donne un accès en lecture sur ces fichiers)

et uniquement pour ça, quand tu regardes la ligne correspondante dans /etc/passwd :

```
nobody:x:65534:65534:nobody:/:/bin/false
```

tu vois que cet utilisateur n'a pas de shell de login (enfin il en a un : /bin/false, mais qui ne marche pas)

un éventuel script kid ne pourra donc pas l'utiliser à des fins pernicieuses

en conclusion, soit tu vires le guest ok, soit si tu en as réellement besoin et tu crées un user samba

avec un shell = /bin/false et les bons droits sur ton filesystem

----------

## Carlino

merci de tes précisions blasserre. Voilà où j'en suis:

 *Quote:*   

> le principe est le suivant : si tu comptes diffuser des fichiers à n'importe qui sur ton samba
> 
> il te faut mettre guest ok = yes sur le partage
> 
> à partir de ce moment le partage sera accessible sans demande de mot de passe, 

 

C'est le cas : je souhaite que des répertoires en partage sous winXP soient visibles, accessibles depuis Gentoo, et réciproquement, en lecture et écriture, sur mon réseau local. 

Etat des lieux : depuis winXP, "\\nom_serveur\public" est visible, mais je n'ai pas de droit en écriture, ce qui parait cohérent, mais pas pratique:

```
# ls -l /home/samba/

total 4

drwxr-xr-x 2 root root 4096 mai  8  2007 public
```

alors que la doc gentoo parle d'un accès en lecture et écriture:

 *Quote:*   

> # Nous créons un nouveau partage sur lequel nous pouvons
> 
> # lire/écrire à partir de n'importe où. C'est un peu comme un partage
> 
> # temporaire public, tout le monde peut faire ce qu'il veut ici
> ...

 

Donc là aussi j'ai dû rater qque chose...

En regardant /etc/samba/samba.conf.example, j'ai trouvé ça:

```
# The following two entries demonstrate how to share a directory so that two

# users can place files there that will be owned by the specific users. In this

# setup, the directory should be writable by both users and should have the

# sticky bit set on it to prevent abuse. Obviously this could be extended to

# as many users as required.

;[myshare]

;   comment = Mary's and Fred's stuff

;   path = /usr/somewhere/shared

;   valid users = mary fred

;   public = no

;   writable = yes

;   printable = no

;   create mask = 0765

```

ce qui correspond à ce que je voudrais : des répertoires sur Gentoo, visibles, accessibles et writables depuis WinXp ; donc, j'ai ajouté ça à mon smb.conf:

```
[myshare]

comment = Carlino's stuff

path = /media/Images

valid users = Carlino

public = no

writable = yes

printable = no

create mask = 0765

```

myshare est visible depuis WinXp au même titre que public; mais un password m'est demandé pour y accéder.... je n'ai pas définit de password à aucun moment... Je suppose que c'est une info gérée par Samba. Comment dois-je faire pour lui fournir cette info ?

J'ai ajouté à tout hasard cette info dans smb.conf : netbios name = littleindian... mais j'ai l'impression que cette info est facultative, sauf pour précisé le nom du serveur.

Bien sûr, j'ai suivi tes indications:

 *Quote:*   

> mais en interne (sur ton système de fichier) samba doit utiliser un utilisateur local pour lire les fichiers
> 
> c'est là qu'est l'utilité de guest account = xxxx avec cette ligne, lors d'un accès anonyme à ton partage samba,
> 
> samba utilisera les droits de xxxx sur le système de fichiers

 

J'ai essayé "nobody", puis mon username sur Gentoo puisque "samba utilisera les droits de xxxx sur le système de fichiers", sans succès. 

 *Quote:*   

> en conclusion, soit tu vires le guest ok, soit si tu en as réellement besoin et tu crées un user samba
> 
> avec un shell = /bin/false et les bons droits sur ton filesystem

  Donc, j'ai vraiment besoin de "guest = ok", pour le partage de fichier sans restriction et j'ai renseigné guest account = nobody.... A moins que.... quand tu parles d' "un user samba", il s'agisse d'un user propre à Samba, et nom d'un user Linux nommé Samba, (pffouu, je nage ...). Mais bon, utiliser nobody aurait dû faire l'affaire dans ce cas ?

Dernière info...

Dans cette même doc au paragraphe "Monter un partage Windows ou Samba sous GNU/Linux":

 *Quote:*   

> À présent, il est temps de configurer notre noyau pour supporter cifs.
> 
> .....
> 
> Une fois que les modules sont chargés, il est possible de monter un partage Windows ou Samba. Utilisez mount comme expliqué ci-dessous :
> ...

 

Et j'ai l'impression que je n'ai pas configurer ce module dans le noyau, en tout cas je ne m'en souviens pas; j'ai tenté de chercher une trace de cifs dans /etc/genkernel.conf, mais il ne doit pas s'agir du bon fichier. En tout cas, pas de cifs. J'ai "modprobé" cifs dans l'éventualité de sa présence en atnt que module au noveau du kernel mais:

```
lsmod | grep cifs
```

 ne retourne rien.... Mon problème viendrait-il de là ?

```
mount -t cifs //littleindian/public /mnt/public

mount: type erroné de système de fichiers, option erronée, super bloc erroné sur //littleindian/public,

       codepage manquante ou autre erreur

# dmesg | tail

CIFS VFS: cifs_mount failed w/return code = -22

 CIFS VFS: cifs_mount failed w/return code = -22

```

désolé pour ce long post, mais comme tu vois, il y a pas mal de points qui me sont obscurs

----------

## blasserre

 *Carlino wrote:*   

> Etat des lieux : depuis winXP, "\\nom_serveur\public" est visible, mais je n'ai pas de droit en écriture, ce qui parait cohérent, mais pas pratique:
> 
> ```
> # ls -l /home/samba/
> 
> ...

 

la réponse est sous tes yeux : ton répertoire local l'est accessible en écriture qu'à root, il faut donc donner les droits d'écriture à 

l'user que tu utilises, il y a deux chose différentes a faire : dire a samba d'autoriser l'écriture et autoriser l'user utilisé par samba a écrire dans le répertoire

 *Carlino wrote:*   

> j'ai ajouté ça à mon smb.conf:
> 
> ```
> [myshare]
> 
> ...

 

normal la ligne valid user restreint l'accès au répertoire à l'user Carlino, tu dois donc créer un mot de passe samba à cet utilisateur (oui je sais ça se complique... mais smbpasswd -a Carlino est ton ami)

 *Carlino wrote:*   

> J'ai essayé "nobody", puis mon username sur Gentoo puisque "samba utilisera les droits de xxxx sur le système de fichiers", sans succès. 

 

regarde dans ton /etc/passwd si tu as un user samba, si tu n'en a pas crées en un sans shell (voir mes précédents posts) et donne lui les droits en lecture et écriture sur ton répertoire public -> /home/samba/  

 *Carlino wrote:*   

> Donc, j'ai vraiment besoin de "guest = ok", pour le partage de fichier sans restriction et j'ai renseigné guest account = nobody.... A moins que.... quand tu parles d' "un user samba", il s'agisse d'un user propre à Samba, et nom d'un user Linux nommé Samba, (pffouu, je nage ...). Mais bon, utiliser nobody aurait dû faire l'affaire dans ce cas ?

 

comme dit plus haut crées l'user samba (un user linux nommé samba) et mets guest account = samba (fais gaffe à la casse)

 *Carlino wrote:*   

> Dernière info...
> 
> Dans cette même doc au paragraphe "Monter un partage Windows ou Samba sous GNU/Linux":
> 
>  *Quote:*   À présent, il est temps de configurer notre noyau pour supporter cifs. 
> ...

 

tu peux voir ça en cherchant dans le fichier /proc/config.gz s'il existe (zgrep CIFS /proc/config.gz) sinon dans /usr/src/linux/.config si tu as compilé ton noyau toi même

 *Carlino wrote:*   

> désolé pour ce long post, mais comme tu vois, il y a pas mal de points qui me sont obscurs

 

c'est surtout moi qui suis désolé de ne pas être très clair

----------

## Carlino

1.

```
# grep CIFS /usr/src/linux/.config

CONFIG_CIFS=m

# CONFIG_CIFS_STATS is not set

# CONFIG_CIFS_WEAK_PW_HASH is not set

CONFIG_CIFS_XATTR=y

CONFIG_CIFS_POSIX=y

# CONFIG_CIFS_DEBUG2 is not set

# CONFIG_CIFS_EXPERIMENTAL is not set
```

donc de ce côté là pas de problème.

 *Quote:*   

> normal la ligne valid user restreint l'accès au répertoire à l'user Carlino, tu dois donc créer un mot de passe samba à cet utilisateur (oui je sais ça se complique... mais smbpasswd -a Carlino est ton ami) 

 

ça, Ok, et j'ai remplacé "Carlino" par "carlino", qui est le username sous WinXP et sous Gentoo. J'ai modifié la partie [myshare]:

```
[myshare]

comment = Carlino's stuff

path = /media/Images

valid users = carlino

public = no

read only = yes

write list = carlino

#writable = yes

printable = no

create mask = 0765
```

La fenêtre de connexion à partir de WinXP me demande toujours un passwd, normal, mais je ne peux changer le "nom d'utilisateur" qui est par défaut "Littleindian\invité", alors que ce devrait être Littleindian\carlino" me semble-t-il. Je suppose que je pourrais balancer un "chmod 777 -R /media/Images", mais c'est un peu bourrin, et il doit y avoir moyen de faire autrement. "create mask = 0765" n'aurait-elle pas pour fonction de gérer les droits justement ? Je vais regarder ça...

2.

 *Quote:*   

> la réponse est sous tes yeux : ton répertoire local l'est accessible en écriture qu'à root, il faut donc donner les droits d'écriture à
> 
> l'user que tu utilises, il y a deux chose différentes a faire : dire a samba d'autoriser l'écriture et autoriser l'user utilisé par samba a écrire dans le répertoire 

 

J'ai changé les droits sur le rep /home/samba/public :

normalement chmod 765 devrait autoriser le user unix à écrire dans le rep.

```
# ls -l /home/samba/

total 4

drwxrw-r-x 2 root root 4096 nov 17 00:19 public

~ $ touch /home/samba/public/toto

touch: ne peut faire un touch sur `/home/samba/public/toto': Permission non accordée

# chmod 766 /home/samba/public

~ $ touch toto /home/samba/public

touch: ne peut faire un touch sur `/home/samba/public/toto': Permission non accordée

```

chmod 775 m'autorise à écrire sur /home/samba/public/, en tant que user unix... rwx... w pour "write", pourquoi "executable" autorise-t-il l'écriture ? Va falloir que je revois la gestion des droits... Comment m'assurer que le user carlino est dans le bon groupe, avec les bons droits... autre débat

En tout cas, le user carlino de WinXP ne peut tjrs pas écrire dans /public, sauf quand :

```
# chmod 777 /home/samba/public/

ls -l /home/samba/

total 4

drwxrwxrwx 2 root root 4096 nov 17 00:19 public

```

mais ce n'est pas satisfaisant, parce que ça veut dire que tout le monde le peut, et je voudrais limiter ça au user carlino de WinXP et Gentoo.... Je me figurais que les variables "writable = yes" et "public = yes" devaient définir la politique d'écriture et d'accès.

Je rebascule donc sur du chmod 755, comme indiqué dans la doc

3.

J'ai tenté de résoudre ça (avant le chmod 777) en dégageant guest account = carlino guest ok = yes, sans amélioration. Je n'ai pas créé de user linux nommé "samba", puisque le test avec un user unix existant, (carlino) ne solutionne pas le pblm, un autre user avec un nom différent ne devrait pas faire mieux.

Précisions : /media/Images est en ntfs(3.1). J'y écris, lis et exécute sans pblm en tant que user unix

J'ai vu qu'il existe un GUI pour gérer samba : SWAT, mais malheureusement : 

```
# emerge -pv swat

These are the packages that would be merged, in order:

Calculating dependencies -

emerge: there are no ebuilds to satisfy "SWAT".

```

Ben, je vais regarder dans cette direction quand même, un p'tit GUI pour gérer samba. J'ai vu swat en démo, sur un serveur HP... pas mal; dommage.

Merci de ton temps blasserre ;  il y a surement encore des choses que je n'ai pas saisies, mais là je suis un peu las.... Si tu es encore inspiré n'hésite pas.

----------

