web-dev-qa-db-fra.com

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

J'ai un chemin sur une machine Linux (Debian 8) que je souhaite partager avec Samba 4 sur des ordinateurs Windows (Win7 et 8 dans un domaine). Dans mon smb.conf J'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 depuis Windows. Mais pour avoir un accès en écriture, je dois faire chmod -R 777 /path/to/share pour pouvoir y écrire depuis 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 Linux de /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 ce que j'entre, il est toujours refusé.

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

39
Foo Bar

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

Créez un utilisateur (shareuser par exemple) et définissez le propriétaire de tout dans le dossier de partage sur cet utilisateur:

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

Puis ajouter force user et les paramètres du masque d'autorisation 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 ok est un synonyme de public.

55
yaegashi

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

Exemple:

[myshare]
...
write list = my_linux_username

Vous devrez ensuite utiliser la commande smbpasswd pour configurer un mot de passe pour authentifier my_linux_username pour Samba:

Sudo smbpasswd -a my_linux_username

Cette étape est nécessaire car les mots de passe système standard dans /etc/shadow sont hachés dans des algorithmes incompatibles avec les algorithmes de hachage de mot de passe utilisés dans le protocole SMB. Lorsqu'un client envoie un SMB paquet d'authentification, 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.

(Des instructions très, très anciennes du millénaire précédent peuvent recommander de désactiver le cryptage des mots de passe dans Samba et d'utiliser certains hacks de registre pour permettre à Windows d'émettre des mots de passe non cryptés vers le réseau. Ce conseil est obsolète: ces hacks de registre peuvent ne fonctionne plus dans les versions actuelles de Windows et permet à quiconque peut surveiller votre trafic réseau de capturer trivialement votre mot de passe.)


Il y a encore une chose que vous devrez peut-être faire côté client. Lorsque votre système client Windows est joint à un domaine Active Directory et que vous êtes connecté avec 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 authentifierez en tant que AD_DOMAIN\your_username, pas seulement your_username.

Si vous êtes connecté avec un compte local (ou si votre système client n'est pas joint à un domaine AD), Windows peut automatiquement préfixer le nom d'utilisateur avec nom d'hôte 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, concluez qu'il n'a aucun moyen de vérifier les utilisateurs appartenant au domaine nommé WINDOWS_CLIENT_HOSTNAME, et rejettera la connexion.

(Les versions plus récentes de Samba mai ont une vérification intégrée pour cette situation spécifique, et elles peuvent néanmoins vous permettre d'y accéder. Mais c'est essentiellement comment SMB fonctionne ") sous le capot ", et si vous avez besoin de faire face à d'anciennes versions de Samba, cela pourrait encore être utile.)

2
telcoM

Configuration de travail de base dans mon cas (en utilisant la fonction d'invité SAMBA, les droits d'accès/myfolder conviennent à [your_SAMBA-Unix_share_user_account]):

[global]
guest account = [your_SAMBA-Unix_share_user_account]

[mymfolder]
path = /myfolder
browseable = yes
read only =no
guest ok =yes

Il est important de déconnecter tout autre lecteur mappé de la machine Windows sur ce serveur SAMBA car il semble qu'il ne soit pas autorisé d'avoir plus d'un seul utilisateur connecté à la fois.

1
Artur Chęciński

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

Je n'ai eu qu'à retirer 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 sauter des commandes, vous pouvez également le faire mais ce n'est évidemment pas recommandé = sauf si vous êtes pressé.

[mymfolder]
path = /mymfolder
writeable = yes
browseable = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root 
1
Alpha2k