Je travaille sur un projet de serveur de fichiers pour l'école et j'utilise samba pour partager les dossiers. J'ai joué avec les autorisations de dossier, mais je n'arrive pas à comprendre comment faire un dépôt uniquement comme un dossier. C'est ce que je veux réaliser:
(chmod number 7xx)
(chmod number x?x)
(chmod number xx0)
J'ai essayé beaucoup de réglages chmod différents, mais je n'ai jamais obtenu le résultat souhaité. Est-ce seulement possible? J'ai beaucoup cherché sur Google mais je n'ai pas trouvé de réponse définitive.
Peut-être un moyen de définir des autorisations sur les fichiers chaque fois qu'ils sont placés dans le dossier?
Si vous avez besoin de plus d'informations sur la configuration de samba ou de toute autre chose, n'hésitez pas à demander!
Merci pour votre aide!
Essayez cette procédure.
Créer un dossier partagé et donner le droit de permission:
mkdir /pathYouWant/share
chmod 770 /pathYouWant/share
Cela ne donne aucun accès à d'autres.
chmod +t /pathYouWant/share
Ce mode, selon page de manuel de chmod :
The restricted deletion flag or sticky bit is a single bit, whose
interpretation depends on the file type. For directories, it prevents
unprivileged users from removing or renaming a file in the directory
unless they own the file or the directory
Comme Marty Fried l’a dit, les fichiers créés dans le dossier partagé doivent disposer des autorisations appropriées, ce qui peut être obtenu avec masques de partage samba dans smb.conf
:
create mask = 440
directory mask = 550
Les programmes Windows ne doivent pas essayer de supprimer les fichiers en lecture seule sauf si l'option delete readonly
est définie sur yes.
delete readonly = no
Aussi, si vous voulez masquer tous les fichiers du dossier partagé:
veto files = /*/
delete veto files = no
Selon le manuel de samba, cette directive:
Que se passe-t-il si l'utilisateur tente de supprimer un répertoire contenant des fichiers veto? C’est là que l’option supprimer les fichiers veto entre en jeu. Si cette option booléenne est définie sur oui, l’utilisateur peut supprimer à la fois les fichiers normaux et les fichiers veto du répertoire, et le répertoire lui-même est supprimé. Si l'option est définie sur no, l'utilisateur ne peut pas supprimer les fichiers vetoés et, par conséquent, le répertoire n'est pas supprimé non plus. Du point de vue de l'utilisateur, le répertoire semble vide, mais ne peut pas être supprimé.
Après cette configuration, le seul problème qui reste est que l’utilisateur peut toujours supprimer ses propres fichiers même s’il ne le voit pas (nous ne savons pas pourquoi).
Nous avons donc décidé de suivre la suggestion de_Seppi de terminer la tâche et Bram Driesen a créé un script qui modifie la propriété du fichier sur le PC hôte.
Il a utilisé incron
pour lancer le script chaque fois qu'un fichier est placé dans le dossier, après this comme guide pour mettre en place.
Malheureusement, votre problème ne peut pas être résolu si facilement. Si un utilisateur dispose d'une autorisation d'écriture dans un répertoire, il peut également supprimer des fichiers. Même s'il n'était pas capable de les supprimer, il pouvait toujours remplir un fichier avec des zéros, ce qui constituerait une suppression de données, mais pas du nœud du système de fichiers.
Une idée que j'ai utilisée une fois:
Vous créez un travail cron qui supprime de manière récurrente l'autorisation d'écriture de chaque fichier dans une arborescence de répertoires (comme tous les fichiers de /home/guest
).
Notez que vous ne pouvez pas simplement utiliser chmod g-w -R /home/guest
. Cela enlèverait aussi le bit d’écriture des répertoires, rendant impossible le placement de nouveaux fichiers. Vous devez donc parcourir chaque fichier et supprimer son bit d’écriture de groupe.
L’intervalle d’exécution de cronjob dépend de vous. À l’époque, je l’ai réglé sur 10 minutes. Je ne connais pas votre environnement, je ne peux donc pas vous faire de recommandation.
Malheureusement, je n'ai plus ce script, vous devrez donc faire du script bash pour le faire fonctionner. Mais sérieusement, je doute que ce soit une méthode efficace.
Nous pouvons modifier les fichiers et les dossiers mais ne pouvons pas les supprimer.
Pour supprimer les attributs, exécutez les commandes suivantes:
Pour les fichiers:
Sudo chattr -R -a file.txt
Pour les annuaires:
Sudo chattr -R -a dir1/