Ich habe für dich recherchiert.
Mein (lokaler) Client ist Ubuntu, mein (Remote-) Server ist Raspbian. Ich verbinde mich über SFTP mit dem sftp
interaktiven Befehl des Clients . Ich habe eine Testdatei mit lokalen Berechtigungen -rwxrwxrwx
mit 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 0022
die Remote-Berechtigung -rwxr-xr-x
. Dies wird erwartet.
Dann bearbeitete ich die Fernbedienung ~/.profile
auf (vorübergehend) umask als 0002
. Nach dem erneuten Einloggen funktionierte der neue umask in der Remote-Shell. Ich startete mein lokales neu sftp
und testete erneut, aber die neue entfernte Kopie gehorchte nicht der neuen umask.
Keine überraschung In meiner Fernbedienung .profile
heißt es:
Installieren und konfigurieren Sie das Paket libpam-umask, um die Umask für SSH-Anmeldungen festzulegen
Es stellte sich heraus, dass libpam-umask
in 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/login
um die benutzerspezifische umask bei der Anmeldung festzulegen:session optional pam_umask.so umask=0022
Ich habe das Remote- /etc/pam.d
Verzeichnis überprüft und vermutet, dass ich die sshd
Datei 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=
Streitumask=
Eintrag im Feld GECOS des Benutzers- […]
Ich wählte GECOS, renne sudo vipw
und fügte umask=0002
meinen 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 sftp
und übertrug die testfile
erneut. 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:
- 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.
- 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).