Potřeboval jsem účtu hosta omezit na ftp přístup ke složkám, ke kterým má normálně v linuxu přístup z pozice svých práv. Host je ve skupině uživatelů, takže může číst z většiny složek v systému a tomu jsem chtěl zabránit. Chtěl jsem, aby se mohl pohybovat pouze ve své domovské složce /home/guest a aby v ní mohl dělat cokoli. Používám démona proftpd.
Nejdříve si otevřu konfigurační soubor /etc/proftpd.conf a do něj přidám řádky, které zamezí přístup uživateli guest do jakékoli složky skrz ftp na počítači.
<Directory /*> <Limit ALL> DenyUser guest </Limit> </Directory>
Tady si musím dát pozor na to, že pokud už mám v konfiguráku nějakou konfiguraci pro Directory /*, přidám její obsah do již existující. Tzn tag Limit vložím někam do tagu Directory /*.
Nyní pod to vložím řádky, které naopak povolí přístup, ale pouze v uživatelově složce.
<Directory /home/guest> <Limit ALL> AllowUser guest </Limit> </Directory>
A teď už jenom nastavím složku, do které bude defaultně po přihlášení přemístěn.
DefaultRoot /home/guest guest
Uložím konfigurační soubor a pomocí příkazu
/etc/init.d/proftpd restart
restartuji ftp démona. Na konci konfiguračního souboru je zakomentovaný řádek #DefaultRoot ~ , jeho odkomentování způsobí, že úplně všichni uživatelé budou uzamčeni ve svých domovských složkách.
Ještě zakážu uživateli guest možnost přihlášení do shellu, protože tam stále platí linuxová práva. Nejdříve si vytvořím kopii pseudo shellu /bin/false, pod novým názvem /bin/ftp, kvůli přehlednosti.
cp /bin/false /bin/ftp
A tento nový shell přidám mezi ostatní do seznamu použitelných shellů /etc/shells pomocí příkazu
echo "/bin/ftp" >> /etc/shells
Přidání do seznamu shellů nemusím provádět pomocí přesměrování výstupu, ale můžu ho zeditovat nějakým textovým editorem, podle chuti. A teď tento shell nastavím uživateli guest jako výchozí
usermod -s /bin/ftp guest