Je n'ai vraiment pas le niveau en script perl et je fais donc appel à votre
bonté :
dans un script :
/etc/e-smith/events/actions/user-create-unix sur un serveur SME
il y a une ligne :
chmod 0xxx, "/home/e-smith/files/users/$userName";
ou xxx sont des permissions qui sont attribuées au repertoire
/home/e-smith/files/users/$userName
J'aimerai seulement savoir comment faire pour faire en sort que cette
commande s'applique aux sous repertoires et fichiers.
L'equivalent sous bash : chmod xxx -R /DOSSIER .
J'ai cru lire qu'il fallait faire des scripts de 30 lignes pour avoir une
fonction pour la reccursivité !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Seb
ozit wrote:
Bonjour,
Je n'ai vraiment pas le niveau en script perl et je fais donc appel à votre bonté : dans un script : /etc/e-smith/events/actions/user-create-unix sur un serveur SME il y a une ligne : chmod 0xxx, "/home/e-smith/files/users/$userName"; ou xxx sont des permissions qui sont attribuées au repertoire /home/e-smith/files/users/$userName
J'aimerai seulement savoir comment faire pour faire en sort que cette commande s'applique aux sous repertoires et fichiers. L'equivalent sous bash : chmod xxx -R /DOSSIER .
J'ai cru lire qu'il fallait faire des scripts de 30 lignes pour avoir une fonction pour la reccursivité !
Merci de votre aide
Ca doit être faisable avec la commande 'system' je pense, non?
system "chmod xxx -R $dossier";
ozit wrote:
Bonjour,
Je n'ai vraiment pas le niveau en script perl et je fais donc appel à
votre bonté :
dans un script :
/etc/e-smith/events/actions/user-create-unix sur un serveur SME
il y a une ligne :
chmod 0xxx, "/home/e-smith/files/users/$userName";
ou xxx sont des permissions qui sont attribuées au repertoire
/home/e-smith/files/users/$userName
J'aimerai seulement savoir comment faire pour faire en sort que cette
commande s'applique aux sous repertoires et fichiers.
L'equivalent sous bash : chmod xxx -R /DOSSIER .
J'ai cru lire qu'il fallait faire des scripts de 30 lignes pour avoir
une fonction pour la reccursivité !
Merci de votre aide
Ca doit être faisable avec la commande 'system' je pense, non?
Je n'ai vraiment pas le niveau en script perl et je fais donc appel à votre bonté : dans un script : /etc/e-smith/events/actions/user-create-unix sur un serveur SME il y a une ligne : chmod 0xxx, "/home/e-smith/files/users/$userName"; ou xxx sont des permissions qui sont attribuées au repertoire /home/e-smith/files/users/$userName
J'aimerai seulement savoir comment faire pour faire en sort que cette commande s'applique aux sous repertoires et fichiers. L'equivalent sous bash : chmod xxx -R /DOSSIER .
J'ai cru lire qu'il fallait faire des scripts de 30 lignes pour avoir une fonction pour la reccursivité !
Merci de votre aide
Ca doit être faisable avec la commande 'system' je pense, non?
system "chmod xxx -R $dossier";
Paul Gaborit
À (at) Fri, 8 Oct 2004 15:05:19 +0200, "Seb" écrivait (wrote):
Ca doit être faisable avec la commande 'system' je pense, non?
system "chmod xxx -R $dossier";
Pour être sûr de son coup et aller plus vite, il vaut mieux utiliser 'system' sans passer par le shell :
system '/usr/bin/chmod', '-R', 'xxx', $dossier;
(où xxx représente les droits en octal)
Seul problème : cette commande ne fonctionne pas bien. Elle applique les mêmes droits aux répertoires et aux fichiers. Donc, à moins que tous les fichiers soient des exécutables, les répertoires risquent de devenir inaccessibles.
Il vaut mieux un truc du genre :
system '/usr/bin/chmod', '-R', 'a+rX', $dossier;
L'astuce est dans le 'X' (cf. man chmod). Pour ce qui précède (a+r), il faut l'adapter en fonction du 'xxx' précédent.
ozit wrote:
J'ai cru lire qu'il fallait faire des scripts de 30 lignes pour avoir une fonction pour la reccursivité !
Vous pouvez utiliser File::Find ou gérer vous-même la récursivité. Find::Find contient bien plus de 30 lignes mais il est déjà écrit. Si vous le faites vous-même, il est possible de le faire en une dizaine de lignes si l'organisation du répertoire et son contenu est simple. Mais si vous voulez gérer tous les cas possibles (liens symboliques récursifs, liens cassés, fichiers spéciaux, etc.), vous retomberez sur un code aussi long que File::Find.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Fri, 8 Oct 2004 15:05:19 +0200,
"Seb" <seb@invalid.com> écrivait (wrote):
Ca doit être faisable avec la commande 'system' je pense, non?
system "chmod xxx -R $dossier";
Pour être sûr de son coup et aller plus vite, il vaut mieux utiliser 'system'
sans passer par le shell :
system '/usr/bin/chmod', '-R', 'xxx', $dossier;
(où xxx représente les droits en octal)
Seul problème : cette commande ne fonctionne pas bien. Elle applique les mêmes
droits aux répertoires et aux fichiers. Donc, à moins que tous les fichiers
soient des exécutables, les répertoires risquent de devenir inaccessibles.
Il vaut mieux un truc du genre :
system '/usr/bin/chmod', '-R', 'a+rX', $dossier;
L'astuce est dans le 'X' (cf. man chmod). Pour ce qui précède (a+r), il faut
l'adapter en fonction du 'xxx' précédent.
ozit wrote:
J'ai cru lire qu'il fallait faire des scripts de 30 lignes pour avoir
une fonction pour la reccursivité !
Vous pouvez utiliser File::Find ou gérer vous-même la récursivité. Find::Find
contient bien plus de 30 lignes mais il est déjà écrit. Si vous le faites
vous-même, il est possible de le faire en une dizaine de lignes si
l'organisation du répertoire et son contenu est simple. Mais si vous voulez
gérer tous les cas possibles (liens symboliques récursifs, liens cassés,
fichiers spéciaux, etc.), vous retomberez sur un code aussi long que
File::Find.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Fri, 8 Oct 2004 15:05:19 +0200, "Seb" écrivait (wrote):
Ca doit être faisable avec la commande 'system' je pense, non?
system "chmod xxx -R $dossier";
Pour être sûr de son coup et aller plus vite, il vaut mieux utiliser 'system' sans passer par le shell :
system '/usr/bin/chmod', '-R', 'xxx', $dossier;
(où xxx représente les droits en octal)
Seul problème : cette commande ne fonctionne pas bien. Elle applique les mêmes droits aux répertoires et aux fichiers. Donc, à moins que tous les fichiers soient des exécutables, les répertoires risquent de devenir inaccessibles.
Il vaut mieux un truc du genre :
system '/usr/bin/chmod', '-R', 'a+rX', $dossier;
L'astuce est dans le 'X' (cf. man chmod). Pour ce qui précède (a+r), il faut l'adapter en fonction du 'xxx' précédent.
ozit wrote:
J'ai cru lire qu'il fallait faire des scripts de 30 lignes pour avoir une fonction pour la reccursivité !
Vous pouvez utiliser File::Find ou gérer vous-même la récursivité. Find::Find contient bien plus de 30 lignes mais il est déjà écrit. Si vous le faites vous-même, il est possible de le faire en une dizaine de lignes si l'organisation du répertoire et son contenu est simple. Mais si vous voulez gérer tous les cas possibles (liens symboliques récursifs, liens cassés, fichiers spéciaux, etc.), vous retomberez sur un code aussi long que File::Find.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>