Fórum Root.cz
Hlavní témata => Software => Téma založeno: Gwyn 30. 05. 2010, 23:59:05
-
Dobrý den,
snažím se nakonfigurovat sftp server podle článku od Petra Krčmáře na zdrojáku:
http://www.root.cz/clanky/jak-nahradit-ftp-pomoci-sftp-a-zamknout-uzivatele/
Distro: Debian Lenny
Problém: Po přihlášení nemá uživatel žádná práva na čtení/zápis a je klientem odpojen
Výpis z filezilly:
Příkaz: Pass: *********
Stav: Connected to zaklinac.cz
Stav: Přijímám výpis složky...
Příkaz: pwd
Odpověď: Current directory is: "/"
Příkaz: ls
Stav: Listing directory /
Chyba: Unable to open .: permission denied
přihlášení na server funguje a uživatel je ověřen, nicméně se mi zdá, že je uzamčen v adresáři na která nemá žádná práva.
práva na domovském adresáři uživatele jsou 701, vlastníkem je root
poslední záznam v auth.log je pouze úspěch na přihlášení.
Snažil jsem se hledat na goolu a několkrát si postup prošel i podle jiných článků, ale vždy se stejným výsledkem.
Děkuji za každou radu a pomoc.
-
Ten domovsky adresar by v pripade SFTP mel byt vlastnen uzivatelem, ktery se prihlasuje, pokud se nepletu. Tedy pokud se prihlasuje uzivatel franta, mel by byt adresar vlastnen frantou, popripade pokud je vlastnik adresare a franta ve stejne skupine, pak nastavit adresari spravna prava pro skupinu a podobne.
-
Dobrý den, tak to bohužel není, vlastníkem musí být uživatel root a pouze root musí mít práva zápisu do tohoto adresáře. V opačném případě se nepodaří připojit a v auth.log je zánam o chybě práv na domovský adresář.
-
Pokud se to přihlásí a jen vlastně není kam co zapisovat, pak zbývá poslední krok: v tom "domovském adresáři" vlastněném rootem stačí založit podadresář(e) pro uživatele. Ty už samozřejmě může vlastnit a může do nich normálně zapisovat.
-
Děkuji, děkuji, děkuji! :)
adresář jsem měl již vytvořený, ale klientovy se musí vnutit přechod do tohoto adresáře, tedy ve filezille dát jako vstupní adresář např. /public
problém je tedy vyřešen!
-
Výborně, jsem rád, že to bylo takhle lehké :-). Samozřejmě tam těch adresářů je možné dát neomezený počet a ať si tam uživatel řádí. Jen nemůže sám vytvářet žádné další.
-
Pokud chcete uzavrit vsechny uzivatele do stejneho adresare, mela by stacit direktiva
ChrootDirectory /public
v konfiguraci sftp serveru a ve filezille byste pak uz teoreticky nemusel nic nastavovat.
(adresar /public pak samozrejme musi mit prislusna prava)
-
To je k ničemu. Pokud se chroot posune na public, zase to bude pro uživatele nezapisovatelný adresář. Prostě se to musí udělat tak, jak bylo uvedeno výše: Uživatel se dostane do adresáře /, do kterého ale nebude schopen nic zapsat. Až do jeho podadresářů. A tam jej může přepnout klient rovnou sám.
-
To je k ničemu. Pokud se chroot posune na public, zase to bude pro uživatele nezapisovatelný adresář. Prostě se to musí udělat tak, jak bylo uvedeno výše: Uživatel se dostane do adresáře /, do kterého ale nebude schopen nic zapsat. Až do jeho podadresářů. A tam jej může přepnout klient rovnou sám.
Zase sem o neco chytrejsi, dekuji :)
-
To je k ničemu. Pokud se chroot posune na public, zase to bude pro uživatele nezapisovatelný adresář. Prostě se to musí udělat tak, jak bylo uvedeno výše: Uživatel se dostane do adresáře /, do kterého ale nebude schopen nic zapsat. Až do jeho podadresářů. A tam jej může přepnout klient rovnou sám.
Ještě jeden, poslední dotaz :)
""A tam jej může přepnout klient rovnou sám""
Může, nebo musí? Tedy existuje nějaká možnost, aby server rovnou poslal do adresáře, do kterého bude mít práva zápisu?
V praxi se totiž musí uživateli poslat kromě přístupových údajů navíc informace o tom, že si musí nastavit klienta tak, aby ho přesunul do nějaké složky, což je v každém klientu jinak a 99% BFU to prostě nenastaví.
Děkuji
-
Do kterého adresáře se klient přepne po pořihlášení, to je přece stanoveno domovským adresářem uživatele (podle /etc/passwd například). Jaký domovský adresář máte nastaven u těch uživatelů?
Já to řeším tak, že v /etc/passwd je normálně uvedeno "/home/neco/login_uzivatele" a sftp chroot mám nastaven na "/sftp-chroot", kde je adresář "/sftp-chroot/home". Přes bind mount je do něj nalinkován obsah skutečného /home:
mount -o bind /home /sftp-chroot/home
-
aha, tak už je mi to jasné. Já mám home uživatele i chroot do stejného adresáře.
Děkuji za tento tip.
J.K