Anzeige:
Ergebnis 1 bis 5 von 5

Thema: ein denkanstoss ist erwünscht

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.11.2001
    Ort
    D´dorf
    Beiträge
    10

    ein denkanstoss ist erwünscht

    hi to all

    habe folgendes script geschrieben um auf meinem apache-testserver die ausführungsrechte regelmäßig zu ändern, weil hier auch dateien von win-clients gespeichert werden, die zb. htmldateien mit 0744 speichern. diese sollen aber 0644 sein, usw.

    __________________________________________________ ____

    #! /bin/sh
    #
    # Verzeichnisrechte aendern mit chmod
    #
    chmod 0755 $(find /usr/local/httpd/htdocs/selfservix -name '*')
    chmod 0644 $(find /usr/local/httpd/htdocs/selfservix -name '*.*')
    #
    chmod 0755 $(find /usr/local/httpd/htdocs/cugel -name '*')
    chmod 0644 $(find /usr/local/httpd/htdocs/cugel -name '*.*')
    #
    chmod 0755 $(find /usr/local/httpd/htdocs/sternberatung -name '*')
    chmod 0644 $(find /usr/local/httpd/htdocs/sternberatung -name '*.*')


    das ganze ist aber ein wenig unflexibel bzw aufgebläht, wenn ein neues verzeichnis hinzu kommt muss ich es per hand eintragen. da hier aber auch noch verzeichnisse liegen die anderen usern gehoeren (insgesamt 3 user) kann ich ja nicht einfach htdocs als wurzel nehmen.
    wie kann ich das etwas einfacher kürzer machen, bin dankbar für nen tip,

    greetz rabenkind )

  2. #2
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Hier ein Perl-Script, dass ich so ähnlich selber ab und zu mal benutze:
    Code:
    #!/usr/bin/perl
    
    open(PASSWD, '/etc/passwd');
    @pass = <PASSWD>;
    $pfad = '/usr/local/httpd/htdocs/';
    
    for($i = 0; $i < $#pass; $i++)
    {
    	chomp $pass[$i];
    	($name, $blarg, $uid) = split(/:/, $pass[$i], 4);
    	#Ändere die Rechte von $pfad Für alle user mit einer UserID höher als 100
    	if($uid > 100)
    	{
    		print "Changing permission for user $name in $pfad...\n";
    		system("chmod -Rv 0755 $pfad$name");
    		system("chmod -Rv 0644 $pfad$name");
    	}
    }
    close(PASSWD);
    Das ist IMO sehr flexibel und richtet sich nach der User-ID. Wenn diese über 100 ist, dann fängt er an die Rechte für alle Dateien in $pfad zu änderen.

    c ya,
    Tobias

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Code:
    BASE="/usr/local/httpd/htdocs/"
        chmod 0755 $(find $BASE -user $USER -name '*')
        chmod 0644 $(find $BASE -user $USER -name '*.*')
    Aber wieso die Unterscheidung * und *.* ?Dateien/Verzeichnisse(dafür gibt's -type d/-type f)?

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.11.2001
    Ort
    D´dorf
    Beiträge
    10

    denkanstoss kommt langsam an

    hi to all

    erstmal danke euch beiden, für die ideen.

    @tkortkamp
    mit perl will ich nicht weil ich gerade scripten in der bash lernen möchte. aber die idee mit den user ids ist gut.

    jetzt habe ich folgendes gemacht läuft auch,

    BASE="/home/michael/texte/"
    chmod 0755 $(find $BASE -type d -user $USER -name '*')
    chmod 0644 $(find $BASE -type f -user $USER -name '*')

    aber wenn ich vorher noch USER="michael,thor,herbert"
    schreibe dann bricht das script ab

    da ich im moment kein geld für ein gutes buch habe kennt jemand vielleicht eine gute einführung in bashscripting?

    greetz rabenkind )

  5. #5

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •