Zprovoznění nových userů pro pure-ftpd server (s privátními adresáři) Přihlas se do WinSCP jako root. Krok 0. editace etc/shells - v /etc založ nový prázdný soubor s názvem ftponly - zedituj /etc/shells a dopiš řádek /bin/ftponly Tyto dva kroky zajistí, že uživatelé, které dále vytvoříme, se na BFW budou moci přihlásit pouze a výhradně z ftp klienta, tj. ne např. přes SSH (Putty,WinSCP) nebo dokonce webadmina. V celém dalším textu budu používat jednoho uživatele filo, samozřejmě si ho můžete přejmenovat jak chcete, případně analogicky vytvořit uživatele další. Vysvětlení k dalším krokům Další postup jsem bohužel po laborování musel rozdělit na dvě kapitoly : 1. použití ftp serveru pouze a výhradně pro ftp přístup 2. použití ftpserveru pro ftp přístup a použití aplikace NetDrive, která přiřadí ftp adresáři písmeno jednotky, takže se pak adresář ve Windows tváří jako regulérní disk (napadá mě analogie s příkazem subst) Postup jsem musel rozdělit proto, že NetDrive odmítá poslušnost při připojování, pokud nejsou dodrženy určité podmínky (přístupová práva na adresáře v celé hierarchii stromu) 1. Varianta 1 : pouze ftp přístup Co chci : a) každý user má svůj privátní adresář, do kterého může pouze on a root b) po přihlášení usera z ftp klienta se systém automaticky nastaví do jeho privátního adresáře c) existuje společný adresář Public, do kterého mohou všichni useři d) existuje jakýsi pseudoroot adresář, z něhož už useři výše nemohou Adresářová struktura : disk2.. ftp.. ftp_root.. public.. users.. user1.. user2 Adresář ftp_root je je tím pseudoroot adresářem viz bod 1.5 níže. Useři tudíž uvidí maximálně adresáře public a users, výš už nemohou. Upozornění : jste v unixu, pozor na velikost písmen při zadávání adresářů! 1.1 editace etc/passwd udělej nový řádek kopií např. nobody:x:65534:0:nobody:/tmp:/bin/sh filo:x:65533:0:filo:/disk2/ftp/ftp_root/users/filo:/bin/ftponly 65533 UID.. id uživatele POZOR musí být v rámci souboru passwd jedinečné! 0 GID.. id skupiny, nechte 0 (pro roota), jinak nebude možné přistupovat k ftp přes NetDrive) /disk2/ftp/ftp_root/users/filo domovský adresář bin/ftponly znamená, že user filo bude mít přístup pouze přes ftp (tj. ne přes ssh, telnet apod.) soubor passwd ulož. 1.2 editace etc/shadow udělej nový řádek kopií např nobody:*:10091:0:99999:7::: filo:*:10091:0:99999:7:::
soubor shadow ulož 1.3 změna/nastavení hesla usera filo - přihlas se jako root do BFW přes putty, vyskoč z menu do promptu - napiš passwd filo systém nabídne zadání hesla BACHA (minimum je 5 a maximum 8 znaků), dívejte se co vám systém říká, pokud se mu zdá heslo moc jednoduché, neakceptuje ho. Doporučená kombinace je velká malá písmena a číslice - ukonči putty - přes winscp proveď refresh a otevři soubor etc/shadow, řádek filo:*:10091:0:99999:7::: by se měl změnit na něco takového filo:$1$$d0z0xtbpprip6iqeujbnw.:10091:0:99999:7::: ten tučný text je právě zadané zakryptované heslo. Pokud tam nebude, nemá smysl pokračovat. 1.4 nastavení ftp serveru pure-ftpd zedituj soubor etc/rc.d/pkgs/rc.myftpd změň stávající řádek na /usr/sbin/myftpd -B -g /var/run/myftpd.pid -E -S 21 -l unix j k 95 -B samostatný ftp server -g /var/run/myftpd.pid.. použití myftpd.pid souboru -E není povolen anonymous účet, všichni uživatelé musí být zaregistrovaní -S na ftp server mohou uživatelé ze všech IP adres 21 port, na kterém běží ftp server -l unix znamená, že si pureftpd bude přebírat usery z linuxu (uvedené v passwd) -j znamená, že pokud pro usera při jeho prvním přihlášení nebude exitovat jeho domovský adresář, pureftpd ho vytvoří. Doporučuju ale adresáře vytvořit ručně, protože se stejně budou muset upravovat práva, viz níže. -k 95 nechá na ftp serveru 5% rezervu, tj. ftp disk půjde zaplnit jen z 95% 1.5 nastavení práv pro usery Otevři WinCSP. Musí se provést 2 věci. /disk2/ftp/ftp_root/users/filo 1. adresáři /disk2/ftp/ftp_root říct, že bude fiktivním kořenem pro všechny usery kromě roota. Udělá se to tak, že se na nadřazeném adresáři, tj. /disk2/ftp odebere právo X pro skupinu others, což jsou všichni kromě roota. Odebrání se provede přes pravou myš. 2. adresáři /disk2/ftp/ftp_root/users/filo říct, že do něj může akorát uživatel filo a nikdo jiný (root samozřejmě může) Je tedy třeba jít na daném adresáři na properties a změnit položku owner z root na filo a následně nechat v řádku owner povoleny příznaky R,W,X, všechno ostatní zakázat. 1.6 finále ;) zastav pure-ftpd server a znovu pusť. Zkus se přihlásit v ftp klientu jako filo, mělo by to všechno fachat. Varianta 2 : ftp přístup včetně použití NetDrive Co chci : a) každý user má svůj privátní adresář XX, do kterého může pouze on a root, ale tento adresář není oproti variantě 1 zvolen hned po přihlášení a navíc je jako privátní nastaven až přes WinSCP b) po přihlášení všech userů se přejde do společného pseudoroot adresáře, z něhož výše useři nemohou c) existuje společný adresář Public, do kterého mohou všichni useři Adresářová struktura : disk2.. ftp.. public.. users.. user1.. user2 Adresář ftp je je tím pseudoroot adresářem viz bod 2.5 níže. Varianta 1 nelze pro NetDrive použít, protože z nějakého mi neznámého důvodu neakceptuje odebrání práv X pro skupinu Others viz bod 1.5 výše. Upozornění : jste v unixu, pozor na velikost písmen při zadávání adresářů!
2.1 editace etc/passwd udělej nový řádek kopií např. nobody:x:65534:0:nobody:/tmp:/bin/sh filo:x:65533:0:filo:/disk2/ftp:/bin/ftponly 65533 UID.. id uživatele POZOR musí být v rámci souboru passwd jedinečné! 0 GID.. id skupiny, nechte 0 (pro roota), jinak nebude možné přistupovat k ftp přes NetDrive) /disk2/ftp pseudodomovský adresář všech uživatelů bin/ftponly znamená, že user filo bude mít přístup pouze přes ftp (tj. ne přes ssh, telnet apod.) soubor passwd ulož. 2.2 editace etc/shadow udělej nový řádek kopií např nobody:*:10091:0:99999:7::: filo:*:10091:0:99999:7::: soubor shadow ulož 2.3 změna/nastavení hesla usera filo - přihlas se jako root do BFW přes putty, vyskoč z menu do promptu - napiš passwd filo systém nabídne zadání hesla BACHA (minimum je 5 a maximum 8 znaků), dívejte se co vám systém říká, pokud se mu zdá heslo moc jednoduché, neakceptuje ho. Doporučená kombinace je velká malá písmena a číslice - ukonči putty - ve winscp proveď refresh a pak otevři soubor etc/shadow, řádek filo:*:10091:0:99999:7::: by se měl změnit na něco takového filo:$1$$d0z0xtbpprip6iqeujbnw.:10091:0:99999:7::: ten tučný text je právě zadané zakryptované heslo. Pokud tam nebude, nemá smysl pokračovat. 2.4 nastavení ftp serveru pure-ftpd zedituj soubor etc/rc.d/pkgs/rc.myftpd změň stávající řádek na /usr/sbin/myftpd -B -g /var/run/myftpd.pid -E -S 21 -l unix j A k 95 -B samostatný ftp server -g /var/run/myftpd.pid.. použití myftpd.pid souboru -E není povolen anonymous účet, všichni uživatelé musí být zaregistrovaní -S na ftp server mohou uživatelé ze všech IP adres 21 port, na kterém běží ftp server -l unix znamená, že si pureftpd bude přebírat usery z linuxu (uvedené v passwd) -j znamená, že pokud pro usera při jeho prvním přihlášení nebude exitovat jeho domovský adresář, pureftpd ho vytvoří. Doporučuju ale adresáře vytvořit ručně, protože se stejně budou muset upravovat práva, viz níže. -A adresář, který se userovi nastaví v passwd jako pseudodomovský, je pro něho zároveň i root adresářem (výš se nedostane) -k 95 nechá na ftp serveru 5% rezervu, tj. ftp disk půjde zaplnit jen z 95% 2.5 nastavení práv pro usery Nastavení kořenového adresáře pro všechny usery (vyjma roota) a nastavení práv pro uživatele filo, který má domovský adresář /disk2/ftp/users/filo Otevři WinCSP. Musí se říct adresáři /disk2/ftp/users/filo říct, že do něj může akorát uživatel filo a nikdo jiný (root samozřejmě může vždy a všude) Je tedy třeba jít na daném adresáři na properties a změnit položku owner z root na filo a následně nastavit Octal na 0744. 2.6 Nastavení v FTP klientu Jelikož je v passwd nastaven domovský adresář pro všechny usery stejný (:/disk2/ftp), možná byste chtěli, aby se konkrétní user po svém po přihlášení dostal rovnou do svého privátního adresáře. V tom případě ho musíte zadat v ftp klientu, jako je např. Total Commander, viz obrázek níže pro usera Filo
2.7 skoro finále ;) zastav pure-ftpd server a znovu pusť. Zkus se přihlásit v ftp klientu jako filo, mělo by to všechno fachat a můžem se vrhnout na NetDrive 2.8 Novell NetDrive Free utilitka Novell Netdrive umožňuje přiřadit ftp adresáři písmeno disku. Po instalaci zvolte New site a poté zadejte základní údaje viz obrázek níže (jedná se o vnitřní adresu vašeho BFW) zaškrtni Connect at startup a vyplň login a heslo
Ještě neklikej na Connect a zavři okno přes Exit. Dole na liště v trayi se ti objeví NetDrive ikona, pravou myší a pak Program Settings Program Settings Záložka General a Cache: Záložka Advanced : Nastavit, aby po startu nebyly automaticky připojeny disky, tj. ty se připojí automaticky až při konkrétním požadavku na čtení/zápis. Vraťte se zpátky do nastavení konkrétního připojení a zvolte Advanced (viz okno níže)
Pokud chcete, aby se se virtuální disk (v tomto případě X), nastavil do privátního adresáře usera s tím, že user má možnost vyskákat výše až do rootu, tak vyplňte údaje dle obrázku níže Poznámky k NetDrive I když je to výborný free pomocník, nějaké mušky se najdou. Nedoporučuji vypínat volbu stalo se mi, že NetDrive proces běžel, ale v trayi se neobjevil. Jinak ale pracoval normálně, tj. disky připojil, jak měl. Dále nedoporučuji zapínat cache, opticky to sice urychlí přenos dat, ale nemáte jistotu, kdy tam data doputovala v kompletní podobě, což může být někdy problém, třeba při sdílení s více uživateli. Dále se mi osvědčilo nedělat Disconnect z filemanageru (průzkumník, Total Commander), ale přímo z tray ikonky NetDrive. A poslední tip : pokud něco při připojování disku nebude chodit, v trayi je položka které lze leccos zjistit., díky