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.
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:
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./home/user/directory-to-be-shared
dispose des autorisations 666 et 777 respectivement.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
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".