Forum : eXV2 AdministrationTitel : Yet another CHMOD Script ;-)© 2004-2012 www.exv2.de http://www.exv2.de
URL dieser Diskussion
http://www.exv2.de/modules/newbb_plus/viewtopic.php?topic_id=841&forum=4
|
cap1 :
| 20.12.2003 00:08 |
Nachdem ich mir, wie wohl auch schon einige andere vor mir, das CHMOD Script von SEXOOPS gezogen habe, mußte ich feststellen, daß das Dingen leider nicht funktioniert.
Da ich hier im Forum keine Fehlermeldungen oder verzweifelte Hilferufe gefunden habe, denke ich mal, daß das vielleicht eine spezielle Sache der Interpretation von "chmod -R" entweder unter Linux (wie ja wohl hier die meisten benutzen ?!?) oder unter Solaris (mein Eimer) ist.
Wenn ich mir jedenfalls das Script anschaue, ist mir völlig klar, daß es nicht funktionieren kann (und mir ist es eigentlich mal ein Rätsel, warum es jemals funktioniert haben soll ? )
Ich hab' mich denn also gerade mal hingesetzt und ein neues geschrieben, daß dann auch gleich mal ein wenig kürzer ist.
DOCH VORSICHT, daß ist mit glühender Feder gestrickt, will sagen, muß auch aus dem E-XOOPS Root gestartet werden, sonst Ärger und prüft aber im Moment halt nicht, ob es das auch wirklich ist.
Hier dann mal den Code Schnipsel anbei. -- #!/bin/bash #
echo 'Changing all directories into 555' find . -type d -exec chmod 0555 {} \;
echo 'Changing all files into 444' find . -type f -exec chmod 0444 {} \;
echo 'Changing cache directories into 777 and files into 666' for FILE in `find . -name 'cache'`; ## do find $FILE -type d -exec chmod 0777 {} \; find $FILE -type f -exec chmod 0666 {} \; find $FILE -name 'index.html' -exec chmod 0444 {} \; done
echo 'Changing template files into 666' find . -name '*.tpl' -exec chmod 0666 {} \;
echo 'Ready'
exit 0 -- Wenn jemand hier noch Fehler entdeckt, zum Beispiel weitere Ausnahmedateien, wie die *.tpl (von denen ich vor dem Script von SEXOOPS noch nicht mal was gesehen hatte), dann bitte mal Bescheid sagen.
Gruß, CAP1. |
|
|
Nobse :
| 20.12.2003 16:08 |
Wenns denn so functioniert ist das doch OK. Ich kanns nicht testen arbeite nur unter Windows. |
|
|
cap1 :
| 22.01.2004 08:45 |
Da ich von Natur aus extrem faul bin, hab' ich mal das CHMOD Script nochmal überarbeitet.
Es werden jetzt auch die Spezialwünsche sämtlicher gängigen Module für e-xoops berücksichtigt. (z.B. BAMA Galeria, WebChat, ...).
Wie bei der vorigen Version (0.0.0.0.0.0.1 ) ist die hier auch wieder zwischen 2 Cappucini gestrickt, will sagen, es wird immer noch nicht kontrolliert, ob sich das Script im e-xoops ROOT befindet und vor Allem, wird auch nicht kontrolliert, ob die zu setzenden Module überhaupt vorhanden sind oder nicht.
Vorsicht, wenn nicht im e-xoops ROOT ausgeführt, dann Kiste danach tot.
Wenn ausgeführt und manche von den Modulen nicht da, dann ist nicht so schlimm, schmeißt halt nur ein paar Fehlermeldungen.
Code:#!/bin/bash #
echo 'Changing all directories into 555' find . -type d -exec chmod 0555 {} ;
echo 'Changing all files into 444' find . -type f -exec chmod 0444 {} ;
echo 'Changing cache directories into 777 and files into 666' for FILE in `find . -name 'cache'`; ## do find $FILE -type d -exec chmod 0777 {} ; find $FILE -type f -exec chmod 0666 {} ; #find $FILE -name 'index.html' -exec chmod 0444 {} ; done
echo 'Changing template files into 666' find . -name '*.tpl' -exec chmod 0666 {} ;
echo 'Changing special directories of some modules' find modules/PP-News/archives -type d -exec chmod 0777 {} ; find modules/PP-News/archives -type f -exec chmod 0666 {} ;
find modules/friendfinder/members/uploads -type d -exec chmod 0777 {} ; find modules/friendfinder/members/uploads -type f -exec chmod 0666 {} ;
find modules/tutorials/images -type d -exec chmod 0777 {} ; find modules/tutorials/images -type f -exec chmod 0666 {} ;
find modules/Cart/images -type d -exec chmod 0777 {} ; find modules/Cart/images -type f -exec chmod 0666 {} ;
find modules/bamagalerie3/images -type d -exec chmod 0777 {} ; find modules/bamagalerie3/images -type f -exec chmod 0666 {} ; find modules/bamagalerie3/galerie -type d -exec chmod 0777 {} ; find modules/bamagalerie3/galerie -type f -exec chmod 0666 {} ; find modules/bamagalerie3/thumbnails -type d -exec chmod 0777 {} ; find modules/bamagalerie3/thumbnails -type f -exec chmod 0666 {} ;
find modules/lmo/ligen -type d -exec chmod 0777 {} ; find modules/lmo/ligen -type f -exec chmod 0666 {} ; chmod 0666 modules/lmo/lmo-cfg.txt chmod 0666 modules/lmo/lmo-style.css
find modules/myadress/images_ann -type d -exec chmod 0777 {} ; find modules/myadress/images_ann -type f -exec chmod 0666 {} ;
find modules/MyAnnonces/images_ann -type d -exec chmod 0777 {} ; find modules/MyAnnonces/images_ann -type f -exec chmod 0666 {} ;
chmod 0666 modules/WebChat/inc/config.php
echo 'Changing index.html back to 0444 for security reasons' for FILE in `find modules -name 'index.html'`; ## do chmod 0444 $FILE done
echo 'Ready'
exit 0
Für die UNIX Gurus hier, ja ich weiß, das man das Script auch hätte mit einem Special Folder Array versehen und dann eine Funktion schreiben, anstatt die finds immer und immer wieder aufzurufen, aber wie das so ist, zwischen 2 Cappus ist nicht so viel Zeit. 
CAP1. |
|
|
Gast :
| 19.02.2004 12:07 |
und wie starte ich das ganze wenn die einzigste shell die ich benutzen kann ne ssh mit putty ist?
ich habe das dingens online noch nicht gestartet bekommen.
wenn ich einen eigenen server besitze, dann geht das sicherlich über die bash aber wenn nicht, was dann?
Dann tippe ich der reiche nach die ganzen finds und xargs der reihe nach ein? Oder gibts noch eine möglichkeit?
[ Geändert von vision an 19.02.2004 12:11 ] |
|
|
reintjan :
| 19.02.2004 18:49 |
Enschuldige, spreche kein Deutsch
It looks good to me! Would be nice if you could make this a working php script so that it can be run from any server that holds Exoops. People than only have to upload using FTP and refer their browser to the php file  |
|
|
cap1 :
| 19.02.2004 19:45 |
Zitat:und wie starte ich das ganze wenn die einzigste shell die ich benutzen kann ne ssh mit putty ist?
Die Frage versteh ich jetzt noch nicht ganz, denn wenn Du mit putty via ssh auf Büchse rauf kommst, dann hast Du ja eine ganz normale Shell (im Regelfall also *csh) unterm Hintern.
Da ich jetzt also nicht weiß, ob Du die Probleme beim Hochladen oder beim Ausführen hast, hier dann also mal ein kurzes """Tutorial""" für die Nutzung des Skripts.
Code: 1. Anlegen von chmod.sh. 1.1. vi chmod.sh 1.2. chmod 0700 chmod.sh 2. In das Verzeichnis wechseln, in dem sich Deine e-Xoops Installation befindet. 2.1. cd html/e-xoops 3. Das Skript starten 3.1. ~/chmod.sh
1. Das Anlegen der Datei kann auch durch Hochladen via ftp geschehen. Wenn durch den Editor, dann den Editor starten wie in 1.1., mit 'A' den Anfügemodus starten, über Windows den Quelltext einfügen (in putty mit der rechten Maustaste) und denn Editor hiernach mit 'ZZ' beenden (Datei wird dadurch auch gleich gespeichert.). Durch das Kommando von 1.2. wird die Datei ausführbar gemacht.
2. Es ist absolut wichtig, daß das Skript aus dem Verzeichnis gestartet wird, in dem sich die e-Xoops Installation befindet (also die mainfile.php), da das Skript derzeitig keine Kontrolle durchführt, ob dies so ist und man sich also an falscher Stelle mal das gesamte Dateisystem ruinieren kann.
3. Wenn man sich also an im Verzeichnis der e-Xoops Installation befindet, dann kann das Skript aufgerufen werden; in dem hier genannten Beispiel ging ich davon aus, daß das Skript im Heimverzeichnis ~ liegt.
Anmerkungen: Dieses Skript ist für so sämtliche derzeitig bekannten Module für e-Xoops vorbereitet und versucht deren Rechte mitzusetzen (speziell auch auf die jeweiligen Anforderungen vorbereitet). Wenn also Module fehlen, die das Skript aber setzen möchte, dann gibt es entsprechende Fehlermeldungen aus. Diese können aber einfach ignoriert werden, daß Skript bricht nicht ab.
Ich hoffe, daß das Deine Frage beantwortet hat ?
Gruß, CAP1. |
|
|
Gast :
| 20.02.2004 02:00 |
aha so geht das :-d
na dann danke ich mal schön für diesen kleinen unix howto.
gruss vison |
|
|
Gast :
| 20.02.2004 02:03 |
uploading the mass of files is a long run.  better to .zip it and than to upload unzip after uploading |
|
|
cap1 :
| 20.02.2004 07:44 |
Zitat:It looks good to me! Would be nice if you could make this a working php script so that it can be run from any server that holds Exoops. People than only have to upload using FTP and refer their browser to the php file
Well, I think I will not implement it as a php, because this file would have to exist in the main directory of the distribution and it should not be deleted, because after every update you make you would have to execute it.
So, this file have to be there and so, in my opinion, it is a security problem, because it is able to destroy the integrity of the file system.
What about other opinions ?
Regards, CAP1. |
|
|
cap1 :
| 20.02.2004 07:51 |
bama Zitat: dein Chmod Script habe ich mir auch angesehen ist jedoch für mich bei meiner BamaGalerie nicht so gut, da die Images auch auf 444 gesetzt werden dies für jedoch dazu, dass die Thumbnails nicht mehr geändert werden können.
Hallo und an alle,
das chmod.sh versucht zwar im Moment auf alle Module und spezielle Bedürfnisse direkt einzugehen, kann es aber natürlich nur in soweit ich es geschafft habe, die zu den Modulen gehörenden "ReadMe's" zu lesen, verstehen.
Wenn also das chmod.sh teilweise noch Rechte falsch setzt, wo ein Modul das eigentlich gern anders hätte, dann kurzen Hinweis hier bitte.
Inzwischen habe ich Änderungen für die BAMA Gallerie, den Liga Manager und verschiedene andere Module mit eingebaut.
Ich werde das ganze, entsprechend dem deploy.sh mal downloadable machen.
Gruß, CAP1. |
|
|
Gast :
| 20.02.2004 18:09 |
wenn ich das script aufrufe sagt er mir: command not found
und nun kommts: probiere ich es mit sh chmod.sh
command not allowed
ergo folgere ich das ich keine erlaubnis habe scripts in der shell aufzurufen
[ Geändert von vision an 22.02.2004 14:47 ] |
|
|
Gast :
| 25.02.2004 10:52 |
die alternative in perl die root eintragen, abspeichern als chmod.cgi, chmod 755 geben und aufrufen fertig falls fragen dazu auftauchen erkläre ich da gerne was ach ja, und fehler bitte laut melden
#!/usr/bin/perl -lw #
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
# Returns an array listing all the files that you want to search... ################# use File::Find; # my @files_found; &listFiles;
sub listFiles { my @dirs = ('root zu deinem exoops verzeichnis');
find(\&mysub, @dirs); return @files_found; }
sub mysub { push @files_found, $File::Find::name; }
foreach(@files_found) {
if (-d){ print "$_ chmod 0755 "; chmod(0755,$_); } if ((-d) && (/cache/)) { print "$_ chmod 0777 "; chmod(0777,$_); } if ((-d) && (/modules\/myadress\/images_ann/)) { print "$_ chmod 0777 "; chmod(0777,$_); } if ((-d) && (/modules\/bamagalerie\/images/)) { print "$_ chmod 0777 "; chmod(0777,$_); } if ((-d) && (/modules\/bamagalerie\/galerie/)) { print "$_ chmod 0777 "; chmod(0777,$_); } if ((-d) && (/modules\/bamagalerie\/thumbnails/)) { print "$_ chmod 0777 "; chmod(0777,$_); } if (-f) { print "$_ chmod 0644 "; chmod(0644,$_); } if ((-f) && (/cache/)){ print "$_ chmod 0666 "; chmod(0666,$_); } if ((-f) && (/modules\/myadress\/images_ann/)){ print "$_ chmod 0666 "; chmod(0666,$_); } if ((-f) && (/modules\/bamagalerie\/images/)) { print "$_ chmod 0666 "; chmod(0666,$_); } if ((-f) && (/modules\/bamagalerie\/galerie/)) { print "$_ chmod 0666 "; chmod(0666,$_); } if ((-f) && (/modules\/bamagalerie\/thumbnails/)) { print "$_ chmod 0666 "; chmod(0666,$_); } if ((-f) && (/modules/) && (/index.html/)){ print "$_ chmod 444 "; chmod(0444,$_); } if (/.tpl/){ print "$_ chmod 0666 "; chmod(0666,$_); } if (/mainfile.php/){ print "$_ chmod 444 "; chmod(0444,$_); } if (/chmod.cgi/){ print "$_ chmod 755 "; chmod(0755,$_); } } # print join (" ", @files_found);
[ Geändert von vision an 25.02.2004 17:36 ] |
|
|
cap1 :
| 26.08.2004 11:23 |
Hi Vision.
Zitat:wenn ich das script aufrufe sagt er mir: command not found.
Das ist jetzt das 3. Mal, daß ich lese, daß das Skript nicht gestartet werden kann und nun denn ist mir auch eingefallen, warum dem eventuell so ist.
Bevor so ein Skript auf 'ner UNIX Büchse ohne Zusatz gestartet werden kann, müssen die Rechte des Skripts selbst erst einmal darauf eingestellt werden, daß dieses Ding ausführbar zu sein hat.
Code:chmod 0700 chmod.sh
Die "0700" solltest Du nur benutzen, wenn Dir die Datei auch gehört; wenn nicht, dann "0755".
Zitat:probiere ich es mit sh chmod.sh: command not allowed
Das nun wiederum kann daran liegen, daß das Skript an sich auf einer ganz anderen Shell basiert ("bash").
Mit dem Setzen der Rechte wie oben beschrieben, solltest Du aber das Skript selbst starten können. |
|
|
|