LinuxForum.Fans
Тема

Специфический FTP сервер

Автор: klis 3 сообщений 2360 просмотров
#101956

Добрый вечер.
Есть схема, довольно просто реализуемая на FTP-сервере от Gene6 (под Windows). Пытаюсь портировать ее на Linux, получается не очень.

Например, есть три группы пользователей: Гости, Пользователи и Привелигированные.

Корневая папка у всех "ссылается в никуда" (в G6 - empty://), не знаю как сее изобретение называется в нормальной терминологии, что-то вроде пустой папки только для чтения. У всех есть две общие папки /public и /trash.

1. Гости могут только читать /public и /trash.
2. Пользователи могут читать /public и имеют полный доступ к /trash. Также у каждого пользователя есть своя папка /home. Пусть это будет ссылка на домашнюю папку Linux (~), например.
3. Привелигированные пользователи - тоже, что и пункт 2, но могут писать в /public.

Логика примерно следующая: папка /trash быстрого обмена между пользователи, при этом за порядок в ней никто не отвечает; в папку /public привелигированными пользователями выкладываются материалы на всеобщее обозрение и в ней присутствует некое подобие порядка; ну и наконец папка /home используется для хранения личных данных.

Каким образом и каким вообще софтом подобное можно реализовать в Linux'е? (в частности в Убунте)

#102047
klis написал:
Корневая папка у всех "ссылается в никуда" (в G6 - empty://), не знаю как сее изобретение называется в нормальной терминологии, что-то вроде пустой папки только для чтения.

chroot, тогда все юзеры будут заперты в своей домашней папке. корневой вообще не будет.

klis написал:
У всех есть две общие папки /public и /trash.

1. Гости могут только читать /public и /trash.
2. Пользователи могут читать /public и имеют полный доступ к /trash. Также у каждого пользователя есть своя папка /home. Пусть это будет ссылка на домашнюю папку Linux (~), например.
3. Привелигированные пользователи - тоже, что и пункт 2, но могут писать в /public.

1)аккаунт "ананимус", вход без пароля.
в терминологии proftpd

text
# A basic anonymous FTP server configuration.
# To enable this, remove the user ftp from /etc/ftpusers.
#<Anonymous ~ftp>
#  RequireValidShell        off
#  User                ftp
#  Group                ftp
#  # We want clients to be able to login with "anonymous" as well as "ftp"
#  UserAlias            anonymous ftp
#
#  # Limit the maximum number of anonymous logins
#  MaxClients            50
#
#  # We want 'welcome.msg' displayed at login, and '.message' displayed
#  # in each newly chdired directory.
#  DisplayLogin            welcome.msg
#  DisplayChdir            .message
#
#  # Limit WRITE everywhere in the anonymous chroot
#  <Limit WRITE>
#    DenyAll
#  </Limit>

2,3) ну скажем группа ftp_users и ftp_admins
[console]chmod ftp_admin:ftp_admins /public /trash
chmod 775 /public
chmod 777 /trash[/console]
анонимы не смогут писать ни туда ни сюда, ftp_users смогут создавать файлы в /trash, админы и там и там. С удалением - так-же. Однако, на /trash лучше 1777, тогда удалить сможет только тот, кто создал.

И конечно, каждый юзер может писать и читать свою ~ (а вот разрешить или запретить её читать/заходить/писать другим - дело ваше. Если это в правду ЛИЧНОЕ, то 700, и никто кроме юзера не зайдёт (хотя анонимам естественно невозможно записать даже в свою ~, ибо аноны.)

#102187

Вроде немного все встает на свои места. Делаю следующее: создаю, например, папку /share и в ней /share/public и /share/trash. Назначаю права, в ProFTPd назначаю DefaultRoot /share, тут более-менее все понятно. Но как правильно подключить папку /share/home, которая ссылалась бы на "~"? Символьную ссылку я сделать не могу, ибо chroot'ом я заперт в /share, а /home находится за ее пределами. Как сделать mount --bind "динамически" я тоже не очень понял (т.е. если я делаю mount --bind ~ /share/home, то для всех пользователей она будет ссылать на домашнюю папку того пользователя, от имени которого выполнялась эта команда, так ведь?). Есть ли варианты побороть данный недуг? :rolleyes: И еще хотелось бы, чтобы "гости" (в контексте первого сообщения) на FTP не видели папки /home вовсе. Быть может в ProFTPd есть аналог Apache'вого Alias'а?

PS А может я изначально делаю что-то не так и для решения моей задачи необходим другой сервер?

Войдите или зарегистрируйтесь, чтобы ответить.