Der Eigentümer und die Gruppe von „www/website1“ ist root:www-data und ich kann als Root- oder Sudo-Benutzer an deren Inhalten oder Konfiguration herumbasteln.
Aber jetzt möchte ich eine weitere Website mit dem Namen website2 erstellen (unter dem Verzeichnis „www“), auf die ein Freund von mir Zugriff haben muss (damit er diese Website ganz einfach nach seinen Wünschen für mich konfigurieren kann). Aber er sollte nicht in der Lage sein, andere Verzeichnisse in meinem Betriebssystem zu manipulieren oder gar anzuzeigen, auch nicht mit sudo.
Zu diesem Zweck kann ich in meinem Ubuntu-Betriebssystem einen neuen Benutzer erstellen und eine FTP-Anmelde-ID/ein FTP-Passwort für ihn erstellen. Aber ich habe gesehen/festgestellt, dass er neben dem 777-Zugriff auf diese Website2 automatisch auch Lesezugriff auf den gesamten Stammordner und alle seine Unterordner erhält.
Gibt es eine Möglichkeit, dies schnell zu steuern, sodass er nur den erforderlichen 1 (oder 2) Ordner sehen kann, aber nicht mehr als die angegebenen? Außerdem möchte ich nicht nacheinander an den Eigenschaften aller anderen Ordner meines gesamten Betriebssystems herumbasteln. Danke.
Antwort1
www-data
ist hier der Schlüssel: das ist die Gruppe. Sie können Benutzer zu einer Gruppe hinzufügen, sodass sie basierend auf den Gruppenberechtigungen Zugriff auf Dateien und Verzeichnisse haben.
Der Befehl wäre:
usermod -a -G www-data {user2}
{user2} kann dann Dateien ändern, die mit dieser Gruppe verknüpft sind (außer den Dateien, die er selbst ändern kann).
Bei Bedarf können Sie sogar eine neue Gruppe erstellen, diese mit den beiden Benutzern verbinden und Benutzer2 auf die mit dieser Gruppe verbundenen Dateien beschränken. Apache verwendet www-data als Benutzer, aber dieser Benutzer kann auch mehr als die Gruppe www-data haben.
Ich habe gesehen/festgestellt, dass er neben dem 777-Zugriff auf diese Website2 automatisch auch Lesezugriff auf den vollständigen Stammordner und alle seine Unterordner erhält.
chmod 777 ist nie die Antwort, es sei denn, Sie schließen auch das Sticky-Bit ein.
Antwort2
verwenden Sie den folgenden Befehl:
setfacl -R -m user:{user2}:rwX www/website2
Dadurch sollte der Benutzer {user2} vollen Zugriff auf www/website2 und alles in diesem Verzeichnis erhalten.
Bearbeiten:Mir ist gerade aufgefallen, dass Ihr Problem darin besteht, dass {user2} Lesezugriff auf andere Verzeichnisse als www/website2 hat. Diese Verzeichnisse haben normalerweise standardmäßig Lesezugriff für „andere“, d. h. für jeden Benutzer, aktiviert – deshalb kann {user2} sie lesen. Ohne diesen Zugriff zu entfernen, können Sie {user2} nicht daran hindern, sie anzuzeigen. Die einzige Methode besteht – wie ich im Kommentar unter Ihrer Frage angegeben habe – darin, {user2} im FTP-Chroot-Jail einzusperren, sodass www/website2 das Stammverzeichnis für diesen Benutzer ist. Überprüfen Sie, ob Ihr FTP-Server dies unterstützt.