Ändern Sie die Berechtigungen des SFTP-Benutzers, wenn Sie Dateien auf den Webserver übertragen

636
JPinkstone

Ich habe einen Webserver erstellt und habe zwei Benutzer, die sich über SFTP anmelden können, um Ordner / neue Dateien zu ändern, zu bearbeiten, anzuzeigen und zu erstellen. Wenn die beiden Benutzer eine neue Datei erstellen, sind die Berechtigungen -rw-r - r--. Ich brauche die Berechtigungen, um auch das Schreiben des anderen Benutzers zuzulassen, was sie momentan nicht können. Ich habe versucht, die Datei umask, die sshd-config-Datei, die Gruppenberechtigungen usw. zu ändern, aber ich kann immer noch nicht herausfinden, wie ich das beheben kann. Jede Hilfe wird sehr geschätzt. Vielen Dank!

Der Webserver betreibt Raspbian auf einem Raspberry Pi. Ich habe Apache, PHP, MySQL und PHPmyAdmin installiert. Ich verbinde mich mit dem Pi via SFTP von FileZilla auf einem Mac.

0
"Ich habe versucht, die umask, sshd-config-Datei zu ändern, ..." - Was * genau * haben Sie versucht? Kamil Maciorowski vor 6 Jahren 0
Ich habe die umask in 000 geändert und die Zeile "ForceCommand sftp-Internal -u 2" zur sshd-config hinzugefügt JPinkstone vor 6 Jahren 0
Ja, ich bin sicher, dass es SFTP ist, da ich über Port 22 eine Verbindung herstelle und filezilla auf einem Mac verwende. Vielen Dank JPinkstone vor 6 Jahren 0
Ich habe FileZilla unter Ubuntu verwendet. Bestätigt, können Dateien erstellt werden. Aber für mich erstellt es Dateien in Bezug auf die entfernte umask. Was ist das Betriebssystem auf Ihrem Server? Gibt es "sshd"? oder etwas anderes (zB "dropbear")? Auf welchem ​​Dateisystem erstellen Sie neue Dateien? Wie ist das Dateisystem eingehängt? Bitte [bearbeiten] Sie die Frage und fügen Sie diese Informationen zusammen mit allen anderen relevanten Informationen aus Ihren Kommentaren hinzu (beispielsweise wenn Sie FileZilla auf einem Mac verwenden). Es geht darum, anderen Benutzern alles Wichtige mitzuteilen, ohne dass sie alle Kommentare lesen und Informationen suchen, die dort verstreut sind. Kamil Maciorowski vor 6 Jahren 0
@KamilMaciorowski Nur, danke JPinkstone vor 6 Jahren 0

2 Antworten auf die Frage

2
Kamil Maciorowski

Ich habe für dich recherchiert.

Mein (lokaler) Client ist Ubuntu, mein (Remote-) Server ist Raspbian. Ich verbinde mich über SFTP mit dem sftpinteraktiven Befehl des Clients . Ich habe eine Testdatei mit lokalen Berechtigungen -rwxrwxrwxmit folgendem Befehl vom Client an den Server übertragen sftp:

put testfile 

Die Remote-Kopie erbte die Berechtigungen, mit der Ausnahme, dass einige von der Remote-Umask maskiert wurden. Dies war 0022die Remote-Berechtigung -rwxr-xr-x. Dies wird erwartet.

Dann bearbeitete ich die Fernbedienung ~/.profileauf (vorübergehend) umask als 0002. Nach dem erneuten Einloggen funktionierte der neue umask in der Remote-Shell. Ich startete mein lokales neu sftpund testete erneut, aber die neue entfernte Kopie gehorchte nicht der neuen umask.

Keine überraschung In meiner Fernbedienung .profileheißt es:

Installieren und konfigurieren Sie das Paket libpam-umask, um die Umask für SSH-Anmeldungen festzulegen

Es stellte sich heraus, dass libpam-umaskin der Tat libpam-modules. Es wurde bereits installiert.

Ich habe diese Dokumentation gelesen . Es gibt ein Beispiel:

Fügen Sie die folgende Zeile hinzu, /etc/pam.d/loginum die benutzerspezifische umask bei der Anmeldung festzulegen:

session optional pam_umask.so umask=0022 

Ich habe das Remote- /etc/pam.dVerzeichnis überprüft und vermutet, dass ich die sshdDatei dort ändern muss, nicht login. Außerdem wollte ich nicht umask global an das Modul übergeben. Die Dokumentation sagt:

Das PAM-Modul versucht, den umask-Wert von den folgenden Stellen in der folgenden Reihenfolge abzurufen:

  • umask= Streit
  • umask= Eintrag im Feld GECOS des Benutzers
  • […]

Ich wählte GECOS, renne sudo vipwund fügte umask=0002meinen Eintrag hinzu. Gerettet. Das Ergebnis war:

kamil:x:1001:1004:Kamil Maciorowski,,,,umask=0002:/home/kamil:/bin/bash 

Dann fügte ich diese Zeile am Ende hinzu /etc/pam.d/sshd:

session optional pam_umask.so 

Danach entfernte ich die Remote-Kopie von testfile, führte Local erneut aus sftpund übertrug die testfileerneut. Die neue Fernkopie gehorchte meinem gewählten umask.


Bearbeiten

Ich habe FileZilla auf meinem lokalen Ubuntu ausprobiert. Es erstellt Dateien auf dem Server in Bezug auf die entfernte umask. es kopiert lokale Dateien mit ihren lokalen Berechtigungen auch in Bezug auf die entfernte umask.

Mit FileZilla kann man die Berechtigungen einer Remote-Datei "von Hand" ändern. Ich verstehe, dass Sie dies vermeiden möchten.

(Bearbeiten endet hier)


Ich denke, das Verfahren für Sie ist wie folgt:

  1. Nehmen Sie das obige Beispiel und setzen Sie umask für die beiden fraglichen Benutzer, sodass die über SFTP erstellten Remote-Dateien nach Gruppe geschrieben werden können.
  2. Erstellen Sie eine spezielle Gruppe auf dem Server, fügen Sie die beiden Benutzer hinzu und machen Sie sie zur primären Gruppe.

(Ich werde Punkt 2 hier nicht im Detail erklären. Recherchieren; bei Problemen separate Frage stellen).

Auf diese Weise wird jede neue Datei, die von einem der beiden Benutzer über SFTP erstellt wurde, zu der speziellen Gruppe gehören und kann von dieser Gruppe beschrieben werden. Denken Sie daran, dass die kopierten Dateien ihre Berechtigungen so weit wie möglich beibehalten (zumindest in meinen Tests).

Vielen Dank für Ihre Antwort! Ich weiß das wirklich zu schätzen. Also habe ich alles versucht, was Sie gesagt haben, aber es scheint den Benutzern immer noch die Standardberechtigungen zu geben. Mein Benutzer 'webuser' habe ich zu "webuser: x: 1001: 1001: ,,,, umask = 0000: / var / www / html /: / bin / bash" geändert und die Zeile am Ende der sshd-Datei hinzugefügt. Ich erstelle eine Datei auf Filezilla auf dem Himbeer-Pi-Server und die Berechtigungen für diese Datei sind -rw-r - r--. Hast du eine Idee, was ich immer noch falsch mache? Danke noch einmal. JPinkstone vor 6 Jahren 0
In FileZilla kann ich einen Ordner oder eine Datei auf dem Webserver erstellen. Es erstellt eine tatsächliche Datei im HTML-Ordner für den Apache-Server. Ich kann eine test1.html-Datei auf dem Server erstellen. Ich konnte neue Dateien über FileZilla mit anderen Webservern erstellen. Danke nochmal für deine Hilfe. JPinkstone vor 6 Jahren 0
0
harrymc

Ich denke, dass filezilla nichts anderes tut, als die Datei mit den Standardberechtigungen zu erstellen, die auf dem Remote-Server angegeben sind.

Wenn Sie zur Verwendung des OpenSSH SFTP-Clients und -Servers wechseln könnten, können Sie putdas -PFlag verwenden.

Dadurch wird die Datei erstellt, die immer die normalen Berechtigungen für den Remote-Server erhält. Nachdem der Upload jedoch abgeschlossen ist, fordert der Client den Server ferner auf, die Berechtigungen explizit (erneut) mit der lokalen Datei über eine chmodAnforderung festzulegen, für die die umask nicht gilt.

Weitere Informationen finden Sie in dieser Antwort .