Existuje nějaký scénář tam, kde chce správce systému jen několik uživatelů, by mělo mít povoleno přenášet soubory do linuxových boxů, ale žádné ssh . Toho můžeme dosáhnout nastavením SFTP v prostředí chroot.
Pozadí SFTP a chroot:
SFTP znamenáSSH File Transfer Protocol nebo Secure File Transfer Protocol . SFTP poskytuje funkce pro přístup k souborům, přenos souborů a správu souborů přes jakýkoli spolehlivý datový tok. Když nakonfigurujeme SFTP v prostředí chroot, pak pouze povolení uživatelé budou omezeni na jejich domovský adresář , nebo můžeme říci, že povolení uživatelé budou ve vezení jako prostředí, kde ani nemohou změnit svůj adresář.
V článku nakonfigurujeme Chroot SFTP server na RHEL a CentOS systém . Máme jednoho uživatele ‘Jack “, tomuto uživateli bude povoleno přenášet soubory na Linuxu, ale nebude mít přístup ssh.
Krok:1) Vytvořte skupinu
Vytvořte skupinu sftp_users pomocí příkazu groupadd,
[[email protected] ~]# groupadd sftp_users
Krok:2) Přiřaďte uživateli sekundární skupinu (sftp_users)
Pokud uživatelé v systému neexistují, vytvořte jej pomocí příkazu níže,
[[email protected] ~]# useradd -G sftp_users -s /sbin/nologin jack [[email protected] ~]# passwd jack
Pro již stávající uživatele , použijte níže uvedený příkaz usermod :
[[email protected] ~]# usermod –G sftp_users -s /sbin/nologin jack
Poznámka: Pokud chcete změnit výchozí domovský adresář uživatelů a poté použijte ‘-d‘ možnost v příkazu useradd a usermod a nastavte správná oprávnění.
Krok :3) Nyní upravte konfigurační soubor „/etc/ssh/sshd_config“
Upravte soubor sshd_config pomocí svého oblíbeného editoru
# vi /etc/ssh/sshd_config #comment out the below line and add a line like below #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp # add Below lines at the end of file Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp
Kde:
Match Group sftp_users – To znamená, že následující řádky budou pouze pro uživatele, kteří patří do skupiny sftp_users
ChrootDirectory %h – Toto je cesta (výchozí domovský adresář uživatele), která bude použita pro chroot po ověření uživatele. Takže pro Jacka to bude /home/jack.
ForceCommand internal-sftp – Toto vynutí provedení internal-sftp a ignoruje všechny příkazy, které jsou zmíněny v souboru ~/.ssh/rc.
Po provedení výše uvedených změn restartujte službu ssh pomocí následujícího příkazu,
[[email protected] ~] # systemctl restart sshd
Krok:4) Nastavte požadovaná oprávnění pro domovský adresář uživatele
Stejně jako v naší ukázce používáme uživatele jack jako uživatele sftp, takže spusťte následující příkazy pro nastavení požadovaných oprávnění v jeho domovském adresáři,
[[email protected] ~]# chmod 755 /home/jack [[email protected] ~]# chown root /home/jack [[email protected] ~]# chgrp -R sftp_users /home/jack
Pokud chcete, měl by mít uživatel jack povoleno nahrávat soubory a poté vytvořte složku pro nahrávání s níže uvedenými oprávněními,
[[email protected] jack]# mkdir /home/jack/upload [[email protected] jack]# chown jack. /home/jack upload/
Pokud je ve vašem systému povolen selinux, proveďte následující příkaz pro nastavení pravidel selinux,
[[email protected] ~] setsebool -P ssh_chroot_full_access on
Krok :5) Otestujte server Sftp
Nejprve se pokuste o přístup do systému pomocí ssh přes uživatele jack,
Jak můžeme vidět na výstupu výše, jack má povoleno ssh.
Nyní se zkusme přihlásit pomocí sftp,
Jak můžete vidět výše, uživatel jack je přihlášen přes SFTP a nemůže změnit adresář kvůli prostředí chroot.
Nyní proveďte nahrávání a stahování testování, jak je uvedeno níže:
Jak můžeme vidět výše, nahrávání i stahování pro uživatele jack funguje dobře. Tím je článek uzavřen, rádi byste se podělili o své názory a komentáře v sekcích komentářů níže.
Přečtěte si také : Jak nakonfigurovat SFTP server s Chrootem v Debianu 10