Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: RNA 31 Ledna 2011, 09:43:32
-
Dobrý den,
potřeboval bych zaonačit následující věc: pomocí VSFTPD zpřístupnit data v jednom adresáři pro nějakého uživatele pro zápis i čtení, ale pro jiného jen pro čtení. Problém je v tom, že milé VSFTPD si trvá na tom, že každý uživatel má svůj adresář /home/užívatel a basta fidli. Nešlo by třeba nějak pomocí symlinku? (netuším jak, jsem woknař)
-
Určitě:
např. tak, že si někde vytvoříš adresář, kde nastavíš práva pro vlastníka na čtení i zápis, pro skupinu jen pro čtení a pro ostatní zakázáno.
Do uživatelského "homu" těch uživatelů, pro které to budeš potřebovat, pak šoupneš symlink na ten společný adresář. Bude to pak fungovat tak, že vlastník bude moci číst i psát a ti, kteří budou členy té správné skupiny, budou moci číst.
Další varianta je povolit čtení všem a pak nemusíš řešit členství ve skupinách.
-
Bohužel nedaří se.
V adresáři /home/ftp jsem vytvořil symlink public, který ukazuje na adresář /public.
Jak ten symlink, tak i ten adresář /public mají chmod 0777.
V terminálu to normálně funguje, /home/ftp/public ukazuje stejný obsah jako /public.
Avšak při přihlášení přes ftp se sice ukazuje ten symlink public, ale nelze jej nijak otevřít.
22:46:09 Příkaz: RETR public
22:46:09 Odpověď: 550 Failed to open file.
22:46:09 Chyba: Critical file transfer error
Teda, jde to, když zruším chroot_local_user=YES v konfigu, ale to pak může uživatel ftp rejdit po celém disku. To ovšem nechci.
-
Zkusil bych hledat nějakej parametr v konfiguráku pro používání symlinků. Popřípadě můžete zkusit složku public namountovat přes fstab s parametrem fstype jako bind.
-
Možná trivální otázka: a má uživatel ftp (nebo jak se jmenuje uživatel, pod kterým ti ten server běží) k tomu adresáři public přístupová práva?
-
Jak jsem napsal:
Jak ten symlink, tak i ten adresář /public mají chmod 0777.
Avšak není jeho vlastník, ani skupinový. To bych ještě mohl zkusit.
Nicméně vyvstává zde otázka, jestli vyhodit celý vsftpd a použít nějaký jiný ftp klient. Ale mám zkušenosti pouze s vsftpd.
Nějak to jít musí, mám webhosting u jedné solidní firmy a systém přístupu do uživatelských adresářů jak přes http a ftp napovídá, že to tak nějak mají udělané, skutečné jméno adresáře je například dsxfg487, ale v ftp se jeví jako podadresář z v adresáři se jménem domény. To je ale na FreeBSD.
-
Udpověď jste si tam napsal sám, se symlinkem to fungovat nebude a vysvětlení:
/home/ftpuser (adresar uzivatele ke kterymu se normalne ftp pripoji)
/var/www/domain.ltd (adresar ktery chceme aby byl v /home/ftpuser -> symlink)
pokud vytvorime symlink tak je to jen symbolicky odkaz a ten nam rika, ze se mame podivát na /var/www/domain.ltd. Jenže demon vytvari chroot takze odkaz symlinku zustane stejny, ale musime si uvědomit ze se nam posouva korenova slozka takze diky symlinku se adresar hleda "v realnem" systemu zde /home/ftpuser/var/www/domain.ltd a to v systému asi mít nebudeme !
Fungujícím řešením by mělo být vytvořit mount point do /etc/fstab
A nebo použít jeného démona s ProFTPD by to mělo jít vytvořit :-)
-
Řešil jsem stejný problém, ale se sftp...nicméně konkrétní rada tady již zazněla, dělám to také mountem přes bind..
/sftp/user - složka uživatele
/media/data/share_folder - sdílená složka, kterou chci mít v /sftp/user
- mám udělaný mount: mount --bind /media/data/share_folder /sftp/user/NAZEV_SLOZKY (může se jmenovat jak chce a bude v ní obsah z toho /media/data/share_folder)
- oprávnění sdílené složky je 775, vlastník root = muj_nick, skupina např "write" a ostatní mají práva 5 - čtení, spouštění, ale ne zápis...takže ty, které přiřadím do skupiny "write" můžou dělat vše, všichni ostatní jen čtení, spouštění ..jsou "uzamčeni" ve složce "/sftp/user", takže po serveru šmejdit nemůžou...takhle mi to funguje docela dobře