Changer les permissions automatiquement ?

Az.

Membre actif
13 Mars 2008
104
3
39
Paris
Bonjour,

Je cherche à savoir s'il existe un moyen de forcer le changement de permissions de fichiers/dossiers lors de la copie de fichiers/dossiers vers un dossier cible ?

Dans mon cas nous sommes plusieurs utilisateurs du même mac avec chacun notre session. Un seul d'entre nous, moi même, est administrateur du système. Les autres sont de simple usager.

L'intégralité du dossier iTunes ainsi que ses médias se trouvent dans le dossier/utilisateur partagé afin que tous puissent y avoir accès en ouvrant de leur propre session iTunes.

Afin que les fichiers de tout a chacun ne soit pas effacé par l'autre accidentellement, mais qu'ils soient tout de même accessibles à tous, l'ensemble du dossier iTunes Media (et donc les sous-dossiers Media/Tones/Movies etc.) ont des permissions de base de type :

Admin : Lecture & Ecriture
Système : Lecture & Ecriture
Everyone : Lecture

De cette façon si un autre usager désire modifier ou supprimer un fichier présent dans un sous-dossier il est obligé d'avoir le login et mot de passe de l'administrateur.

Tout fonctionnait tres bien jusqu'à ce que l'on se rende compte que chaque données importée sous iTunes par chaque usager n'était pas automatiquement formaté avec les permissions par défaut du nouveau dossier. Mais gardait les permissions du dossier source.

Ce qui fait que l'on se retrouve avec des fichiers ayant des permissions plus "libres" et permettant surtout la suppression par tout a chacun.

La solution jusqu'à présent est de régulièrement (tous les mois) de procéder à un edit des permissions du dossier iTunes Media et d'écrasser toutes les permissions des fichiers et sous-dossiers, mais cela est lourd et contraignant.

Existerait il une façon de le faire automatiquement ? Que lorsque l'on c/c un fichier ou dossier directement dans le dossier iTunes Media les permissions soient automatiquement modifier pour devenir celle du dossier iTunes Media ?

Merci à vous pour vos réponses, conseils.

Bien à vous,
 
Au moins deux manières d'envisager les choses.
a) une manière dynamique, qui réagit à l'événement "copie d'un fichier dans le dossier destination".
On peut utiliser les capacités de l'ordonnanceur (launchd) pour faire ça mais la mise au point est sans doute moins simple qu'il n'y paraît. En tout cas, il faut étudier de près la configuration du service à initier.
b) une manière automatique et indépendante de ce qui se passe sur le disque. Simplement, on détermine les commandes à passer pour modifier les droits et on les lance cycliquement (et systématiquement).
En fonction des besoins, ça peut être une fois par jour, ou toutes les heures etc.
C'est beaucoup plus simple, en fait, et avec un peu de chance ça suffira amplement.
 
Bonsoir,

Les deux méthodes me semblent parfaitement répondre au besoin. Avec une préférence pour la seconde car en cas de changement d'organisation des fichiers en vue d'un serveur iTunes ou de disque, cela permettra de modifier plus aisément le système.

Comment puis je procéder pour cette seconde option ?
 
Si on admet que tous les fichiers concernés se retrouvent dans une arborescence dont la racine est /Users/admin/Muzik et que le compte concerné est admin, les deux commandes à passer pourraient être :
Bloc de code:
find "/Users/admin/Muzik" -type f -exec chmod 664 {} +
pour les fichiers et
Bloc de code:
find "/Users/admin/Muzik" -type d -exec chmod 775 {} +
.
Ensuite, il suffit de les programmer dans l'ordonnanceur. Pour être moderne, il faudrait utiliser les méthodes propres à launchd mais là il est bien plus facile de le faire avec la méthode classique de UN*X, c'est à dire cron.

Il existe un utilitaire qui permet de paramétrer cron sans passer par les commandes texte, Cronnix.
 
Donc dans mon cas l'ensemble des commandes à configurer sous Cronnix vont être:

Bloc de code:
find "users/shared/itunes/itunes media/music" -type f -exec chmod 664 {} +

Bloc de code:
find "users/shared/itunes/itunes media/music" -type d -exec chmod 775 {} +
--
Bloc de code:
find "users/shared/itunes/itunes media/books" -type f -exec chmod 664 {} +

Bloc de code:
find "users/shared/itunes/itunes media/books" -type d -exec chmod 775 {} +
--
Bloc de code:
find "users/shared/itunes/itunes media/audiobooks" -type f -exec chmod 664 {} +

Bloc de code:
find "users/shared/itunes/itunes media/audiobooks" -type d -exec chmod 775 {} +
--
Bloc de code:
find "users/shared/itunes/itunes media/movies" -type f -exec chmod 664 {} +

Bloc de code:
find "users/shared/itunes/itunes media/movies" -type d -exec chmod 775 {} +
--
Bloc de code:
find "users/shared/itunes/itunes media/tones" -type f -exec chmod 664 {} +

Bloc de code:
find "users/shared/itunes/itunes media/tones" -type d -exec chmod 775 {} +
--
Bloc de code:
find "users/shared/itunes/itunes media/podcasts" -type f -exec chmod 664 {} +

Bloc de code:
find "users/shared/itunes/itunes media/podcasts" -type d -exec chmod 775 {} +

Il ne me reste plus qu'à comprendre comment marche ce Cronnix. Merci pour ton aide.
 
Tu devrais pouvoir te limiter à deux commandes, vu que find décent récursivement dans les sous-répertoires, à appliquer au répertoire "/Users/Shared/itunes/itunes media".

Tu peux aussi faire en sorte que ces fichiers et répertoires appartiennent à ton utilisateur et son groupe, avec la commande chown, ce qui ferait une troisième commande à passer.
 
Dernière édition:
Pour ta première suggestion, je ne peux pas me permettre car le dossier "download" dans "itunes media" ne doit pas avoir les mêmes droits que les autres sinon cela bloque les téléchargements sous itunes. Il est obligé d'avoir des droits sous la forme:
admin: lecture et ecriture
systeme: lecture et ecriture
everyone: lecture et ecriture

J'ai eu beaucoup de mal à mettre en place un système qui permette à tous d'utiliser itunes et la bibliothèque de tout a chacun mais sans pour autant mettre en péril le contenu de l'autre et que seul l'administrateur puisse editer/effacer les fichiers.
Parfois je me dis qu'un serveur externe aurait été plus simple.

Pour ta seconde suggestion avec la commande chmod je n'ai pas compris l'intéret et la méthode pour réaliser cela.
 
[Je vois que je me suis trompé dans mon post précédent — j'ai corrigé]
C'est à vérifier mais il me semble que les fichiers copiés dans les dossiers partagés conservent les propriétaires et groupes originaux.
Donc, si tu veux que ces fichiers et dossiers soient la propriété d'un compte donné, il faut utiliser la commande adéquate (chown) en précisant le compte et le groupe voulu. Mettons que ce soit respectivement admin et staff, ça nous donnerait :
Bloc de code:
chown -R admin:staff "/Users/Shared/itunes/itunes media/*"
 
Je confirme pour le fait que les fichiers copiés dans les dossiers partagés conservent les propriétaires et groupes originaux. D'ailleurs ça semble etre une vérité pour l'ensemble des dossiers mac.

Merci pour cette précision, il semblerait que dans mon cas ce soit uniquement le groupe admin dont j'ai besoin pour l'intégralité du dossier partagé ayant d'autre dossier fonctionnant sur le principe du dossier itunes (tout le monde peut voir, utiliser, mais pas editer/supprimer).