Shared Hosting, stoppen Benutzer das Löschen der .html-Datei?

433
Kal

Hallo Leute, ich habe ein kleines Shared Hosting eingerichtet, das für Freunde eingerichtet wurde.

Ich habe die Datei chmod Berechtigungen gesetzt

chmod 711 /home  chmod 711 /home/testuser  chmod 755 /home/testuser/public_html  chmod o+r /home/testuser/public_html/index.htm  

Wie verhindere ich, dass der Benutzer, der mit seinem eigenen FTP verbunden ist, die Datei html.htm löscht und dass das öffentliche Verzeichnis auf chmod 755 gesetzt ist, finde ich, dass sie im Verzeichnis nichts tun können, z. B. Upload / Delete?

Zusatzinfo: Ich bin gelaufen

setsebool -P httpd_enable_homedirs true chcon -R -t httpd_sys_content_t /home/testuser/public_html 

aber keine Wirkung

0
make somebody else own it but I suppose if they have write access then they could delete it. so you could make a script so if the file doesn't exist it recreates it. barlop vor 11 Jahren 0
Wenn die Berechtigung für die Datei 755 ist, können Sie nicht verhindern, dass der Benutzer die Datei entfernt. Ramhound vor 11 Jahren 0

3 Antworten auf die Frage

1
terdon

Wen verbindet der Benutzer als? So wie Sie es eingerichtet haben, kann nur der Eigentümer in public_html schreiben.

Sie haben es derzeit auch so eingerichtet, dass Benutzer sie eingeben können, /home/testuseraber nicht lesen können. Vielleicht möchten Sie etwas wie:

chmod 711 /home  chmod 755 /home/testuser  chmod 777 /home/testuser/public_html  chmod 644 /home/testuser/public_html/index.htm  chown root /home/testuser/public_html/index.htm  
1
alexis

Herkömmliche Unix-Berechtigungen bedeuten, dass ein Benutzer, wenn er Dateien in einem Verzeichnis erstellen kann, auch darin enthaltene Dateien löschen kann, selbst wenn die Datei selbst schreibgeschützt ist und nicht zu ihnen gehört. Sie können also nicht schützen html.htm(was auch immer das ist), wenn es sich in einem Verzeichnis befindet, auf das sie Schreib- / Ausführungszugriff haben sollten. Vielleicht können ACLs helfen, wie @vonbrand vorschlägt (aber ich bin nicht mit ihnen vertraut, und @vonbrand verspricht nicht, dass es funktionieren wird).

  1. Das Verzeichnis muss nicht global schreibbar oder global ausführbar sein. Sie müssen jedoch sicherstellen, dass Ihr Webserver-Dämon Lesezugriff auf die Dateien hat. (Es läuft wahrscheinlich als Gruppe - www-dataaber check). Stellen Sie daher sicher, dass der Verzeichnisbesitzer mit der Benutzer-ID übereinstimmt, die der Benutzer beim Herstellen der Verbindung erhält, und Sie können den Modus 750 beibehalten.

  2. Wenn Sie mehrere Uids in dasselbe Verzeichnis schreiben müssen, müssen Sie Group-Write-Zugriff ( g+w) aktivieren . In diesem Fall würde ich eine andere Gruppe als verwenden www-dataund Apache schreibgeschützten Zugriff als "andere" gewähren. Mit anderen Worten, Modus 775.

  3. Behalten Sie auch Ihr Auge im Auge umask, das die Berechtigungen für neue Dateien steuert, die von den Benutzern erstellt werden. Wenn Sie über individuelle Konten verfügen, verwenden Sie umask 022zum Abgleichen. Wenn Sie über ein freigegebenes Gruppenverzeichnis verfügen, verwenden Sie umask 002, um Benutzern das Bearbeiten der Dateien des jeweils anderen zu ermöglichen. (Da sie Dateien löschen und ersetzen können, ist es sinnlos, sie zu schützen.)

0
vonbrand

Look for ACLs, that might solve your problem. Relevant manual entries are acl(5), setfacl(1), and getfacl(1). Support depends on the filesystem, though.

Könnten Sie Ihre Antwort mit Details anstelle von Links erweitern? Canadian Luke vor 11 Jahren 0
@Luke - Was für Links wären das :-) Ramhound vor 11 Jahren 0
@Ramhound Ich habe auf meinem Handy kein Stylesheet gesehen, als ich das gepostet habe Canadian Luke vor 11 Jahren 0
@Luke - Ich bin fast sicher, dass es Links gab. Ramhound vor 11 Jahren 0