Comment gérer les autorisations sur un volume partagé pour OSX et Ubuntu

8

Sur mon mac, j'utilise une partition HFS non revue pour partager des fichiers entre OSX 10.8 et Ubuntu 12.04.

C'était une bonne idée au début, car Time Machine sauvegardera automatiquement le volume dans OSX, mais j'ai vite remarqué qu'OSX et Ubuntu gâchent avec la permission d'une manière qui rend les choses désordonnées pour moi.

Donc, afin de visualiser et de modifier complètement les fichiers, je continue à utiliser chmodpour appliquer des autorisations qui me permettront d'utiliser pleinement un document. Mais je ne comprends pas pourquoi je dois continuer à appliquer des changements encore et encore .

Est-il possible de définir une sorte d'autorisation de façon permanente afin que les deux systèmes d'exploitation respectent en permanence?

Je suppose que 777 fonctionnera, mais je pensais que ce n'était pas une chose intelligente à faire. Mais tant que «autres» n'obtient pas un accès complet (troisième sept), je vois une icône de verrou sur le fichier dans ubuntu.

Seth
la source
1
Avez-vous le même nom d'utilisateur sous OS X et Ubuntu? Si vous avez des noms d'utilisateur différents, vous pouvez essayer d'ajouter le nom d'utilisateur Ubuntu à votre groupe sous OS X, et vice versa . De cette façon, vous n'auriez besoin que 774d'autorisations.
edwin
@edwin Merci pour le conseil. Comment ajouter un nom d'utilisateur à mon groupe? L'utilisation du 777 est-elle raisonnable ou dangereuse?

Réponses:

12

Les noms d' utilisateur ne sont pas pertinents. Les autorisations dans les systèmes de fichiers natifs HFS + et Linux sont stockées en termes d' ID utilisateur (UID), qui sont des nombres associés aux noms d'utilisateur. Dans Ubuntu, comme dans la plupart des distributions Linux modernes, le premier utilisateur reçoit un UID de 1000 par défaut. Sous OS X, le premier utilisateur reçoit par défaut un UID de 501. Ainsi, lors du partage de médias qui codent des valeurs UID, les valeurs UID sont susceptibles de ne pas correspondre.

Une façon de résoudre ce problème consiste à définir des autorisations lâches (la valeur du mode, comme dans rwxr-xr-xou 755 en octal). Notez que le code octal des autorisations n'est pas le même que la valeur UID. Dans l'un ou l'autre système d'exploitation, vous pouvez définir les autorisations par défaut utilisées sur les fichiers avec la umaskcommande, qui spécifie la valeur en bits à supprimer des autorisations de fichier. Par exemple, umask 022supprime l'autorisation d'écriture pour le groupe et d'autres autorisations, résultant en 755 (rwxr-xr-x) des autorisations sur les nouveaux fichiers (ou 644 si quelque chose supprime le bit d'autorisation d'exécution, ce qui est courant pour les fichiers). Il s'agit cependant en grande partie d'un outil en ligne de commande; si vous êtes en grande partie un utilisateur de l'interface graphique, vous devrez trouver un autre outil pour faire le travail, probablement lié aux paramètres par défaut de votre environnement de bureau. Cela peut être obscur et mal documenté. En outre, la définition d'autorisations lâches de cette manière peut avoir des inconvénients de sécurité, surtout si le vôtre est un système multi-utilisateur.

Une meilleure approche consiste à synchroniser les UID de votre compte sous Linux et OS X. Vous pouvez facilement modifier la valeur UID sous Linux avec la usermodcommande, comme dans:

usermod -u 501 dale

Cette commande définit l'UID dalesur 501. Il existe cependant quelques mises en garde importantes:

  • Vous devez vous déconnecter du compte que vous modifiez avant de le modifier. Si vous essayez de modifier un compte en cours d'utilisation, ce compte commencera à se comporter étrangement.
  • usermoddoit être utilisé comme root. Vous pouvez l'exécuter via sudo, mais le faire à partir du compte que vous modifiez est déconseillé à l'extrême. Ainsi, vous devrez soit donner rootun mot de passe et vous connecter rootdirectement, soit utiliser à sudopartir d'un deuxième compte utilisateur.
  • La usermodcommande ne changera pas la propriété des fichiers appartenant à l'utilisateur en question. Pour ajuster la propriété de ces fichiers, vous devrez les localiser, puis modifier leur propriété avec chown. La plupart des fichiers seront dans le répertoire personnel de l'utilisateur, donc chown -R dale: /home/dale, tapés comme rootaprès avoir changé dalel'UID, changeront la plupart des dalefichiers pour utiliser le nouveau numéro UID. Cependant, certains fichiers de l'utilisateur peuvent se trouver ailleurs. La frappe find / -uid 1000trouvera tous les fichiers qui utilisent l'ancien UID (en supposant qu'il était 1000). Notez que cette findcommande prendra probablement plusieurs minutes. Pour l'accélérer, démontez tous les systèmes de fichiers sur lesquels vous êtes sûr qu'il ne trouvera aucun accès, tels que les volumes FAT ou NTFS.
  • Si vous accédez aux volumes FAT ou NTFS, leurs valeurs UID sont déterminées par les options au moment du montage. Si vous utilisez un gestionnaire de fichiers GUI, il est probable que la valeur UID soit définie sur celui qui exécute le gestionnaire de fichiers, vous n'avez donc rien à faire de spécial. Si vous montez le volume via une /etc/fstabentrée, vous devrez peut-être ajuster la valeur UID qu'il spécifie.
  • Ubuntu stocke la valeur minimale qu'il utilise pour les UID dans /etc/login.defs. Si vous ne parvenez pas à modifier la UID_MINvaleur de ce fichier, vous découvrirez probablement que votre compte semblera "disparaître" de l'écran de connexion de l'interface graphique et peut-être de certains autres systèmes. Par conséquent, vous devez modifier ce fichier.

En théorie, vous pouvez modifier l'UID de vos comptes OS X de la même manière pour atteindre le même objectif. Je connais moins bien les outils de maintenance de compte OS X, donc je ne peux pas fournir d'instructions explicites pour le faire. L'ajustement des valeurs OS X aurait l'avantage de ne pas avoir à s'ajuster UID_MINsous Linux.

Si vous avez plusieurs comptes sur votre ordinateur, vous devez tous les ajuster pour les garder tous synchronisés sur vos installations de système d'exploitation.

Un autre point: la valeur de l'ID de groupe (GID) est stockée de la même manière. IIRC, Ubuntu attribue une valeur GID pour chaque compte identique à sa valeur UID. Je ne me souviens pas de ce que fait OS X par défaut. Vous souhaiterez peut-être ajuster les valeurs GID pour les deux systèmes d'exploitation d'une manière analogue aux modifications de l'UID, mais cela n'est probablement pas aussi important que l'ajustement des valeurs UID.

EDIT: Si vous souhaitez modifier votre UID (et GID, si vous le souhaitez) dans macOS / OS X plutôt que dans Ubuntu, vous pouvez le faire. Comme cette modification dans macOS dépasse la portée de ce site, je vais simplement créer un lien vers quelques pages qui fournissent des procédures pour le faire dans macOS:

Rod Smith
la source
Wow merci! Ceci est une réponse complète très bien écrite - expliquant le contexte complet du problème! Cette solution m'a aidé à obtenir une partition partagée sans faille sans faire de compromis. Au début, il y avait toujours le problème de la propriété des fichiers: "ignorer la propriété de ce volume" dans OSX ne me donnerait pas accès en écriture aux fichiers OSX nouvellement créés lors de l'exécution sous Ubuntu (icône de verrouillage) et vice versa. J'ai donc fini par créer un nouveau compte dans ubuntu en utilisant le même nom d'utilisateur que dans OSX et en modifiant à nouveau l'UID.
Maintenant, j'ai un accès complet à partir des deux systèmes d'exploitation pour les fichiers existants et nouvellement créés sans avoir à modifier les restrictions d'accès. Puisqu'il s'agit d'une réponse si exemplaire, je vous donnerai une prime une fois que la question deviendra admissible à une prime. ;-)
Après avoir suivi vos instructions, j'ai essayé de me connecter à Ubuntu. Lorsque j'ai appuyé sur Entrée, j'ai vu un écran noir pendant une seconde, puis j'ai atterri sur l'écran de connexion. Après avoir changé quoi que ce soit au standard 1000 à partir de mon compte temporaire, je pouvais me reconnecter. Une idée pourquoi je ne pouvais pas me connecter avec le nouvel uid?
borisdiakur
Si vous avez négligé de modifier les autorisations sur votre propre répertoire personnel, cela peut expliquer le problème. Si vous utilisez 13.10, il est également concevable que quelque chose dans Ubuntu ait changé, ce qui pose des problèmes si vous ne vous ajustez pas UID_MIN.
Rod Smith
1
MISE À JOUR: je viens de faire le mode utilisateur sur mon système et en quelque sorte l'autorisation de mon répertoire personnel n'a pas dû être modifiée!? Tout fonctionne bien après seulement usermod (en tant que root).
krumpelstiltskin
0

J'ai constaté que parfois vous pouvez cliquer sur un dossier que vous souhaitez partager et appuyer sur la commande + I. Ensuite, cliquez sur le verrou et entrez votre mot de passe s'il n'est pas déverrouillé. Ensuite, là où il est dit "tout le monde" choisissez lire et écrire.

Une autre chose qui fonctionne est de configurer un dossier en tant que «dossier partagé», vous pouvez le faire dans le volet des préférences de partage dans les préférences système.
Accédez aux préférences système> partage> partage de fichiers. Assurez-vous ensuite que la case de partage de fichiers est cochée et ajoutez le dossier que vous souhaitez partager à l'aide du bouton plus. Ensuite, vous pouvez modifier les autorisations pour lire une écriture.

UNE NOTE: l'utilisation de la deuxième option ouvrira également votre ordinateur pour permettre l'accès au dossier de votre choix sur Internet (uniquement lors du démarrage sous os x) !! Faites savoir que vous avez un mot de passe sécurisé et que vous le désactivez probablement dans les lieux publics (n'oubliez pas de vous procurer votre chapeau en papier d'aluminium!)

aChipmunk
la source
Cela fonctionne dans les deux cas, mais je n'utiliserai que la première option. Pourtant, autoriser l'accès à «tout le monde» (c'est-à-dire la permission 777) semble trop radical - ou n'est-ce pas? Est-ce sûr?
1
Eh bien, ce n'est pas recommandé à coup sûr. "Tout le monde" pourra modifier et lire les documents avec ces autorisations (mais ce sont des trucs Unix surtout, je pense). C'est certainement un peu plus sûr à utiliser 774.
edwin
0

Ouvrez un terminal et:

Sous OS X, essayez ceci

sudo dscl / -create /Users/<ubuntu-username>
sudo dscl / -append /Groups/<os-x-username> GroupMembership <ubuntu-username>

Dans Ubuntu, exécutez ceci

sudo adduser --system --no-create-home --ingroup <ubuntu-username> <os-x-username>

Vous devriez maintenant pouvoir utiliser 774ou même 770pour les autorisations de fichiers.

edwin
la source
Ça ne marche pas. La commande OSX ne fonctionne pas non plus. Mais j'ai réussi à ajouter l'utilisateur ubuntu via l'interface GUI dans OSX. Après avoir ajouté l'utilisateur de l'autre système d'exploitation au système d'exploitation en cours d'exécution et modifié les autorisations en 774 dans les deux systèmes d'exploitation, Ubuntu ne peut toujours pas obtenir un accès complet à tous les fichiers de la partition partagée. Certains sous-répertoires, par exemple, je ne peux pas ouvrir (l'autorisation est 774). J'ai donc dû le changer en 777 pour l'ouvrir. Ces gracieuses autorisations sont-elles sûres?
Dans Ubuntu au moins, la commande devrait fonctionner, je me suis essayé avant d'ajouter la réponse. Êtes-vous sûr d'avoir remplacé <ubuntu-username>votre nom d'utilisateur réel dans Ubuntu (idem pour <os-x-usernanme>)? Et pouvez-vous être plus précis sur les erreurs que OS X vous donne lorsque vous essayez d'exécuter cette commande?
edwin
J'ai seulement dit que la commande ne fonctionnait pas sous OSX. Si je me souviens bien, la commande adduserne se termine pas.
J'ai édité la réponse pour cela. Essayez-le. Je ne suis pas sûr car je ne suis pas familier avec la gestion des utilisateurs OS X. Sous OS X, vous pouvez également utiliser l'interface graphique pour créer l'utilisateur Ubuntu (avec le nom d'utilisateur que vous utilisez dans Ubuntu), puis l'ajouter à votre groupe d'utilisateurs OS X réel.
edwin
Ce n'est pas important. OSX offre une interface graphique simple lors de l'utilisation de CMD + I où vous pouvez créer et ajouter des utilisateurs très facilement. Mais cela n'a pas résolu le problème après tout. J'ai fini par utiliser les autorisations 777.