[Perl] Permissions

Permissions [Perl] - Perl - Programmation

Marsh Posté le 13-01-2006 à 11:05:15    

Bonjour,
 
bricolant du Perl depuis 2 mois seulement, je suis pas encore un spécialiste et y a des trucs encore qui m'échappent :D  
 
La question du jour concerne les permissions sur les fichiers.
 
- J'appartiens à un groupe administrateur sur une machine distante (Win Server 2003)
- Je m'y connecte en Client Terminal Server depuis un poste... NT4 :whistle:  
- J'exécute un script Perl (perl -w machin.pl argumnent_bidule)
- En faisant un

Code :
  1. unlink $fic_dat
  2.   or warn "Impossible de supprimer $fic_dat : $!\n";


(et a priori pour un "rename" ) j'ai un "permission denied".
- Je peux évidemment créer / modifier / renommer / déplacer / supprimer des fichiers depuis une invite de commande ou un explorateur.
 
Pour information $fic_dat contient le chemin complet de mon fichier et le fichier a été créé par un autre utilisateur du même groupe admin. Ce dernier obtient le même résultat en lançant le script.
 
Je suppose donc que n'importe qui lançant le script Perl obtiendrait le même résultat. Est-ce que je me trompe ?
 
Et sinon, comment expliquer ça ? Comment Perl gère les droits ? J'ai aucune envie de faire un system "del"...
 
Merci

Reply

Marsh Posté le 13-01-2006 à 11:05:15   

Reply

Marsh Posté le 13-01-2006 à 22:52:47    

nibbles1 a écrit :


Je suppose donc que n'importe qui lançant le script Perl obtiendrait le même résultat. Est-ce que je me trompe ?


 
Par forcement... tu as essaye avec l'utilisateur qui a cree le fichier ? (si ce n'est pas possible tu peux toujours essayer en creant un compte de test).
 

nibbles1 a écrit :


Et sinon, comment expliquer ça ? Comment Perl gère les droits ? J'ai aucune envie de faire un system "del"...


Les droits ne sont pas "gere" par Perl mais par le systeme d'exploitation. L'interaction entre les programmes et l'OS se font via des appels systemes. Perl vient du monde unix et s'est construit sur une suite d'appels systemes bases sur une norme. Cette norme s'appel Posix. Windows est compatible Posix 1 depuis NT4. Appriori, il ne devrait pas y avoir de problemes, malheureusement la gestion des droits sous windows est beaucoup plus fine que sous unix (acl). Quoiqu'il en soit rien ne permet d'affirmer que sous windows l'appel systeme DeleteFile (ce que doit utiliser le programme del) fasse les memes verifications que unlink.
 
Tu devrais essayer d'utilise l'api native de Windows DeleteFile que tu trouveras dans le modules Win32API::File
http://search.cpan.org/dist/Win32API-File/File.pm
 
Tu devrais jouer avec ca aussi :
http://search.cpan.org/~nwclark/pe [...] 2/Win32.pm
http://www.xav.com/perl/site/lib/Win32/File.html
http://www.xav.com/perl/site/lib/W [...] urity.html
 
Bonne chance, je ne fait que supposer...


Message édité par Danjer le 13-01-2006 à 22:53:57

---------------
Cdl, Danjer
Reply

Marsh Posté le 14-01-2006 à 00:00:18    

En fait un system("del" ) échoue aussi et dit que le fichier est utilisé par un autre processus.
 
Désolé j'ai oublié de précisé que j'avais résolu le problème, le handle de fichier était ouvert...
 
Merci quand même :)


---------------
JeanBeulz, chercheur coincheur
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed