Ändern der Berechtigungen für Benutzerdateien zur Automatisierung der Apache VirtualHost-Erstellung

Ändern der Berechtigungen für Benutzerdateien zur Automatisierung der Apache VirtualHost-Erstellung

Ich habe derzeit eine kleine Ubuntu Server 12.04-Maschine (Testumgebung) mit etwa 3 Nicht-Root-Benutzern erstellt. Jeder Benutzer hat sein eigenes public_htmlVerzeichnis unter seinem home…, wodurch er mehrere Apps als benannte virtuelle Hosts bereitstellen kann. Jeder Benutzer gehört zur Apache- www-dataGruppe, 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_htmlund 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/logsund wiederholen $vhost/backups?
  • Liege ich mit der Annahme richtig, dass das obige chmod wahrscheinlich überflüssig ist?
  • mkdirGibt 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

  1. Eigentlich ist es egal, welche Ordnerstruktur Sie verwenden.
  2. 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.
  3. Nein, da Sie immer einen Befehl verwenden müssen, chmodum die Berechtigung zu ändern, wenn Sie Änderungen manuell vornehmen.
  4. Sie können die Datei anweisen /etc/sudoers, $user das Erstellen beliebiger Verzeichnisse per mkdirBefehl zu erlauben.

verwandte Informationen