Chown

Bash, Shell, PHP, Python, Perl, CGI
sven-reichelt
Posts: 92
Joined: 2003-04-25 15:08

Chown

Post by sven-reichelt » 2004-09-03 13:24

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

mr_neutron
Posts: 14
Joined: 2004-09-06 18:57

Re: Chown

Post by mr_neutron » 2004-09-09 00:40

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

sven-reichelt
Posts: 92
Joined: 2003-04-25 15:08

Re: Chown

Post by sven-reichelt » 2004-09-09 13:44

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

mr_neutron
Posts: 14
Joined: 2004-09-06 18:57

Re: Chown

Post by mr_neutron » 2004-09-09 17:51

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