Page 1 of 1

Chown

Posted: 2004-09-03 13:24
by sven-reichelt
Hallo!

Ich möchte ein Skript erstellen, weiß aber nicht genau die Kommandos dafür.

Also, das Skript soll für alle Dateien der Kundenwebs den Benutzer setzen.

Hab bis jetzt schonmal folgendes gebastelt:

Code: Select all

########################
PIDFILE="/root/bin/run/runchown.pid" # PID-File
HOMEDIR="/srv/www/htdocs"
########################
echo $$ > $PIDFILE;
      for HOME in $HOMEDIR/* ; do
        USER=${HOME##$HOMEDIR/}
        if test "$USER" != "*"; then
          if test -e $HOMEDIR/$USER/html ; then
            chown $USER:ftponly $HOMEDIR/$USER/html -R
          fi
        fi
      done
rm $PIDFILE;
Also, das Script sucht in /srv/www/htdocs nach Verzeichnissen und nimmt daraus den User.
Dann wird ein chown ausgeführt, dass den Benutzer $USER und die Gruppe ftponly für /html und alle Unterverzeichnisse setzt.

Passt das soweit?

Aber in /srv/www/htdocs lieg ja auch noch das Confixx-Verzeichniss und so weiter.
Wie kann ich das also nur für die webX-Verzeichnisse einstellen?

Beste Grüße,
Sven Reichelt

Re: Chown

Posted: 2004-09-09 00:40
by mr_neutron
Du könntest z.B. zuerst die Namen der User aus der /etc/passwd extrahieren und dann nach den passenden Verzeichnissen suchen.
Mal angenommen alle User sind in der Gruppe 'users' mit der gid 100:

Code: Select all

for USER in `grep '^[^:]*:x:[^:]*:100:' /etc/passwd | cut -d ':' -f 1`
do
    if [ -d /srv/www/htdocs/$USER/html ]
    then
        chgrp -R ftponly /srv/www/htdocs/$USER/html
    fi
done

Re: Chown

Posted: 2004-09-09 13:44
by sven-reichelt
Hm, das klingt ganz gut!

Aber leider habe ich ja Confixx!

Da sind die User so:

Code: Select all

web2:x:637:102::/srv/www/htdocs/web2:/bin/false
web3:x:638:102::/srv/www/htdocs/web3:/bin/false
Wie müsste dann der Code aussehen?
Weil ich habe da nicht die Kenntnisse...

Also die Gruppe wäre immer 102.

Könnte man die Arbeitsschritte evtl in eine pid-Datei schreiben damit man Fehler erkennen kann?

Wäre sehr nett!

Beste Grüße,
Sven Reichelt

Re: Chown

Posted: 2004-09-09 17:51
by mr_neutron
Ich kenne Confixx nicht so gut, aber wenn die User wirklich alle web<irgendwas> heißen, ist es natürlich noch einfacher.
Ersetze einfach in deinem Skript oben die Zeile

Code: Select all

for HOME in $HOMEDIR/* ; do
durch

Code: Select all

for HOME in $HOMEDIR/web* ; do