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
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.
cat
, peut-être via un shellscript dédié à cet effet?