GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gechrootete SFTP-Benutzerschreibberechtigungen

Wir haben vor Kurzem eine Problemumgehung gefunden, die wie folgt aussieht:

/etc/ssh/sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Verzeichnisberechtigungen:

[email protected]:~ # chown root:root /home
[email protected]:~ # chmod 111 /home
[email protected]:~ # chmod 700 /home/*

Jetzt /home erfüllt die Anforderungen für ChrootDirectory und kann nicht von eingeschränkten Benutzern aufgelistet werden, aber sftponly Benutzer können sich nicht anmelden, wenn ihre Home-Verzeichnisse wie gewohnt eingerichtet sind (/home/$LOGNAME ):Unter der Chroot-Umgebung befinden sich ihre Home-Verzeichnisse nicht innerhalb von /home aber direkt unter root (/ ).

Problemumgehung 1

Stellen Sie die Homes eingeschränkter Benutzer so ein, wie sie unter Chroot erscheinen:

[email protected]:~ # usermod -d /username username

Vorbehalt 1

Wenn einer der uneingeschränkten Benutzer oder ein Verwaltungsskript die Tilde-Erweiterung von Bash verwendet, z. B. ~username es wird auf /username erweitert nun, was nicht gemeint ist.

Auch der Administrator, der sftponly erstellt Benutzer müssen daran denken, die nicht standardmäßige Startseite zu verwenden. Mit einem Skript lösbar. Die der Administrator verwenden muss.

Problemumgehung 2

Dies ist eine Alternative zu der vorherigen, die wir letztendlich verwendet haben:

[email protected]:~ # ln -s . /home/home

Das heißt einen Symlink in /home erstellen zu seinem eigenen dirname. Jetzt unter Chroot /home/username zeigt auf dasselbe Verzeichnis wie ohne Chroot. Für eingeschränkte Benutzer, die mit sftp angemeldet sind, würde es als /username erscheinen . Dieses Verzeichnis ist für seinen Eigentümer (eingeschränkter Benutzer) beschreibbar. Eingeschränkte Benutzer können ihre übergeordneten oder Home-Verzeichnisse von Geschwistern nicht namentlich auflisten.

Das einzig Besondere an einem sftponly Benutzer ist seine Teilnahme am sftponly Gruppe. Wir fanden es einfacher zu handhaben als die Problemumgehung 1.

beschränkt 2

  1. Sie können keinen Benutzer namens 'home' mit einem Home-Verzeichnis /home/home haben
  2. Seien Sie vorsichtig mit Skripten, die /home durchlaufen Hierarchie und folgen Sie Symlinks.

Sie müssen eine Struktur innerhalb des Home-Verzeichnisses des Benutzers erstellen, wie in- und out-Verzeichnisse. Diese Verzeichnisse sollten dem Benutzer gehören und er kann dort Dateien ablegen und abrufen.


Ich habe die gleichen Einstellungen auf unserem Server. Wir verwenden dieselbe Konfiguration von SSHD. Die Home-Verzeichnisse der Benutzer gehören root und darin befinden sich die Ordner documents und public_html im Besitz der jeweiligen Benutzer. Benutzer melden sich dann mit SFTP an und schreiben in diese Ordner (nicht direkt in Home). Da SSH für sie nicht erlaubt ist, funktioniert es einwandfrei. Sie können einstellen, welche Verzeichnisse für neue Benutzer in /etc/skel/ erstellt werden (zumindest in openSUSE, ich bin mit anderen Distributionen nicht so vertraut).

Eine andere Möglichkeit wäre ACL (openSUSE-Dokumentation) - es kann dem jeweiligen Benutzer Schreibrechte für sein Home-Verzeichnis hinzufügen.


Linux
  1. Berechtigungen für SSH- und Home-Verzeichnisse?

  2. Xemacs:Alle Dateien in /home/barry/.emacs_barry laden?

  3. „Cache-Verzeichnis /home//.composer/cache/repo/https—packagist.org/ kann nicht erstellt werden, oder Verzeichnis ist nicht beschreibbar. Ohne Cache fortfahren“?

  4. Warum andere Dinge als /home auf eine separate Partition legen?

  5. Bearbeiten Sie das Home-Verzeichnis für einen LDAP-Benutzer in Linux

Ansible SSH-Authentifizierung und Rechteausweitung

Erstellen Sie ein Home-Verzeichnis für einen bestehenden Benutzer in Linux

Großartiger Kundenservice, über den man nach Hause schreiben kann

mv:kann nicht nach Hause wechseln-alt:Gerät oder Ressource ausgelastet

Warum haben die Verzeichnisse /home, /usr, /var usw. alle dieselbe Inode-Nummer (2)?

So ändern Sie das Standard-/tmp in /home/user/tmp