Добрый вечер.
Есть схема, довольно просто реализуемая на FTP-сервере от Gene6 (под Windows). Пытаюсь портировать ее на Linux, получается не очень.
Например, есть три группы пользователей: Гости, Пользователи и Привелигированные.
Корневая папка у всех "ссылается в никуда" (в G6 - empty://), не знаю как сее изобретение называется в нормальной терминологии, что-то вроде пустой папки только для чтения. У всех есть две общие папки /public и /trash.
1. Гости могут только читать /public и /trash.
2. Пользователи могут читать /public и имеют полный доступ к /trash. Также у каждого пользователя есть своя папка /home. Пусть это будет ссылка на домашнюю папку Linux (~), например.
3. Привелигированные пользователи - тоже, что и пункт 2, но могут писать в /public.
Логика примерно следующая: папка /trash быстрого обмена между пользователи, при этом за порядок в ней никто не отвечает; в папку /public привелигированными пользователями выкладываются материалы на всеобщее обозрение и в ней присутствует некое подобие порядка; ну и наконец папка /home используется для хранения личных данных.
Каким образом и каким вообще софтом подобное можно реализовать в Linux'е? (в частности в Убунте)
Специфический FTP сервер
Корневая папка у всех "ссылается в никуда" (в G6 - empty://), не знаю как сее изобретение называется в нормальной терминологии, что-то вроде пустой папки только для чтения.
chroot, тогда все юзеры будут заперты в своей домашней папке. корневой вообще не будет.
У всех есть две общие папки /public и /trash.
1. Гости могут только читать /public и /trash.
2. Пользователи могут читать /public и имеют полный доступ к /trash. Также у каждого пользователя есть своя папка /home. Пусть это будет ссылка на домашнюю папку Linux (~), например.
3. Привелигированные пользователи - тоже, что и пункт 2, но могут писать в /public.
1)аккаунт "ананимус", вход без пароля.
в терминологии proftpd
# 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, и никто кроме юзера не зайдёт (хотя анонимам естественно невозможно записать даже в свою ~, ибо аноны.)
Вроде немного все встает на свои места. Делаю следующее: создаю, например, папку /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 А может я изначально делаю что-то не так и для решения моей задачи необходим другой сервер?