Comment créer un partage Samba accessible en écriture à partir de Windows sans les autorisations 777?

33

J'ai un chemin sur une machine Linux (Debian 8) que je souhaite partager avec des ordinateurs Samba 4 vers Windows (Win7 et 8 dans un domaine). Dans mon smb.confj'ai fait ce qui suit:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
guest ok = yes
public = yes

J'ai un accès en lecture parfait à partir de Windows. Mais pour avoir un accès en écriture, je dois le faire chmod -R 777 /path/to/sharepour pouvoir écrire à partir de Windows.

Ce que je veux, c'est un accès en écriture à partir de Windows après avoir fourni les informations d'identification Linux du propriétaire de Linux /path/to/share.

J'ai déjà essayé:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes

Ensuite, Windows demande des informations d'identification, mais peu importe l'entrée que je sais, c'est toujours refusé.

Quelle est la bonne façon d'obtenir un accès en écriture aux partages Samba à partir d'un ordinateur du domaine Windows sans octroyer 777?

Foo Bar
la source

Réponses:

49

Je recommande de créer un utilisateur dédié pour ce partage et de le spécifier dans force user(voir la documentation) .

Créez un utilisateur ( shareuserpar exemple) et définissez le propriétaire de tout ce qui se trouve dans le dossier de partage sur cet utilisateur:

adduser --system shareuser
chown -R shareuser /path/to/share

Ajoutez ensuite les force userparamètres de masque de permission dans smb.conf:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
public = yes
create mask = 0644
directory mask = 0755
force user = shareuser

Notez que guest okc'est un synonyme de public.

yaegashi
la source
1
J'ai eu un problème similaire et toutes les recherches Google ont montré la mauvaise façon d'utiliser simplement 777. Je voulais 775 pour mon dossier partagé et je voulais que les fichiers soient créés en utilisant mon linux "defaultUser", j'ai aussi utilisé public = yes. Le dossier était 775, le masque create et dir était 775, mais sous Windows, il n'était pas accessible en écriture et je ne pouvais pas comprendre pourquoi. L'ajout a force user = defaultUserfait le travail pour moi.
firepol
Je ne peux pas obtenir que cela fonctionne, chaque fois que j'essaie de partager le répertoire, je reçois juste une fenêtre me disant que je dois donner à "d'autres" la permission d'écrire afin de partager le répertoire.
Mark Kramer
Je l'ai eu, le problème était l'emplacement de smb.conf. La documentation de Google et même sambas indiquait que le fichier devrait être à, /usr/local/samba/libmais en réalité, il est/etc/samba
Mark Kramer
1
@MarkKramer C'est une bonne idée de suivre les documents inclus dans votre distribution Linux spécifique car de nombreuses distributions réorganisent les fichiers pour les adapter au standard FHS (Filesystem Hierarchy Standard) de Linux Foundation. Je recommande de lire et de rechercher les docs fournis avec votre distribution car Google n'est pas toujours la meilleure réponse. Par exemple, vous pouvez obtenir des informations sur une autre version du logiciel. Meilleures salutations.
RobertL
2

Dans les paramètres de partage smb.conf, vous devez spécifier les noms des utilisateurs et / ou des groupes autorisés à écrire sur le partage, à l'aide d'une write list = ...ligne.

Exemple:

[myshare]
...
write list = my_linux_username

Ensuite, vous devrez utiliser la smbpasswdcommande pour configurer un mot de passe pour vous authentifier my_linux_usernamepour Samba:

sudo smbpasswd -a my_linux_username

Cette étape est nécessaire car les mots de passe système standard /etc/shadowentrés sont hachés dans des algorithmes incompatibles avec les algorithmes de hachage de mots de passe utilisés dans le protocole SMB. Lorsqu'un client envoie un paquet d'authentification SMB, il inclut un mot de passe haché. Il ne peut être comparé qu'à un autre hachage de mot de passe utilisant le même algorithme.

(De très vieilles instructions du millénaire précédent peuvent recommander de désactiver le cryptage des mots de passe dans Samba et d’utiliser certains piratages du registre pour permettre à Windows d’émettre des mots de passe non cryptés sur le réseau. Ce conseil est obsolète : ces piratages de registre risquent de ne plus fonctionner dans les versions actuelles de Windows, et autorisez tous ceux qui peuvent surveiller votre trafic réseau à capturer votre mot de passe de manière triviale.)


Il y a encore une chose que vous devrez faire côté client. Lorsque votre système client Windows est associé à un domaine Active Directory et que vous êtes connecté à un compte AD, il préfixe automatiquement tous les noms d'utilisateur non qualifiés avec le nom du domaine AD de l'utilisateur, c'est-à-dire que vous vous authentifiez AD_DOMAIN\your_usernameuniquement your_username.

Si vous êtes connecté avec un compte local (ou si votre système client n'est pas associé à un domaine AD), Windows peut automatiquement préfixer le nom d'utilisateur avec le nom d'hôte du client, sauf si vous spécifiez un autre nom de domaine.

Pour vous connecter avec succès à un serveur Samba autonome à partir d'un client Windows autonome, vous devrez peut-être spécifier votre nom d'utilisateur comme SAMBA_SERVER_HOSTNAME\your_username.

Sinon, Samba verra le nom d'utilisateur comme WINDOWS_CLIENT_HOSTNAME\your_username, conclura qu'il n'a aucun moyen de vérifier les utilisateurs appartenant au domaine nommé WINDOWS_CLIENT_HOSTNAMEet rejettera la connexion.

(Les versions les plus récentes de Samba peuvent comporter une vérification intégrée pour cette situation spécifique, mais elles peuvent néanmoins vous permettre d’y accéder. Mais c’est fondamentalement ainsi que l’authentification SMB fonctionne "à l’envers", et si vous avez besoin d’anciennes versions de Samba , ça pourrait être utile quand même.)

telcoM
la source
1

Je cherchais cela parce que j'étais pressé et que je n'avais même pas le temps de me concentrer sur la création d'utilisateurs, et donc ...

Il suffisait de sortir les données d’une machine debian 9 dès que possible et c’était le moyen le plus rapide auquel j’ai pensé. Si vous voulez éviter de passer des commandes, vous pouvez également le faire, mais il est évidemment déconseillé de le faire, sauf si vous êtes dans une dépêchez .

[mymfolder]
path = /mymfolder
writeable = yes
browseable = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root 
Alpha2k
la source
Et si vous choisissez cette voie, vous pouvez limiter l'accès par hôte à l'aide de l'option "hôtes autorisés". Voir: samba.org/samba/docs/server_security.html
ctorx le