Alle meine hochgeladenen Dateien haben unbrauchbare Berechtigungen

Alle meine hochgeladenen Dateien haben unbrauchbare Berechtigungen

Ich bin gerade auf einen neuen Server umgezogen und bin auf einige merkwürdige Berechtigungsprobleme gestoßen.

Jede Datei, die ich hochlade, hat die Berechtigung 600, gehört dem Benutzerkonto und befindet sich auch in derselben Gruppe. Mit dieser Berechtigung kann der Server keine Änderungen an diesen Dateien vornehmen.

Der Ordner, in den ich hochlade (über normales SFTP), hat die Berechtigung 755.

Warum erhalten alle neuen Dateien, die ich hier hochlade, diese Berechtigung 600? Und wie ändere ich das, sodass hinzugefügte Dateien Berechtigungen erhalten, damit sie vom Webserver geändert werden können?

Notiz: Ich habe vsftpd installiert, das eine Einstellung enthält, um die Standard-Umask festzulegen. Die Anmeldung über diesesftpes funktioniert wie erwartet. Dies behebt das Problem jedoch nicht bei der Anmeldung übersftp.

Antwort1

Meine grundlegende Lösung hierfür besteht darin, ein Skript zu erstellen, das zwischen SSH und SFTP sitzt und die Umask ändert, wenn sich der Benutzer anmeldet:

> vim /opt/sftp-server.sh

#!/bin/bash
umask 022
/usr/libexec/openssh/sftp-server

Bearbeiten Sie dann die ssh_d-Konfigurationsdatei (/etc/ssh/sshd_config) und bearbeiten Sie die SFTP-SubSystem-Zeile, sodass sie auf Ihr Skript verweist:

Subsystem       sftp    /opt/sftp-server.sh

Stellen Sie sicher, dass Sie die Berechtigungen für Ihr neues Skript richtig festgelegt haben:

> chmod 755 /opt/sftp-server.sh

Jetzt sollten über SFTP hochgeladene Dateien die Berechtigung 755 haben!

http://blog.mrmason.net/2009/05/27/changing-default-file-permissions-for-sftp/

Antwort2

Der SFTP-Server ist das SFTP-Subsystem, das im Allgemeinen mit OpenSSH verwendet wird.

Bei näherer Betrachtung des Befehls:

$ /usr/lib/openssh/sftp-server -h
usage: sftp-server [-ehR] [-f log_facility] [-l log_level] [-u umask]

Daher können wir die Standard-Umask für Verbindungen festlegen, indem wir bei der Initialisierung den Schalter -u übergeben. /etc/ssh/sshd_configSuchen Sie dort, wo das SFTP-Subsystem definiert ist, nach der Zeile.

Subsystem sftp /usr/lib/openssh/sftp-server

und ändern Sie es so, dass es wie folgt aussieht:

Subsystem sftp /usr/lib/openssh/sftp-server -u 0022

Um zuzulassen, dass erstellte Dateien die Standard-Umask 644 und Dateien 755 haben

Denken Sie daran, dass diese Einstellung global ist und sich auf alle über SFTP übertragenen Dateien auswirkt. Berücksichtigen Sie daher vor der Implementierung die Sicherheit.

verwandte Informationen