Per SFTP hochgeladene Dateien verfügen nicht über die richtigen Rechte

Per SFTP hochgeladene Dateien verfügen nicht über die richtigen Rechte

Beim Versuch, Dateien per SFTP auf einen Server hochzuladen, tritt ein seltsames Problem auf.

Wenn ich aus Sicherheitsgründen einen Benutzer mit deaktivierter Shell („/bin/false“) zum Hochladen von Dateien verwende, erhalte ich für die hochgeladenen Dateien den Modus 640, und das ist nicht das, was ich möchte (lokale Dateien haben den Modus 664).

Wenn ich jedoch die Shell „/bin/bash“ für denselben Benutzer aktiviere, erhalte ich den richtigen Modus, 664.

Ich verstehe nicht genau, was hier passiert. Warum ändert das Deaktivieren der Shell den Modus der hochgeladenen Dateien?

Meine SSHD-Konfiguration:

Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp

Antwort1

Da keine gültige Shell vorhanden ist, wird die systemeigene Standard-Umask nicht angewendet/verwendet.

Was Sie tun können, ist, Ihre Benutzer in eine Gruppe einzuordnen und über die Datei einige Dinge zu erzwingen /etc/sshd_config, darunter eine Umask -

Match Group uploadusers
  ForceCommand internal-sftp -u 0002

Die -u 0002Option legt eine Umask für das interne SFTP-Programm/Subsystem und alle darüber hochgeladenen Dateien fest, WENN der Benutzer Mitglied der uploadusersGruppe ist.

Persönlich richte ich chrootdie Benutzer auch so ein, dass sie nur auf ihre Verzeichnisse zugreifen können – aktivieren Sie die ChrootDirectoryOption, da sie auf eine Match GroupAnweisung in der sshd_configDatei zutrifft.

Antwort2

Der Grund dafür ist, dass bei Eingreifen einer Shell eine UMASK angewendet wird. In Ihrem Fall wird sie (für Bash) wahrscheinlich innerhalb von /etc/bashrc angewendet (dies setzt eine moderne Red Hat/Centos 7-Version voraus). Der Speicherort dieser Dateien kann variieren. Wenn Sie nichts verwenden, überprüfen Sie möglicherweise die UMASK-Einstellung in /etc/profile.

verwandte Informationen