Autorisations pour les nouveaux fichiers dans le répertoire partagé

31

Nous venons de recevoir un nouvel iMac qui utilise le /Users/Sharedrépertoire pour stocker les ressources multimédias (images, audio, vidéo) que nous voulons accessibles à tous les utilisateurs de la machine. Après avoir copié tous les fichiers initialement, nous avons défini les autorisations souhaitées, puis appliqué les mêmes autorisations à tous les contenus du répertoire de manière récursive. Cela fonctionne bien, sauf que chaque fois que quelqu'un crée un nouveau fichier ou répertoire, il n'a pas les mêmes autorisations et nous devons répéter tout le processus d'autorisations avant que tout le monde puisse y accéder.

Existe-t-il un moyen de définir des autorisations pour tous les nouveaux fichiers / répertoires créés dans ce répertoire?

Daniel Standage
la source
Les attributs étendus vous permettront de définir des autorisations d'accès très libérales et de leur dire de se propager à l'intérieur du répertoire et de continuer à le faire sur les nouvelles créations, mais pour la vie de moi, je ne trouve pas d'instructions. Je ne peux le faire que sur les serveurs OSX en utilisant les outils d'administration du serveur, ce qui, je suppose, n'est pas une option viable ici?
Jason Salaz
Nan. Nous n'avons accès qu'aux disques du système d'exploitation fournis avec l'iMac.
Daniel Standage
1
Si vous êtes heureux de travailler dans le terminal, c'est peut-être la réponse que vous recherchez.
boehj

Réponses:

32

Vous ne pouvez pas le faire avec des autorisations traditionnelles de style POSIX, mais vous pouvez le faire avec des entrées de contrôle d'accès héritables. Pour autoriser l'accès en lecture + écriture pour tout le groupe "staff" à tout dans / Users / Shared / reallyshared, vous utiliseriez:

sudo chmod -R +a "staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Users/Shared/reallyshared

La file_inherit,directory_inheritpartie signifie que cette entrée de contrôle d'accès sera automatiquement ajoutée aux nouveaux fichiers et dossiers créés dans ce dossier, mais elle ne s'applique pas automatiquement aux éléments déjà là (c'est pourquoi j'ai ajouté le -Rdrapeau à chmod- qui l'applique à tout ce qui se trouve actuellement dans le dossier), et il ne sera pas appliqué aux éléments créés ailleurs et ensuite déplacé dans ce dossier (je ne connais pas de solution, désolé).

Gordon Davisson
la source
J'aimerais vraiment trouver un moyen d'avoir ce travail même pour les fichiers qui sont déplacés dans un répertoire partagé. Il est frustrant d'avoir des fichiers dans un répertoire partagé qui ne finissent pas vraiment par être entièrement partagés.
radven
Cela ne permet toujours pas d'écrire dans un dossier si les autorisations posix ne le permettent pas. C'est-à-dire que je crée ce dossier dans le Finder: drwxr-xr-x+ 2 User staff 68 Dec 15 14:10 untitled folderle + à la fin signifie que la liste de contrôle d'accès étendue est appliquée à l'aide de votre commande ci-dessus, mais Windows dit toujours que l'autorisation est refusée si j'essaie d'écrire un fichier dans ce dossier. chmod g+w untitled\ folderMe permet seulement d' écrire dessus. Peut-être parce que j'ai installé Samba pour contourner l'horrible nouvelle implémentation SMB d'OSX.
Chris Dragon
@ChrisDragon: cela ressemble à de la samba qui ne respecte pas correctement l'ACL. J'ai trouvé ici une suggestion à ajouter nt acl support = noà la [Global]section de /etc/smb.conf, mais je ne suis pas sûr que cela soit toujours pertinent dans les versions actuelles de samba.
Gordon Davisson
4

Une autre approche consiste à utiliser Terminal (aka shell ou invite de commande) pour créer / éditer (doit être effectué en tant que super-utilisateur, voir sudo) le fichier:
/etc/launchd-user.conf
ajouter la ligne:
umask 000
enregistrer et redémarrer. De nouveaux fichiers / dossiers (y compris les fichiers modifiés par enregistrer sous) permettront à tout le monde de lire / écrire.

Cela fonctionne en modifiant les autorisations de création de fichiers par défaut pour les programmes, tandis que l'approche ACL fonctionne en termes de règles d'accès liées à des fichiers et dossiers particuliers.

Sans ce réglage, des fichiers sont créés permettant à l'utilisateur: lecture-écriture, groupe et autres: lecture seule.

Si vous partagez entre plusieurs ordinateurs, vous devez le faire pour tous les ordinateurs qui utiliseront le partage.

Si vous avez des fichiers et des dossiers existants dans la zone partagée, vous devez les rendre tous lisibles / inscriptibles par tout le monde en utilisant:
sudo chmod -R og+w <shared-folder-name>

La commande se lit en anglais comme mode de changement, récursive à travers tous les sous-dossiers et fichiers, les autres autorisations de groupe et ajouter un accès en écriture, en commençant par le dossier avec.

Cette approche est mentionnée dans les forums pour fonctionner avec au moins dès 10.6 et fonctionne toujours sur 10.7.

D'autres facteurs affectent toujours l'accès au contenu. Par exemple, les autorisations définies dans le panneau de configuration de partage, les autorisations / ACL du dossier de base et, lors de l'utilisation de Terminal, tout umask en vigueur pour le shell.

Rechercher les autorisations de fichiers umask et Posixpour plus de détails sur ces concepts Unix. Dans les écritures, le répertoire de mots est le langage Unix synonyme de dossier. Vous rencontrerez également les termes UID et GID: identifiants d'utilisateur et de groupe, qui définissent la propriété Posix des programmes (processus) en cours d'exécution. Notez que les UID et GID sont des nombres qui peuvent être identiques ou différents pour un nom d'utilisateur donné sur différents ordinateurs. Ces numéros sont attribués à des noms dans les comptes de commande créés sur un ordinateur donné, généralement en commençant par l'ID 501. Les réseaux domestiques n'ont pas de mécanisme pour harmoniser ces affectations entre les ordinateurs. Par conséquent, sur les partages réseau, un fichier peut sembler appartenir à différents utilisateurs, car la liaison de l'ID utilisateur au nom d'utilisateur est déterminée du point de vue de l'ordinateur accédant au fichier. Les partages permettent donc toujours à tout le monde d'accéder aux fichiers à différents degrés. En d'autres termes, l'autorisation Posix "autre" est une limite indéfinie d'accès allant de permettre un degré d'accès tout à fait prévisible mais apparemment incertain en fonction des ID utilisateur attribués sur différents ordinateurs. Cela conduit à des variations apparemment absurdes des expériences, où sur certains réseaux, par exemple une configuration avec un seul compte utilisateur jamais créé sur chaque Mac, pourra partager sans aucune modification des autorisations car tous les comptes auront le même UID (501, no peu importe le nom des comptes), tandis qu'un autre réseau utilisant plusieurs comptes d'utilisateurs par Mac verra immédiatement des problèmes. Ainsi, certains groupes ne lutteront jamais avec cela, tandis que d'autres peuvent voir des problèmes qui se développent avec le temps, ou des problèmes qui apparaissent / disparaissent spontanément,

C'est un mystère pourquoi Apple a laissé un tel défaut d'utilisation dans la configuration d'une telle capacité de partage de fichiers.

Sur les disques externes, ce problème est résolu avec l'option "Ignorer les autorisations sur ce volume". Il peut y avoir une fonctionnalité similaire pour le partage de fichiers Apple, mais où est-elle?

Si vous lancez votre propre configuration de service Samba, il existe d'autres mécanismes pour gérer ces problèmes, mais Samba n'est pas du tout facile à utiliser.

Câble
la source
/etc/launchd-user.conf est déconseillé en faveur de l'utilisation launchctl. Voir support.apple.com/en-us/HT201684
Jess Bowers