GNU/Linux >> Znalost Linux >  >> Linux

Chrootovaná uživatelská oprávnění k zápisu SFTP

Nedávno jsme našli řešení, které vypadá takto:

/etc/ssh/sshd_config:

...

Subsystem sftp internal-sftp

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

oprávnění k adresáři:

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

Nyní /home splňuje požadavky pro ChrootDirectory a nemohou být uvedeny uživateli s omezeným přístupem, ale sftponly uživatelé se nebudou moci přihlásit, pokud jsou jejich domovské adresáře nastaveny jako obvykle (/home/$LOGNAME ):v chrootovaném prostředí jejich domovské adresáře nejsou uvnitř /home ale přímo pod rootem (/ ).

řešení 1

Nastavte domovy omezených uživatelů tak, jak se zobrazí pod chroot:

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

varovat 1

Pokud některý z neomezených uživatelů nebo nějaký administrační skript používá bashovu vlnovkovou expanzi jako ~username rozbalí se na /username teď, což není to, co je myšleno.

Také správce, který vytváří sftponly uživatelé si musí pamatovat, že mají používat jinou než výchozí domovskou stránku. Řešitelné pomocí skriptu. Který musí správce nezapomenout použít.

řešení 2

Toto je alternativa k předchozí, kterou jsme nakonec použili:

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

To znamená vytvořit symbolický odkaz uvnitř /home na své vlastní dirname. Nyní pod chroot /home/username ukazuje na stejný adresář jako bez chroot. Pro uživatele s omezeným přístupem přihlášeným pomocí sftp se zobrazí jako /username . Do tohoto adresáře lze zapisovat jeho vlastníkovi (uživateli s omezeným přístupem). Uživatel s omezeným přístupem nemůže uvést své nadřazené nebo domovské adresáře žádného ze sourozenců podle jména.

Jediná zvláštní věc na sftponly uživatel je jeho účast v sftponly skupina. Zjistili jsme, že je jednodušší se s tím vypořádat než s řešením 1.

odmítne 2

  1. Nemůžete mít uživatele s názvem 'home' s domovským adresářem /home/home
  2. Se skripty, které procházejí /home, musíte být opatrní hierarchii a následujte symbolické odkazy.

Musíte vytvořit strukturu uvnitř domovského adresáře uživatele, jako je in a out dirs. Tyto adresáře by měl vlastnit uživatel a tam bude moci vkládat a získávat soubory.


Na našem serveru mám stejné nastavení. Používáme stejnou konfiguraci SSHD. Domovské adresáře uživatelů vlastní root a v nich jsou složky documents a public_html ve vlastnictví příslušných uživatelů. Uživatelé se pak přihlásí pomocí SFTP a zapisují do těchto složek (ne přímo do domovské). Protože pro ně není povoleno SSH, funguje to perfektně. V /etc/skel/ si můžete upravit, které adresáře se budou novým uživatelům vytvářet (alespoň v openSUSE, v jiných distribucích se tolik nevyznám).

Další možností by byl ACL (dokumentace openSUSE) - může přidat oprávnění k zápisu pro příslušného uživatele do jeho domovského adresáře.


Linux
  1. cp:nelze vytvořit adresář:Žádný takový soubor nebo adresář

  2. Jak zakázat Gnome vytváření dokumentů/videí/ v HOME?

  3. Proč mají všechny adresáře /home, /usr, /var atd. stejné číslo inodu (2)?

  1. Xemacs:Načíst všechny soubory do /home/barry/.emacs_barry?

  2. Nakonfigurujte Jenkins pro jiný user.home

  3. Jak změnit výchozí /tmp na /home/user/tmp

  1. Proč dávat věci jiné než /home do samostatného oddílu?

  2. Upravit domovský adresář pro uživatele LDAP v Linuxu

  3. Výchozí oprávnění pro domovské adresáře Linuxu