Je veux donner aux utilisateurs la possibilité de créer des fichiers d'écriture et de lecture dans un autre répertoire utilisateur, mais ne pas avoir la possibilité de supprimer le fichier après sa création (le sticky bit ne fonctionnera pas ici ...) par exemple:
J'ai un utilisateur manager
avec un répertoire repository
J'ai un utilisateur worker1
qui doit écrire des fichiers /manager/repository
mais
je ne peux pas supprimer les fichiers J'ai un utilisateur worker2
qui doit écrire des fichiers /manager/repository
mais
je ne peux pas supprimer les fichiers J'ai un utilisateur worker3
qui doit écrire des fichiers /manager/repository
mais ne peut pas supprimer les fichiers
mais worker 1-2-3
ne peut pas supprimer les fichiers une fois créés uniquement manager
et root
peut supprimer les fichiers worker 1-2-3
créés.
J'ai essayé quelques trucs chown
et chmod
astuces pour appliquer le bit collant sans succès.
la source
worker*
utilisateurs écrivent-ils dans le répertoire d'une certaine manière? Vous avez mentionné dans un commentaire que les fichiers journaux vont ici, donc cela signifie-t-il qu'un certain exécutable est lancé pour créer des fichiers ici? Si c'est le cas, vous pouvez donner auworker
groupe l'sudo
autorisation d'exécuter l'exécutable en tant quemanager
. Ensuite, l'exécutable créerait des journaux en tantmanager
qu'utilisateur pouvant être lus par les travailleurs.Réponses:
Contrairement à Windows, il n'y a pas d'autorisation de suppression distincte sous Unix / Linux. Le droit de supprimer (ou de créer ou de renommer) un fichier est lié au répertoire contenant. Supprimez l'autorisation d'écriture pour les travailleurs sur
/manager/repository/
afin de refuser aux travailleurs de créer, supprimer et renommer des fichiers.Notez qu'il n'est pas possible d'autoriser la création de fichiers mais de refuser leur suppression.
la source
Tout d'abord, assurez-vous que ACL est activé dans votre système, puis exécutez cette commande
Comment ça fonctionne
Cette commande donnera des autorisations de lecture, d'écriture et d'exécution au propriétaire sur le répertoire
/manager/repository
. Il révoquera toutes les autorisations pourworker1
,worker2
etworker3
.Cela donnera aux autres utilisateurs un accès en lecture et en écriture mais refusera l'accès à la suppression.
De
man setfacl
:la source
echo " " > $file
claquer le contenu du fichier avec "", qui est techniquement une écriture, mais supprime efficacement le contenu. Il semble qu'un repo réel comme svn soit le meilleur pari ici.Pour ce faire, avec des autorisations, vous auriez besoin d'un système prenant en charge les ACL similaires aux ACL NFSv4. Par exemple, sur FreeBSD, si le système de fichiers est monté avec l'
nfsv4acls
indicateur, vous pouvez faire:Refuser explicitement l'
delete_child
autorisation aux membres duworker-group
groupe.Cependant, notez que puisque les travailleurs seraient propriétaires des fichiers qu'ils créent, ils seraient toujours en mesure de modifier les listes de contrôle d'accès sur eux, et en s'accordant l'
delete
autorisation, cela prévaudrait sur l'delete_child
autorisation du répertoire parent et je ne suis pas sûr qu'il y a un moyen de contourner cela (au moins sur les systèmes de fichiers UFS sur FreeBSD). Par exemple, ils pourraient faire:la source
Pour prendre des autorisations d'écriture à partir du
/manager/repository
dossier. Ainsi, tous les utilisateurs qui ne sont pas root pourront écrire ou supprimer des fichiers à l'intérieur/manager/repository
, mais ne supprimer aucun fichier de ce répertoire.la source
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:
Pour les répertoires:
la source
a
attribut signifie ajout uniquement. Les utilisateurs peuvent-ils modifier ces fichiers? (2) Quel est l'effet de la définition de l'a
attribut sur un répertoire?