Comment configurer un dossier pour que tout ce qui y est créé hérite des autorisations?


18

J'ai un dossier / data (en fait une partition) pour toutes les données qui devraient être accessibles à tous les utilisateurs (dans ce cas, les membres de la famille). Nous avons tous des comptes d'utilisateurs individuels et sommes souvent tous connectés à tout moment sur ce PC.

Comment puis-je configurer des autorisations pour que nous conservions tous l'accès aux fichiers, peu importe qui les crée, y compris les nouveaux dossiers? Si je crée un dossier, il obtient mon utilisateur et mon groupe, donc personne d'autre ne peut y écrire.


pour les visiteurs. Si vous voulez juste que le nom du groupe soit hérité chmod -R g+s /parentdir. Remarque: exécuter chmod -R avant cela si nécessaire
Thamme Gowda

1
Remarque sur ce qui précède: l' -Rindicateur to chmodest très rarement utile car nous voulons rarement que les répertoires (qui ont toujours besoin d'une autorisation d'exécution) et les fichiers ordinaires (qui ont rarement besoin d'une autorisation d'exécution) aient les mêmes autorisations
Zanna

Réponses:


17

Une autre approche consiste à utiliser les listes de contrôle d'accès, un sur-ensemble d'autorisations de fichiers.

Tout d'abord, nous devons installer le package acl Installer acl :

sudo apt-get install acl

Avant Ubuntu 14.04 , la partition doit être montée avec l'option aclpour que les éléments suivants fonctionnent. Il pourrait être ajouté /etc/fstab, comme dans

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

ou pour un système de fichiers déjà monté

sudo mount -o remount,acl /media/shared

Ensuite, vous devez créer un nouveau groupe, auquel tous les utilisateurs autorisés à accéder au partage en mode lecture / écriture seront ajoutés. Je l'appelle usershare. Un groupe déjà existant pourrait être utilisé.

sudo addgroup usershare

Maintenant, nous ajoutons les utilisateurs enzotibet steevcà ce groupe:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(en vigueur à la prochaine connexion).

Ensuite, nous ajoutons une ACL avec des rwxautorisations pour le groupe usershareà tous les fichiers déjà dans/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

Enfin, nous ajoutons une ACL par défaut avec des rwxautorisations pour le groupe usersharepour tous les fichiers créés à partir de maintenant à l'intérieur/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

Maintenant, tous les utilisateurs du usersharegroupe ont des autorisations complètes sur tous les fichiers sous /media/shared. Les autorisations de chaque utilisateur sur son répertoire personnel et sur les autres ne sont pas affectées.

J'ai testé cette solution et semble fonctionner, mais les suggestions et corrections sont les bienvenues.

Remarque : les nouveaux fichiers et répertoires créés dans le répertoire considéré auront une autorisation d'écriture pour le usersharegroupe, mais les fichiers copiés ou déplacés dans le dossier conserveront leurs autorisations d'origine. Si l'utilisateur, si je comprends bien, n'a besoin que d'un accès en écriture aux répertoires nouvellement créés, ce n'est pas un problème. Sinon, il devrait modifier les autorisations à la main. Voir cette réponse sur la façon de surmonter cela en définissant le umask des utilisateurs 002.


Je ne connais pas très bien acl, pouvez-vous tester et copier un fichier avec des autorisations comme rw-r - r-- de votre dossier personnel vers le dossier partagé et voir si les autorisations changent pour votre rwx par défaut pour le usersharegroupe?
arranger le

@arrange: non, cela ne fonctionne pas comme prévu. Je vais souligner dans la réponse. Merci
enzotib

J'ajouterais que l' étape /etc/fstab/ remountn'est pas requise, car elle ext4devrait être montée avec l' acloption active par défaut.
enzotib

8
  1. Créer un dossier.

    Par exemple:

    mkdir /mnt/family
    

    Si vous avez besoin de monter une partition sur eux ... si ext4 tout ce dont vous avez besoin /etc/fstabest

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. Créez le groupe myfam.

    addgroup myfam
    
  3. Ajouter des utilisateurs à ce groupe

    adduser papa myfam  
    adduser mom myfam
    
  4. Maintenant, prenez et donnez la permission.

    Je pense que vous devriez commencer à changer umask.

    Autorisations et droits d'accès par défaut du système de fichiers dans 12.04

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    Maintenant le plus important. Cette ligne crée setgidtout ce que vous créez sous ce dossier avec vos utilisateurs comme propriétaire et groupe myfam. Cela permet au système de remplacer le groupe principal d'utilisateurs.

    chmod -R g+s /mnt/family   
    

3

La chose la plus simple qui me vient à l'esprit est d'ajouter chaque utilisateur au groupe de tous les autres utilisateurs.

Ensuite, changez le umask de chaque utilisateur de 022 à 002, cela pourrait être fait en /etc/profile.

Éditer

La première étape pourrait être remplacée par la suivante: faire en sorte que tous les utilisateurs appartiennent au usersgroupe en tant que groupe principal.

Edi2

Comme l'a suggéré @James_Henstridge, il peut être pratique de définir le bit setgid sur le répertoire principal, afin que les nouveaux fichiers et répertoires créés aient leur même groupe, indépendamment de l'utilisateur. De cette façon, vous pouvez éviter l'ensemble userscomme groupe principal pour les utilisateurs.


Vous voudrez peut-être modifier votre réponse pour suggérer également de définir le bit setgid sur tous les répertoires /dataafin que les nouveaux fichiers héritent de la propriété du groupe.
James Henstridge

edit3 :) Si vous copiez un fichier dans le /datadossier, les autorisations ne sont pas héritées, donc les anciens fichiers avec les autorisations gw ne seront pas modifiables par d'autres. edit4: définir userscomme groupe principal et umask0002 n'est certainement pas une bonne idée car n'importe qui de ce groupe pourra modifier n'importe lequel de vos fichiers nouvellement créés.
organiser le

@arrange: concernant votre edit4, j'ai suggéré de ne mettre en usersgroupe que les utilisateurs autorisés à avoir un accès rw au partage. C'était une question de commodité, cela pourrait également créer un autre groupe pour cela. Concernant votre edit3, il n'est pas correct, le fichier copié acquiert le groupe de dossiers.
enzotib

@enzotib: pour réitérer mon point de vue en d'autres termes: edit4 - si usersc'est mon groupe principal et qu'il y a plus d'utilisateurs dans ce groupe alors ils peuvent modifier mes fichiers même en dehors du répertoire partagé; edit3 - J'ai écrit des autorisations , PAS un groupe de dossiers.
arranger le

@arrange: votre point est correct, je viens d'écrire une autre réponse, pourrait être intéressant d'entendre votre opinion.
enzotib

2

Cela ressemble à un travail pour les ACL. Giles a une réponse très complète sur le site SE Unix et Linux qui m'a aidé à résoudre le même problème.


1
Ça a marché! J'ai vu d'autres réponses en utilisant ACL, mais c'est la seule que j'ai vue qui modifie les autorisations non seulement des nouveaux fichiers et répertoires créés dans le répertoire partagé, mais aussi de ceux copiés ou déplacés dans celui-ci.
ダ ン ボ ー

0

Je ne comprends pas, sont tous linux-linux, linux-windows, linux - ???, en utilisant Samba ?, SSH ?, Pigeons ?; de toute façon, vous devez inclure les autres dans le groupe avec votre nom d'utilisateur (votre groupe), et ils obtiendront les mêmes autorisations que vous.


Il s'agit de plusieurs utilisateurs sur un PC. Je suis sûr qu'il doit y avoir un moyen d'obtenir les autorisations par défaut sur quelque chose d'utile.
steevc

0

Je suis tombé sur cette question en cherchant des réponses à mon problème de PERMISSION DE GROUPE. J'ai lu la question et il semble que j'implémente déjà ce que la question essaie d'accomplir.

J'ai donc pris la peine d'y répondre.

J'ai déjà configuré un partage pour tous les utilisateurs de mon réseau avec lecture et exécution uniquement, et seul mon compte a la permission d'écrire sur les dossiers partagés.

J'ai un serveur polyvalent sur mon réseau local qui utilise Ubuntu 12.04 LTS Desktop Edition. J'ai un mélange de machines clientes de Linux et Windows.

Voici comment je l'ai mis en place:

1.Sur mon serveur, j'ai des comptes d'utilisateurs nommés adminetclientone

Le admincompte est le compte créé lorsque j'ai installé ubuntu et le clientonecompte est le compte créé à l'aide du menu COMPTES UTILISATEUR dans ubuntu. Il ne dispose que d'une autorisation standard, pas de privilèges d'administrateur et il est ajouté au usersgroupe. Vous pouvez bien sûr les faire en utilisant uniquement le terminal. Ajoutez des comptes d'utilisateurs supplémentaires pour vos machines clientes.

2.La partition / le dossier partagé est monté automatiquement dans fstab en utilisant uniquement l'option par défaut.

3. Mon réseau est dans un environnement de groupe de travail et il est sur un mylangroupe de travail.

Toutes les machines de mon réseau sont configurées pour utiliser le mylan groupe de travail.

4.Mon dossier partagé nommé contient shareddéjà des fichiers. Je change donc le propriétaire et le groupe de manière récursive en utilisant la commande ci-dessous.

 sudo chown -Rv admin:users /shared

5.J'ai également défini l'autorisation de dossier et de fichier sur le /shareddossier de manière récursive à l'aide de la commande

 sudo chmod -Rv 750 /shared

les machines invitées de mon mylangroupe de travail n'ont pas accès au partage à l'aide de chmod 750

vous pouvez utiliser

 sudo chmod -Rv 755 /shared

Tous les futurs comptes d'utilisateurs du usersgroupe ne disposent que de l'autorisation d'exécution en lecture.

6.Dans ma machine cliente (Windows XP), je configure un compte d'utilisateur nommé clientone. Le même nom d'utilisateur et le même mot de passe que ceux créés sur mon serveur Ubuntu. Un deuxième compte nommé clienttwoest également créé sur le serveur ubuntu et c'est le même compte utilisateur que celui utilisé sur ma deuxième machine (linuxmint 15).

7.Dans ma machine cliente, une fois connecté en utilisant le clientonecompte, j'exécute la commande puis entre

 //192.168.10.254/shared

192.168.10.254est l'adresse IP de mon serveur ubuntu, /sharedest le dossier partagé sur mon serveur ubuntu Sur ma machine cliente deux (linuxmint 15), je vais dans Menu> Réseau et dans la barre de dialogue Emplacement: j'ai tapé:

 smb://192.168.10.254/shared

Si un mot de passe vous a été demandé, entrez le mot de passe de votre compte utilisateur. Et aussi votre mot de passe de trousseau si KEYRING est activé sur vos machines Linux.

Celui-ci fonctionne pour moi dans ma propre configuration réseau. Mon serveur est un serveur polyvalent servant de serveur squid, de serveur xbmc et mediatomb et de serveur amahi.

Je cherche toujours des moyens d'améliorer la partie de partage de fichiers de ma configuration. Les instructions ci-dessus ne sont pas une solution à l'épreuve des balles, achetez-la, vous pouvez l'essayer. Je teste et essaie la chose ACL avec les dossiers partagés à montage automatique. Comme votre exigence de partage de dossiers devient compliquée, les instructions ci-dessus ne vous garantiront pas le succès.

Informations ajoutées:

J'ai Amahi Server installé sur mon serveur, je l'ai également utilisé pour créer des comptes utilisateurs auxquels je voulais avoir accès aux dossiers partagés. Je l'ai également utilisé pour créer de nouveaux partages de dossiers.

Lorsque vous souhaitez une autorisation utilisateur plus complexe pour différents utilisateurs, ACL est la solution idéale.


0

J'ai des fichiers vidéo à mon nom, mais lorsque je me connecte avec le nom de mes filles, son compte ne peut pas voir les fichiers vidéo. Donc, ce que j'ai fait, c'est allé dans les comptes d'utilisateurs, déverrouillé (en haut à droite), puis changé son type de compte de "standard" en "administrateur (qui est mon compte), et maintenant tous les fichiers vidéo, vraiment tout, s'affichent lorsqu'elle est connectée sous son compte.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.