Toon posts:

[PERL] CHMOD alles

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe moet een cgi script eruit zien als ik alle bestanden in 1 directory wil CHMOD-en ?

Directory = /home/b/bsc/www/screen

Verwijderd

Topicstarter
Op donderdag 18 oktober 2001 17:58 schreef UniKoNSieMeN het volgende:
Hoe moet een cgi script eruit zien als ik alle bestanden in 1 directory wil CHMOD-en ?

Directory = /home/b/bsc/www/screen
Ik dacht zoiets als dit, maar werkt niet :(

#!/usr/bin/perl
chdir /home/b/bsc/www/screen
chmod '*';

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

chmod 777 /home/b/bsc/www/screen/*

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
#!/usr/bin/perl
chmod 644 /home/b/bsc/www/screen/*

en

#!/usr/bin/perl
chmod 644 /home/b/bsc/www/screen/*;

en

#!/usr/bin/perl
chmod 0644 /home/b/bsc/www/screen/*;

Geven internal error.
Meer ideeen ?

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 15-09 11:51

Tjark

DON'T PANIC

Misschien dat de 'www'-user waaronder de cgi-scripts draaien geen recht heeft om de rechten van de files/files in de dir te veranderen?

Zijn die files die je wilt veranderen ook met een cgi-script aangemaakt?

*insert signature here


Verwijderd

Topicstarter
Ja, ik heb ze geupload via zo'n upload-script.

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 14-09 09:56
system("/bin/chmod ...");

of

`/bin/chmod ...`

(voor de ... dat pad invullen).

Op deze manier start je het progje chmod i.p.v. de ingebouwde chmod-functie. Dit is alleen niet zo'n mooie oplossing - maar zou moeten werken als je de permissies mag wijzigen.

Wat de ingebouwde functie betreft: misschien dat het komt omdat je meerdere files opgeeft, dat hij het niet doet vanwege beveiligingsmaatregelen in perl? Doet een enkel bestand het wel?

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Werkt allemaal niet.
1 bestand chmod-en ook niet.

Die persoon van dat upload-script zegt dat ie iets kan maken zodat ze gelijk 644 zijn.
Maarja dat kost weer $60

Oftewel het is/moet wel mogelijk zijn.

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 15-09 11:51

Tjark

DON'T PANIC

Wat zijn de rechten van /home/b/bsc/www/screen ?
en welke user/group?

en welke user/group/rechten hebben de files?
en welke user/group is de www-user?

*insert signature here


  • mullah
  • Registratie: April 2000
  • Laatst online: 28-05 12:26
Op donderdag 18 oktober 2001 20:02 schreef UniKoNSieMeN het volgende:
Werkt allemaal niet.
1 bestand chmod-en ook niet.

Die persoon van dat upload-script zegt dat ie iets kan maken zodat ze gelijk 644 zijn.
Maarja dat kost weer $60

Oftewel het is/moet wel mogelijk zijn.
betaal dan gewoon die $60?? of zoek een andere host... :)
Je moet maar FF denken hoeveel tijd je eraan bezig bent om het zelf te fiksen, en of het je dat zoveel waard is.

als je CHMOD nog aan de praat krijgt.. optie "-R" doet het recursief, dus ook voor alle files in subdirectories ( is mijn post toch nog beetje nuttig )

Verwijderd

De truuk is niet achter af chmod'en maar vooraf umasken...

dus:
code:
1
2
3
4
5
6
#!/path/2/perl

umask 022 
open(OUT, ">/path/2/some_file") || die("No such file!");
print OUT "TESTING !"
close(OUT);

het bestand is nu v 644 ofwel '-rw-r--r--'

dat :
code:
1
2
#!/usr/bin/perl
chmod 0644 /home/b/bsc/www/screen/*;

niet werk is nogal logisch. * is een variable aanduider en als je geen "'s om die string heen zet gaat het niet lukken. Daarnaast worden '/' ook nog wel eens verkeerd geinterpreteerd als ze niet binnen "" of '' staan. Tenzij je ze escaped...

good luck!

PS:

Als je dit script door een webserver heen gaat trekken doe je code dan zo:
code:
1
2
3
4
5
6
7
8
9
10
11
#!/path/2/perl

use CGI::fatalsToBrowser;

open(OUT, ">/path/2/file") || croak("File open failed");
flock(OUT,2);    # locks the file for others

...

flock(OUT, 8);   # opens the file to others again
close(OUT);

is wel zo netjes...
Pagina: 1