Les utilisateurs de ce système sont prudents et ont leurs umasks définis sur le 0077 très privé. Cependant, les utilisateurs aimeraient avoir des répertoires spécifiques au groupe, où les fichiers peuvent être copiés de manière à les partager explicitement uniquement entre les autres membres du groupe. Il peut y avoir plusieurs répertoires de partage de ce type bien que chacun soit spécifique à un groupe.

Définir le sticky bit de groupe sur un répertoire donné à utiliser pour le partage nest pas suffisant. Bien que la définition du bit sticky entraîne la propriété du groupe sur les fichiers placés dans le répertoire, les autorisations sur lesdits fichiers sont souvent définies de telle sorte que les fichiers ne peuvent pas être lus ou modifiés, cest-à-dire ne peuvent pas être partagés. Ils apparaissent simplement dans la liste du répertoire. Cela est dû au fait que certains utilisateurs ne pensent pas ou ne savent pas comment procéder manuellement au réglage des autorisations de groupe requises pour permettre la lecture et lécriture. Nous pouvons leur donner une pause car les utilisateurs ne sont pas des administrateurs, après tout. acls peut être utilisé pour spécifier quun groupe particulier a accès aux fichiers dans le répertoire de partage, indépendamment de ce que les permissions du groupe auraient été sans acls. Cest la solution parfaite, mais cela ne fonctionne pas tout à fait.

Dans ce qui suit, le groupe partagé est « customer_gateway » et lexemple dutilisateur essayant de partager un fichier est « svw ». Comme on peut le voir dans la transcription, lutilisateur svw est membre du groupe customer_gateway. Le répertoire dans lequel le partage doit avoir lieu est également appelé « customer_gateway / »

Ce qui suit utilise acls. Jai défini les autorisations de groupe, les autorisations de groupe par défaut, le masque et le masque par défaut. Cela fonctionne bien pour les fichiers créés dans le répertoire, ou pour les fichiers qui y sont déplacés via cat (ou tar), mais étrangement, pas pour les fichiers qui « cp » y sont:

# rm -r customer_gateway/ # umask 0077 # cat ~/script1 mkdir customer_gateway chown :customer_gateway customer_gateway/ chmod g+rwx customer_gateway/ setfacl -m group:customer_gateway:rwX customer_gateway/ setfacl -m d:group:customer_gateway:rwX customer_gateway/ setfacl -m m::rwX customer_gateway/ setfacl -m d:m::rwX customer_gateway/ getfacl customer_gateway cd customer_gateway touch cga cat << EOF > cgb c g b EOF ls -l # . ~/script1 # file: customer_gateway # owner: root # group: customer_gateway user::rwx group::rwx group:customer_gateway:rwx mask::rwx other::--- default:user::rwx default:group::rwx default:group:customer_gateway:rwx default:mask::rwx default:other::--- total 4 -rw-rw----+ 1 root root 0 Mar 2 20:43 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb # su - svw /home/svw/bin:/usr/local/bin:/usr/bin:/bin (note umask is 0077) > cd /share/customer_gateway/ > groups svw adm dip video plugdev google-sudoers customer_gateway > cat >> cga e f g > cat > cgc c g c > ls -l total 12 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc > ls ~/dat ta tb tc > cat ~/dat/ta > ta > cp ~/dat/tb tb > ls -l total 20 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc -rw-rw----+ 1 svw svw 4 Mar 2 20:45 ta -rw-------+ 1 svw svw 4 Mar 2 20:45 tb > getfacl ta # file: ta # owner: svw # group: svw user::rw- group::rwx #effective:rw- group:customer_gateway:rwx #effective:rw- mask::rw- other::--- > getfacl tb # file: tb # owner: svw # group: svw user::rw- group::rwx #effective:--- group:customer_gateway:rwx #effective:--- mask::--- other::--- > 

Ce que cela montre, cest que lorsquun fichier est créé dans le répertoire, il reçoit les autorisations par défaut et est partageable. Mais les utilisateurs ne créent pas toujours leurs fichiers là-bas, généralement ils les copient là-bas.

Mais faire une copie est la même chose, car pour faire une copie, nous devons dabord créer un nouveau fichier. Nous parlons de une copie simple ici, pas une copie des permissions de conservation. Cest le même que le formulaire suivant, qui, btw fonctionne et copie un fichier qui sera partageable dans le répertoire indépendamment de ses permissions de groupe dorigine:

cat < data.in > shared/data.out 

fonctionne très bien, le piping via tar fonctionne également, mais la forme

cp data.in shared/data.out 

échoue. cat ed le fichier obtient le masque par défaut et les permissions par défaut. Le fichier cp ed préserve ses permissions dans le masque acl et les permissions de groupe, comme sil létait un cp -p (mais ce nétait pas « t), et donc les permissions effectives se lisent comme le fichier original, pas ce sur quoi les acl ont été définies.

Dans un deuxième essai, jai lancé cette expérience avec le groupe sticky bit, chmod g + rwxs, avec le facl ch anges, et a obtenu exactement les mêmes résultats. Bien que les listes de répertoires soient plus jolies en raison de la propriété du groupe affichée pour tous les fichiers partagés. Je lai aussi exécuté avec uniquement le sticky bit du groupe défini, sans setfacl. Il a également eu le même résultat pour les fichiers copiés (donc les facls semblent assez inutiles pour un répertoire où les fichiers sont copiés pour être partagés).

Sur quelle base et avec quelle justification les facls linux distinguent-ils les différentes formes de créer des données? Pourquoi forcer cp à conserver les permissions alors quon ne lui a pas dit de faire ça? Quelle raison justifierait la confusion causée par cette distinction entre chat et piping par le biais de tar fonctionnant mais cp ne fonctionnant pas? Est-ce que je manque une incantation magique qui ferait cette distinction sévaporer?

Ce résumé est-il correct: les facls vous permettront de surmonter la propriété de partager des fichiers, cela rendra les autorisations plus permissives que lumask lors de la « création » de fichiers, à moins que cette création ne soit due à la commande cp et pour une bonne raison parce que … parce que pourquoi?

Commentaires

  • Quel système dexploitation (distribution et version Linux) et quel système de fichiers utilisez-vous? Serait-il acceptable de faire en sorte que les gens utilisent cat, peut-être via un shellscript dédié à cet effet?
  • Avez-vous lintention que nimporte quel utilisateur du groupe puisse modifier ou supprimer nimporte quel fichier, ou est-ce que seul le créateur devrait avoir de telles autorisations?
  • Debian 10. Parce que la création de fichiers fonctionne, ‘ ai envoyé des copies via tar. Je ‘ je le paquet comme une commande proj_cp dans / usr / local / bin. Cependant, si un utilisateur doit utiliser une commande de copie spéciale, alors on peut simplement utiliser le sticky bit de groupe sans facls et définir les autorisations. Je veux savoir comment paramétrer les acl pour que cat tar et cp fonctionnent.Je ‘ m pense quil y a un problème avec acls avec cp, car ils font le comportement cp -p au lieu du comportement cp. Jai ‘ hâte dentendre des experts en autorisations.
  • Le partage de groupe est un problème récurrent avec des variantes, comme vous le faites remarquer. Dans ce cas, les développeurs de logiciels ont accès au répertoire des versions de test. Cest à eux de jouer avec. Ils peuvent travailler dans ce répertoire, pousser, tirer, installer dans lenvironnement virtuel, etc. Le problème survient lorsquils copient des choses depuis une autre zone dans laquelle ils ont travaillé et que leurs umasks ne sont pas définis avec des autorisations de groupe. Cest déroutant pour eux car la création et la copie de fichiers par tar fonctionnent bien. Cest aussi drôle que je doive leur donner un script de copie qui fait exactement ce que fait cp. ‘ acls ‘ ils sont magiques je dis LOL
  • Je ne suis pas un expert en permissions, mais jespère que mes questions et vos réponses peuvent aider les experts à vous apporter des réponses pertinentes.

Réponse

Ce fait de faire un répertoire où les utilisateurs peuvent entrer est assez simple et peut être fait facilement.

  • Premièrement, vous devrez trouver un endroit approprié pour créer ce répertoire, je vous recommande de le placer dans un répertoire accessible à tous (pour le moment). Utilisez la commande sudo mkdir pour créer votre nouveau répertoire.

  • Deuxièmement vous devez créer un groupe, un groupe est simplement un ensemble dutilisateurs qui sont arrondis afin de restreindre ou daccéder à certaines parties dun système Linux. Vous avez peut-être vu des groupes en tapant la commande ls -l qui répertorie quelque chose comme ceci:

rwxrwxrwx 3 administrateurs racine 4736 24 octobre 12:32 File1.doc

La partie qui dit root est le propriétaire et ** admins ** est le groupe qui possède le fichier. Les groupes permettent à certaines personnes de visualiser facilement des fichiers. Pour faire un groupe tapez le « sudo groupadd, ce sera le groupe utilisé pour le répertoire.

  • Une fois les groupes créés, vous pouvez y ajouter les utilisateurs dont vous souhaitez accéder au répertoire, en en utilisant la commande suivante sudo adduser Cela vous permettra dajouter des utilisateurs vous pourrez vérifier si lutilisateur est dans le groupe avec le groupe

Une fois que cela est fait, accédez au répertoire que vous avez créé et définissez lautorisation de groupe sur 7 (rwx), rappelez-vous que vous pouvez les ajuster selon vos préférences, mais 7 donne aux utilisateurs du groupe des autorisations complètes dans le répertoire, vous pouvez le faire en tapant « sudo chmod 770 »

Ensuite, vous devez changer la propriété du groupe du répertoire, donc le propriétaire du groupe du répertoire est le groupe que vous avez créé, faites-le avec avec la commande suivante « sudo chown -R: nom du groupe.

Une fois que tout cela a été fait, vous pouvez maintenant ajouter qui vous voulez au groupe et ils auront accès à copier et partager des fichiers aussi longtemps que e Ils sont dans ce groupe spécifique pour accéder au répertoire. Faites-moi savoir si vous avez trouvé cela utile !!!!!!

Commentaires

  • Merci, jai clarifié le message dorigine pour expliquer pourquoi je ne lai pas fait ‘ nutilisez pas cette approche manuelle.

Réponse

I supprimerait tous les ACL et utiliserait simplement les autorisations des utilisateurs et des groupes. Ensuite, chmod 777 le dossier auquel tout le monde doit avoir accès. Testez ensuite votre accès.

Ensuite chmod 770 le dossier teste à nouveau laccès.

Lorsque cela fonctionne comme il se doit, ajoutez les acl un par un.

Sils nont pas besoin de perms dexécution, vous pouvez le réduire encore plus bas à rw *, rx *, *** avec chmod 660 nomdossier

Rappelez-vous pour la période où vous navez pas dautorisations acl et chmod 777 votre Le dossier sera largement ouvert à tous, alors ne le laissez pas comme ça.

Commentaires

  • Pas tout le monde, juste des personnes dans un groupe particulier. Je pourrais définir le bit collant de groupe sur le répertoire. Le problème est qualors les utilisateurs placent les fichiers dans le répertoire, et le groupe est correct, mais soit ils ne savent pas ou oublient de définir laccès au groupe. acls peut être utilisé pour spécifier quun groupe particulier a accès aux fichiers indépendamment de ses autorisations de groupe. Cest la réponse parfaite. Le problème est que les acls ont un masque et que cp efface le masque acl pour quil corresponde au umask des utilisateurs, donc les permissions effectives ne permettent pas la lecture des fichiers.

Réponse

Jai essayé. Il semble que lumask écrase les autorisations de groupe, car les autorisations de groupe sont le masque de lACL. Il bloque tous les groupes et ACL.

Une solution consiste à rendre lumask moins restrictif.Pour ce faire en toute sécurité, vous devez ajouter un groupe pour chaque utilisateur et faire de ce groupe le groupe par défaut. (voir Pourquoi chaque utilisateur a-t-il son propre groupe? ).

Ce nest pas idéal, car il y a encore un cas pour différents umasks (g = rx et g = rwx). Cette stratégie supprime uniquement le besoin daucune autorisation de groupe.

Commentaires

  • Oui, cest ce que javais fait, jai défini les masques utilisateur sur 007 à la place de 077 comme solution de contournement. Ce nest pas ´ t parfait cependant, car de nombreux fichiers ont encore des permissions moindres et sont copiés. La chose que jespérais apprendre ici était pourquoi cp se comporte de cette façon. Il me semble que cela devrait être le comportement cp -p. Jespérais que quelquun ici pourrait lexpliquer.

Réponse

Toutes les réponses jusquà présent ont donné des conseils sur la façon pour gérer le partage de fichiers via des répertoires de groupe. Non a répondu à votre question principale, je pense, qui était: pourquoi cp a b se comporte comme si cp -p a b était spécifié? La page de manuel nen parle pas, en effet, mais texinfo a les détails. info coreutils "cp invocation" affiche:

 ‘-p’ ‘--preserve[=ATTRIBUTE_LIST]’ Preserve the specified attributes of the original files. ... ... In the absence of this option, the permissions of existing destination files are unchanged. Each new file is created with the <=== mode of the corresponding source file minus the set-user-ID, <=== set-group-ID, and sticky bits as the create mode; the operating system then applies either the umask or a default ACL, possibly resulting in a more restrictive file mode. ... 

Donc, si la destination existe, le contenu est remplacé, mais les bits de mode sont inchangé. Si la destination nexiste pas , les bits de mode sont copiés depuis la source.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *