Ich habe derzeit eine kleine Ubuntu Server 12.04-Maschine (Testumgebung) mit etwa 3 Nicht-Root-Benutzern erstellt. Jeder Benutzer hat sein eigenes public_html
Verzeichnis unter seinem home
…, wodurch er mehrere Apps als benannte virtuelle Hosts bereitstellen kann. Jeder Benutzer gehört zur Apache- www-data
Gruppe, die wie folgt eingerichtet ist:
sudo usermod -a -G www-data [username]
sudo chown -R [username]:www-data /home/[username]/public_html
sudo chmod 2750 /home/[username]/public_html
Als Root-Benutzer bin ich gerade dabei, ein Bash-Skript zu erstellen, das die Erstellung der Ordner für den VirtualHost unter einem abgefragten Benutzer automatisiert public_html
und einen zugehörigen Eintrag in erstellt /etc/apache2/sites-available/
. Das Skript (ausgeführt mit sudo
) fordert den Benutzer ( $uzer
) und den gewünschten Namen des virtuellen Hosts ( $vhost
) an. Nachdem ich einige Prüfungen durchgeführt habe, komme ich schließlich zu folgendem Ergebnis ...
mkdir -vp /home/$uzer/public_html/$vhost
mkdir -vp /home/$uzer/public_html/$vhost/www
mkdir -vp /home/$uzer/public_html/$vhost/logs
mkdir -vp /home/$uzer/public_html/$vhost/backups
Ich muss den Besitz dieser neu erstellten Ordner ändern und bin mir daher nicht sicher, ob ich Folgendes tun soll:
chown -vR $uzer:www-data /home/$uzer/public_html/$vhost
chmod 2750 /home/$uzer/public_html/$vhost
Meine Fragen:
- Ist meine Ordnerstruktur korrekt/ideal?
- Ich weiß, dass ich die Option „rekursiv ()“ verwendet habe
-R
, aber sollte ich dasselbe für$vhost/www
,$vhost/logs
und wiederholen$vhost/backups
? - Liege ich mit der Annahme richtig, dass das obige chmod wahrscheinlich überflüssig ist?
mkdir
Gibt es eine Möglichkeit, die Befehle als Benutzer auszuführen$uzer
?
Antwort1
F: Ist meine Ordnerstruktur korrekt/ideal?
A: Die Ordnerstruktur scheint in Ordnung zu sein.
F: Ich weiß, dass ich die rekursive Option (-R) verwendet habe, aber sollte ich dasselbe für $vhost/www, $vhost/logs und $vhost/backups wiederholen?
A: Es wäre redundant, es in diesen Verzeichnissen auszuführen
F: Liege ich richtig in der Annahme, dass das obige chmod wahrscheinlich überflüssig ist?
Ja, technisch gesehen ist es überflüssig, da Ihr anfänglicher Sudo, der die Verzeichnisse erstellt, das „Set Group ID Bit“ setzt, aber das Setzen dieses Bits (die 2 in 2750) ist keine Garantie. Ich habe Verzeichnisse mit dieser Einstellung gesehen, in die Benutzer entweder Dateien verschoben oder versehentlich die Gruppe der Dateien geändert haben, also würde ich es so lassen.
Gibt es eine Möglichkeit, die mkdir-Befehle als Benutzer $uzer auszuführen?
root$ su -u $user -c "mkdir ..."
Sie können durch die Verwendung des Schalters auch einen Schritt beim Chmod von /www, /log und /backups sparen mkdir --mode=...
.
Zum Beispiel
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/www
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/logs
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/backups
Antwort2
- Eigentlich ist es egal, welche Ordnerstruktur Sie verwenden.
- Wenn Sie die Option in chown verwenden
-R
, wirkt sich dies nur auf die Dateien und Verzeichnisse aus, die zum Zeitpunkt der Ausführung des Befehls vorhanden sind. - Nein, da Sie immer einen Befehl verwenden müssen,
chmod
um die Berechtigung zu ändern, wenn Sie Änderungen manuell vornehmen. - Sie können die Datei anweisen
/etc/sudoers
, $user das Erstellen beliebiger Verzeichnisse permkdir
Befehl zu erlauben.