Re: lug-bg: Linux normal path
- Subject: Re: lug-bg: Linux normal path
- From: Peter Pentchev <roam@xxxxxxxxxxx>
- Date: Wed, 24 Nov 2004 14:45:14 +0200
On Wed, Nov 24, 2004 at 01:25:34PM +0200, Aleksandar Valchev wrote:
> Признавам, направо ми взе акъла. Обстойно и изчерпателно. Много ти благодаря.
> Мисля, че тази информацияще бъде полезна на много хора, не само на мен :).
>
> Чак толкова сложни неща няма да ми трябват. Правя един сървар, на който му е
> зададена директория. От тук на там, всички обръщения към пътища на файлове ще
> започват с тази директория. т.е. има такава структура:
>
> /home/blabla/
> /home/blabla/users/
> /home/blabla/users/ivancho
> /home/blabla/users/petkancho
> /home/blabla/conf/
>
> Всеки потребител ще си има собствена директория с неопределено съдържание
> (като файлова структура), но основното е /home/blabla/users.
В такъв случай това, което ще ти свърши най-добра работа според мен, е
да видиш дали не можеш да изнесеш самия сървър в отделен процес, който в
момента, в който приеме връзка от потребител, да направи един chroot към
/home/blabla/users. След chroot("/home/blabla/users") вече всички
пътища, които програмата използва, ще бъдат само в рамките на
/home/blabla/users - т.е. съвсем естествено ще се получи това, което
искаш: /mariika да бъде всъщност /home/blabla/users/mariika.
Тук може да имаш два проблема. Първият е, че chroot можеш да изпълниш
само докато си с user ID 0, т.е. root, така че самият сървърски процес
ще трябва да бъде стартиран като root, след което да направи chroot и да
си продължи работата. Другият проблем е, че веднъж направил chroot,
"излизане няма" - сървърният процес няма да може нито да
отваря/променя/трие файлове, нито да изпълнява програми, които са извън
/home/blabla/users. Може би ще е добра идея да си направиш
архитектурата с два процеса - единият да приема връзки от потребителите,
да рови каквото има във външни файлове (може би за да провери права за
достъп и т.н.), след което да подава самите команди (почти без да се е
опитвал да ги parse-ва) на другия, който е chroot-нат и ги изпълнява
горе-долу безопасно. Това е един вариант, има и други, но за момента
повече не мога да кажа, без да знам купчина подробности - какво всъщност
ще прави този сървър, как ще стигат до него заявките и т.н. :)
Поздрави,
Петър
--
Peter Pentchev roam@xxxxxxxxxxx roam@xxxxxxxx roam@xxxxxxxxxxx
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553
This sentence every third, but it still comprehensible.
Attachment:
pgpJshd3cEbWc.pgp
Description: PGP signature
|