EDIT : Le problème était qu'Apple utilise des autorisations pour marquer les sauvegardes et vous empêche de les modifier (probablement une fonction de sécurité). En utilisant, chmod -RN <dir>
j'ai supprimé les données ACL de tous les dossiers contenant des données importantes et cela m'a permis de devenir moi-même le propriétaire et d'appliquer les autorisations appropriées.
Question d'origine
J'ai une sauvegarde extrêmement volumineuse (> 700 Go) qui a maintenant les mauvaises autorisations (mon UID a changé lors d'une installation propre, longue histoire) et je dois les changer. L'option qui prend du temps consiste à parcourir manuellement chaque dossier et à modifier les autorisations, mais cela prendra du temps.
Je veux utiliser chown
pour me faire propriétaire de toutes mes données importantes, puis utiliser chmod 700
sur tous ces dossiers pour ne donner des rwx
autorisations qu'à moi.
La solution idéale est une méthode d'utilisation find
pour rechercher récursivement des dossiers correspondant à une expression régulière (la mienne actuelle .*/[DCV].*|Pictures|M[ou].*
), puis faire de mon UID le propriétaire et définir les autorisations sur 700.
Le point important que je ne peux pas saisir:
Cependant, lorsque j'essaie de courir, chown Me DirectoryName
je reçois chown: DirectoryName: Operation not permitted
.
Tout ce que je trouve est lié à la modification des autorisations d'un fichier et non d'un répertoire. Peut-être que je regarde ça dans le mauvais sens?
Quelque chose me dit qu'il n'y a aucun moyen de donner mon UID rwx
et ---
à tout le monde.
Comment puis-je atteindre cet objectif? J'utilise Mac OS X 10.10.3.
Je sais qu'il s'agit d'un forum UNIX / Linux (et j'utilise Mac) mais cette question concerne beaucoup plus l'utilisation du shell, chown
, chmod
et les autorisations et les solutions affichées ici sera applicable à tout système d' exploitation UNIX. Il serait préférable que les solutions publiées fassent réapparaître mes anciennes sauvegardes dans Time Machine.
Merci à tous ceux qui ont répondu rapidement, mais chown
ne semblent tout simplement pas fonctionner sur les répertoires pour une raison quelconque. Le fait qu'il s'agisse d'une .sparsebundle
image disque sur un lecteur réseau est-il pertinent? J'ai supposé que ce serait la même chose que sur n'importe quel lecteur externe.
find . -user $other_uid -print0 | sudo xargs chown $USER
devrait fonctionner.
df -hT <dirname>
devrait vous dire.
df -hT <dir>
donne aucune sortie pour a) le répertoire racine du disque dur réseau b) l'image disque à l'intérieur du disque dur réseau c) n'importe quel dossier sur le disque dur réseau. Peut-être que le comportement que vous vouliez est implémenté différemment sur Mac et Linux?
root_squash
activé, vous ne pourrez donc pas effectuer d'opérations uniquement sur la racine, comme àchown
partir du client.