Configuration d'un partage Samba public anonyme accessible via Windows 7 et XBMC

9

Je devrais donc commencer par dire que j'ai fait cela avec succès il y a moins d'une semaine et je n'ai eu aucun problème, mais j'ai depuis reformaté et reconfiguré mon serveur et maintenant j'ai du mal à me rappeler comment je l'ai fait.

Voici ce que j'avais avant et ce que j'essaie d'accomplir à nouveau. J'avais une part de samba publique sur le serveur Ubuntu. N'importe qui sur mon réseau peut accéder au partage et à son contenu en tapant simplement \ Hostname. Aucun mot de passe nécessaire. Les utilisateurs qui ne faisaient pas partie du groupe de travail du partage avaient un accès en lecture, mais les utilisateurs qui faisaient partie du groupe de travail avaient un accès en lecture / écriture. (Windows 7)

Maintenant, si j'essaye de me connecter à \ Hostname, on me demande un nom d'utilisateur et un mot de passe. Si j'entre dans l'un pw, j'obtiens un accès complet mais je ne devrais pas avoir à le faire; mes paramètres actuels sont ...

security = user
map to guest = bad user

[Shares]
path = /home/shares
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes

Je tire mes cheveux sur celui-ci. Aucune suggestion?

ÉDITER:

Ugh, cela me donne tellement de mal. Je suis si proche.

Voici ce que j'ai.

Je peux accéder au partage à partir de Windows 7 en démarrant et en tapant \ Hostname \ Sharename mais je suis invité à entrer un nom d'utilisateur et un mot de passe. Je ne peux pas le laisser vide cependant car il utilisera mon groupe de travail comme domaine; donc j'entre \ pour le nom d'utilisateur pour l'effacer et me connecter avec un nom d'utilisateur et un mot de passe vierges. Super maintenant, je peux accéder aux fichiers dans le partage.

Une fois que j'y suis, la configuration du groupe de travail fonctionne correctement. Si je suis sur un ordinateur avec le WORKGROUP par défaut, je peux lire et exécuter; un ordinateur de mon groupe de travail à domicile peut lire, écrire et exécuter. Donc ça marche.

Le problème est qu'il ne devrait pas du tout demander un mot de passe. Il devrait être totalement public pour quiconque sur le réseau. J'essaie de le partager avec XBMC et il n'apparaît même pas sous smb dans le gestionnaire de fichiers. Je ne peux pas y accéder manuellement depuis XBMC non plus. Je reçois une erreur de connexion refusée.

Tirer toujours les cheveux dessus. Le pire, c'est la première fois que je l'ai fait il y a environ une semaine, j'ai passé environ 30 minutes dessus et cela a parfaitement fonctionné. Maintenant, j'ai probablement passé au moins 4 heures et cela ne fonctionne toujours pas.

Testparm:

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = FELLOWSHIP
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No
        wins support = Yes
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[Shares]
        path = /home/shares
        read only = No
        guest ok = Yes

MISE À JOUR: Donc, le partage est maintenant disponible sur mon réseau quel que soit le groupe de travail. Tout utilisateur Windows qui se connecte à mon réseau peut voir le NAS sous Netowork et y accéder. La clé était de définir la sécurité sur security = share. Je sais, c'est obsolète, mais cela fonctionne et security = user et mapper à user = bad user ne fonctionnait pas pour moi.

Quoi qu'il en soit, il semble maintenant que toute personne qui se connecte au partage obtienne les autorisations globales Unix pour le répertoire, ce qui est gérable, mais je veux que les utilisateurs qui sont joints au groupe de travail spécifié dans smb.conf obtiennent les autorisations de groupe Unix.

De cette façon, je peux définir le répertoire sur 775 et je pourrai écrire car je suis joint au groupe de travail mais les autres utilisateurs ne peuvent que lire et exécuter.

George Spake
la source
Vous devriez pouvoir mapper les utilisateurs du groupe de travail pour obtenir des autorisations spécifiques avec un fichier de mappage de nom d'utilisateur: samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

Réponses:

8

Je suis tombé sur ce fil sur les forums Ubuntu et j'ai pensé que cela pourrait aider. Il explique les étapes qui se produisent dans les coulisses:

Dans Windows, le nom d'utilisateur et le mot de passe du client sont automatiquement envoyés lorsqu'il recherche des partages - cela se fait à l'insu de l'utilisateur. Cela oblige Samba à gérer les informations d'identification envoyées même s'il s'agit d'un partage invité qui ne nécessite aucune authentification.

Lorsque ce nom d'utilisateur est transmis, Samba recherche dans la base de données de mots de passe de cet utilisateur:

  • S'il n'y a pas de correspondance avec le nom d'utilisateur, l'utilisateur client est étiqueté "Bad User" et converti (mappé) en compte invité qui est par défaut "nobody".

  • S'il trouve une correspondance avec le nom d'utilisateur et qu'il existe un mot de passe samba qui correspond à celui envoyé par le client Windows, l'utilisateur Windows y accède automatiquement, mais pas en tant qu'utilisateur anonyme, c'est pourquoi vous devez ajouter "force user = nobody" à votre définition de partage.

  • S'il trouve une correspondance avec le nom d'utilisateur mais que le mot de passe samba ne correspond pas exactement au mot de passe qui est automatiquement envoyé par le client Windows, vous serez invité à entrer un mot de passe, même pour un partage invité.

Essayez d'ajouter force user = nobodyà votre définition de partage et voyez si cela le fait.

Modifier le 20/02/2013:

Renvoie-t-il testparmun code de sortie autre que zéro? Tout de même, j'irais de l'avant et donnerais à cette zone de la configuration un bon aperçu. De plus, je ne sais pas à quel point smb.conf est sensible à la casse, mais chaque exemple que je vois (par exemple) map to guest = Bad Usera le B et le U en majuscule. Consultez les pages de manuel de Samba pour les options que vous utilisez et vérifiez tout.

Aaron
la source
Hé Bryce, merci d'avoir répondu. J'ai réussi à faire un peu de progrès depuis ma question initiale mais j'ai toujours essentiellement le même problème. J'ai réussi à obtenir mon partage (je l'appelle Partages) configuré de sorte que n'importe qui sur le groupe de travail, défini dans les paramètres globaux dans smb.conf, puisse y accéder - Aucun mot de passe nécessaire. Suite dans le prochain commentaire ...
George Spake
Voici les paramètres du partage: [Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes si j'ajoute, force user = nobodyil se casse et je ne peux pas accéder au partage du tout. Voici où ça devient bizarre cependant; quand j'exécute testparm, il se vide [Shares] path = /home/shares read only = no guest ok = yesDonc, pour une raison quelconque, c'est comme s'il ne voyait pas les définitions publiques, accessibles en écriture, disponibles et consultables. Serait-ce un indicateur de la position du problème?
George Spake
@GeorgeSpake édition faite ...
Aaron
1
Je pense que testparm crache des trucs de cette façon. Tout est en minuscules dans le fichier conf. J'ai également découvert, et je dois le vérifier, que testparm ne vide que les définitions non par défaut, ce qui expliquerait pourquoi certains résultats sont omis.
George Spake
La récente mise 4.3.11+dfsg-0ubuntu0.14.04.3à jour de samba sur Ubuntu 14.04 a cassé ma part publique, force user = nobodyest juste le correctif dont j'avais besoin pour ramener la part publique
Antony
7

C'est ainsi qu'OpenElec est configuré. Devrait faire ce que vous demandez. (même si c'est un an plus tard ... peut-être que cela aidera le suivant) Ajustez simplement les paramètres de partage selon vos besoins.

[global]
  server string = YOURSERVERNAME
  workgroup = WORKGROUP
  netbios name = %h
  security = share
  guest account = root
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
  smb ports = 445
  max protocol = SMB2
  min receivefile size = 16384
  deadtime = 30
  os level = 20
  mangled names = no
  syslog only = yes
  syslog = 2
  name resolve order = lmhosts wins bcast host
  preferred master = auto
  domain master = auto
  local master = yes
  printcap name = /dev/null
  load printers = no
  browseable = yes
  writeable = yes
  printable = no
  encrypt passwords = true
  enable core files = no
  passdb backend = smbpasswd
  smb encrypt = disabled
  use sendfile = yes

[share]
comment = Share
path = /share
available = yes
browsable = yes
writable = yes
public = yes
Ken
la source
Merci pour cet ajout! J'ai eu du mal à obtenir un partage public avec Windows 8.1, ces paramètres ont fait l'affaire.
davidmdem
13
URGH! "compte invité = root". Cela signifie que les comptes invités sont mappés sur root, c'est-à-dire qu'ils ont des autorisations illimitées pour faire quoi que ce soit. SOYEZ TRÈS PRUDENT! DES DRAGONS À L'AVANCE!
DanielSmedegaardBuus
0

Étant donné que la recherche Google nous amène ici et qu'il n'y a pas de réponse claire, je l'ai résumé.

Vous trouverez ci-dessous les conditions requises pour vous assurer que les clients SMB ne demanderont pas le nom d'utilisateur et le mot de passe lors de l'accès à votre serveur Samba:

  1. Ajoutez guest account = <owner-of-your-shares>sous une [global]section. Il est important que le compte propriétaire de vos actions y ait accès. Si vous ne le faites pas, Samba supposera que le compte invité est un nobodyutilisateur qui a peu de chances d'avoir accès aux données de votre partage.

    Alternativement, vous pouvez spécifier force user = <owner-of-your-share>sous votre [shareXYZ]bloc.

  2. Assurez - vous que votre [shareXYZ]a guest ok = yes.

    Défini browsable = yesmais il est généralement hérité de [global]et est défini yespar défaut.

Ensuite, probablement security = userdevrait également être défini (c'est par défaut lorsque vous n'avez pas Active Directory défini dans votre environnement). Cependant, je ne suis pas sûr que ce drapeau soit requis car je n'ai pas de DA dans mon environnement.

Bien sûr, si vous voulez que l' nobodyutilisateur travaille, alors vous pouvez simplement chown -Rh 65534:65534 /yourshare, après cela, tout ira bien avec le seul paramètre guest ok = yessous votre [shareXYZ].

Notez que la définition rwxde others( chmod o+rwx /yourshare) n'a pas laissé Samba avec son nobodyutilisateur dans le partage. J'ai vérifié cela avec strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>. Samba ignore probablement les autorisations définies pour le others? Pas certain.

Andrey Arapov
la source
0

Ça marche pour moi en 30 secondes

Source: https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server

[global]

    map to guest = Bad User

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

    log level = 1

[client]

    # This share allows anonymous (guest) access

    # without authentication!

    path = /srv/samba/guest/

    read only = no

    guest ok = yes
Gustavo Paredes
la source