web-dev-qa-db-fra.com

Méthode recommandée pour le répertoire partagé sur le serveur (clients Samba Windows 10)

Configuration du partage de fichiers sur un serveur Linux (Ubuntu) avec les clients Samba pour Windows 10. Initialement installé cet environnement il y a 7 ans sur le serveur Fedora, je ne suis pas sûr de l'avoir fait de la meilleure façon. Ma question est la suivante: pour un répertoire partagé sur le serveur Linux, comment puis-je donner à plusieurs utilisateurs une autorisation complète sur ce partage afin qu'ils puissent modifier/supprimer des sous-répertoires et des fichiers, qu'ils soient créés (propres) ou non? Par exemple, j'ai plusieurs groupes d'utilisateurs différents qui auront accès aux répertoires partagés de leurs groupes avec une permission complète dans ces répertoires. Sur mon ancien serveur, j'ai effectué un travail autour duquel, je suis sûr, doit trouver un meilleur moyen. J'ai créé un utilisateur générique Linux/Samba avec une autorisation complète pour chaque partage de groupe, puis via un script de connexion sur les clients Windows mappés à ce partage comme s’il s’agissait de l’utilisateur générique (ex. public_user accédant au partage public). Cela fonctionne, mais il n’existe aucune responsabilité quant au suivi des modifications ou des fichiers ou répertoires nouvellement créés, puisque tout est la propriété de l’utilisateur générique. Ceci est ma première question ici. Toute aide est grandement appréciée.

1
gcruthers

Editez le fichier de configuration de samba.

Sudo nano /etc/samba/smb.conf

Ajoutez ceci à la fin du fichier:

[Public Directory]
comment = Contents are read/write by all.
path = /home/user/directory-to-be-shared
read only = no
guest ok = yes
create mask = 0666
force create mode = 0666
directory mask = 0777
force directory mode = 0777

Puis redémarrez samba.

Sudo service smbd restart

Remarques:

  1. La chaîne entre crochets (Public Directory dans l'exemple ci-dessus) correspond à ce que les utilisateurs verront lorsqu'ils accéderont au dossier partagé à partir d'autres systèmes.
  2. Les fichiers créés dans ce répertoire par les utilisateurs d'autres systèmes ne seront la propriété de personne: nogroup, avec des autorisations de lecture et d'écriture pour le propriétaire, le groupe et autres.
  3. Les répertoires créés dans ce répertoire par les utilisateurs d'autres systèmes n'appartiendront à personne: nogroup, avec les autorisations de lecture, d'écriture et de traversée de répertoire pour le propriétaire, le groupe et autres.
  4. Les masques et les modes du fichier de configuration s'appliquent aux fichiers et aux répertoires créés par les utilisateurs d'autres systèmes. Ces masques et modes sont ignorés lors de la création de fichiers en tant qu'utilisateur sur le serveur. Autrement dit, si vous êtes utilisateur sur le serveur, assurez-vous que chaque fichier et répertoire que vous créez dans /home/user/directory-to-be-shared dispose des autorisations 666 et 777 respectivement.
  5. Si vous avez activé un pare-feu sur le serveur, vous devez ouvrir le port 445 pour TCP. Par exemple, si vous utilisez ufw (pare-feu simple) pour configurer le pare-feu:

    Sudo ufw allow in 445/tcp
    Sudo ufw reload
    Sudo ufw status verbose
    
1
TooManyPets

Je ne sais pas si vous voulez un partage accessible à tout le monde ou seulement à un groupe d’utilisateurs client. C’est donc un modèle pour ce dernier.

Note: Ceci fonctionnera comme décrit si le umask par défaut de votre système est 0002, donc cela ne fonctionnera pas pour Ubuntu Desktop 17/18 mais cela fonctionnera pour Xubuntu Desktop et Ubuntu Server.

Dans ce modèle, tous les utilisateurs auxquels vous souhaitez accéder doivent obligatoirement devenir membres du groupe "utilisateurs". Il affectera le bit setgid sur le répertoire partagé et tous les sous-répertoires futurs qui obligeront quoi que ce soit nouvea qui leur est ajouté à hériter du groupe de son dossier parent.

Sudo mkdir /path
Sudo chown root:users /path
Sudo chmod 2775 /path

Le partage ressemblerait à ceci:

[UsersShare]
path = /path
valid users = @users
force group = users
read only = no
create mask = 0664
force directory mode = 2775

Lorsque bob - qui est devenu membre du groupe "utilisateurs" - se connecte avec son nom d'utilisateur/mot de passe samba et ajoute un fichier au partage [UsersShare], il aura le propriétaire = bob, le groupe = les utilisateurs, le mode = 664 fichiers/2775 Dossiers.

Tous les autres utilisateurs clients membres du groupe d'utilisateurs qui se connectent auront un accès complet à ce que bob a fait.

Tous les utilisateurs locaux - ceux du serveur lui-même - qui ajoutent ou modifient des fichiers qui sont également membres du groupe d'utilisateurs auront tous la même capacité et les fichiers/dossiers nouvellement créés auront le même mode 664/2775 et auront tous comme groupe: "utilisateurs". La seule exception à cette règle est root - comme dans le cas de l’utilisation de Sudo - étant donné que umask est par défaut 022, ses fichiers hériteront du groupe "utilisateurs" mais auront le mode 644.

Si vous voulez vraiment un partage public pur auquel tout le monde a accès, remplacez "utilisateurs valides = @ utilisateurs" par "invité ok = oui". Pour que cela fonctionne localement sur le serveur, vous devez toujours ajouter ces utilisateurs au groupe "utilisateurs".

0
Morbius1