J'ai un lecteur de disque USB 3 externe (capacité de 2 To) qui va très probablement être déplacé d'une machine à l'autre. Le disque a une table de partition GUID et une partition ext4. Je ne parviens pas à écrire sur le disque sauf si j'élève le processus ( sudo
).
À partir de maintenant, je songe à essayer l'un des éléments suivants ou les deux et j'aimerais connaître les inconvénients de chacun -
chmod 777 /mnt/externalDrive
chown nobody:nogroup /mnt/externalDrive
Si je donne l'autorisation 777 et que user1 (UID: 1005) y écrit et que je déplace ensuite le disque vers un autre ordinateur où user7 est UID: 1005, que se passe-t-il? L'utilisateur 7 devient-il le propriétaire du fichier sur cet ordinateur? Il me semble que je devrai périodiquement exécuter chown -R nobody:nogroup /mnt/externalDrive
sur le disque.
Est-ce que ce que je considère comme une mauvaise pratique évidente? Le disque contiendra très probablement des vidéos, de la musique et des images, aucune d'entre elles n'a besoin d'être protégée comme certaines données financières.
la source
Réponses:
C'est le problème avec les systèmes multi-utilisateurs, surtout si vous en avez plusieurs. ;) Il n'y a pas vraiment de façon sympa de faire ce que vous voulez. Les approches qui me viennent à l’esprit seraient
L'approche la plus efficace serait de revenir aux pratiques courantes. Sur la plupart (au moins) des systèmes Linux, il existe certains groupes qui ont généralement des GID communs. Par exemple serait
users
, qui a GID100
sur la plupart des distributions Linux. Si vous pouviez réussir à avoir votre compte d'utilisateur respectif dans ce groupe, vous pourriezLe premier et le deuxième point sont faciles à réaliser (
chown
,chmod
). Le troisième point est un peu plus délicat.La partie "appartenance à un groupe" est relativement simple: vous pouvez définir le bit SGID sur tous les répertoires du lecteur. Le bit SGID appliqué aux répertoires indique au noyau de se comporter de manière BSDish: BSD fait que chaque fichier / répertoire créé sous un groupe de répertoires spécifique n'appartient pas au groupe principal du processus créant le fichier / répertoire (comme le fait Linux), mais par le propriétaire du répertoire parent.
Le bit d'autorisation est un peu difficile. Les autorisations des fichiers / répertoires nouvellement créés sont (entre autres) influencées par le
umask
, un masque de bits indiquant quels bits ne pas définir s'il n'est pas explicitement indiqué. Parumask
exemple022
, une valeur courante signifie que les bits d'écriture pour »groupe« et »autres« ne doivent généralement pas être définis. Vous pouvez changer votreumask
en002
disant que vous ne voulez pas que les autorisations d'écriture soient effacées pour le groupe, mais l'inconvénient est que vous ne pouvez pas définir cette valeur en fonction du répertoire et que vous ne voulez généralement pas avoir d'autorisations d'écriture pour votre groupe principal défini pour chaque fichier que vous créez.Cela pourrait être résolu en utilisant les ACLs: Dans une ACL vous pouvez définir un
mask
et undefault
jeu d'autorisations qui applique à tous les fichiers et répertoires créés dans un répertoire avec cet ensemble ACL. Une solution possible à votre problème serait doncVoir
setfacl(1)
etacl(5)
pour plus de détails.la source
Il y a une autre question similaire et bindfs y est suggéré:
Les utilisateurs d'OSX suggèrent
noowners
option de montage décrite comme ceci:la source
Le propriétaire et le groupe d'un fichier sont stockés sous forme de nombres. Ainsi, le fichier appartiendra à uid = 1005, quel que soit l'utilisateur (ou aucun utilisateur) sur le système auquel il est connecté.
Changer l'utilisateur / groupe en personne ne résoudra pas votre problème. Ensuite, seul l'utilisateur nobody (ou les membres du groupe nobody) seraient autorisés à accéder aux fichiers.
Malheureusement, je ne pense pas qu'il existe un moyen de désactiver les vérifications d'autorisation sur ext4. Voir, par exemple, Est-il possible de désactiver les autorisations de fichiers sur un système de fichiers ext3 ou ext4?
la source
Andreas Wiese dit que si vous avez un identifiant de groupe commun sur tous les hôtes, vous pouvez résoudre votre problème avec
setgid
bit et ACLJe pose la question ID de groupe prédéfinis dans les distributions Linux?
Après ses propres recherches, il a été constaté qu'un tel groupe existe dans toutes les distributions touchées:
sys
id de partage de groupe3
sur Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, MacOSX, Solaris.Avec ça:
et la saveur de cela:
vous
user
pouvez lire / écrire n'importe quel fichier/dir
.La plupart des travaux peuvent faire un
setgid
peu mais malheureusement, vous avez généralement peu de contrôle surumask
. L'ACL est donc utilisé pour fournir une solution complète.Voir également:
la source