Назад | Перейти на главную страницу

Сервер SFTP, ограничение привязки монтирования

Я создаю SFTP-сервер, где я должен предоставить пользователям доступ к отдельным каталогам на разных дисках.

Я не могу использовать символические ссылки, потому что это дает им доступ ко всему и вызывает путаницу при навигации.

Я не могу использовать cp -r, потому что это занимает слишком много времени и занимает слишком много места.

Я не могу использовать cp -al, потому что он не будет связываться с разными устройствами. Хотя он отлично работает, если есть только одно устройство.

В настоящее время я использую команду «mount --bind» для монтирования каталогов с разных дисков в домашний каталог пользователя на ftp. Я сделал сценарий, который удаляет старые монтирования, которые больше не требуются, и восстанавливает их после перезагрузки без использования fstab.

Это кажется неаккуратным решением, и в конечном итоге у меня будут сотни, если не тысячи креплений. Есть ли лучший способ сделать это или это приемлемо? I Есть ли ограничение на количество одновременных запусков mount --bind?

Как насчет использования ACL (списков контроля доступа) в этом случае? Все современные файловые системы поддерживают ACL, и с их помощью вы можете предоставлять доступ к отдельным каталогам / файлам более детально, чем с традиционными разрешениями Unix.

Для начала попробуйте man setfacl. В нем перечислено несколько примеров.

Другой ответ, по-видимому, является решением другой проблемы (разрешения установлены на каталоги, которые уже существуют). Однако ваша проблема похожа на мою ... у вас есть домашние каталоги, где / - это домашняя страница ftp, а не настоящая файловая система, и вы хотите, чтобы некоторые части реальной файловой системы находились в нескольких домах ftp.

У меня была похожая вещь ... это был кошмар. Думаю, у него было несколько тысяч ездовых животных. В скрипте были ошибки, поэтому его нужно было переделать, когда он перестал работать. Это не было бы такой проблемой, но размонтирование тысяч монтировок и повторное монтирование занимает около 15 минут. Поэтому я переделал его с помощью unionfs. Сейчас его использует около 260.

Это было сделано с помощью нескольких 4-х дисковых USB-боксов (которые мы называем «DAS для бедняков»). Другая проблема заключалась в том, что диски случайно отключались и требовали перемонтирования. Это означало, что все связанные крепления тоже нужно было переделать. Unionfs автоматически присоединяет их к монтированию, когда это происходит, так что проблема решена. И мне не приходилось исправлять ошибки в скриптах с тех пор, как я переключил его на unionfs. Если я когда-нибудь снова сделаю то же самое с USB-дисками, я, скорее всего, буду использовать unionfs в сочетании с пустым деревом каталогов, даже если это всего лишь один диск, поэтому я могу рассчитывать на его повторное подключение.

В моем случае все файлы были только для чтения, и было много дисков, смонтированных вместе во многих ftp-домах, и было только 3 разных типа пользователей, которые видят разные каталоги, и диски были одним и тем же набором данных, разделенных разными типами файлов. и дата в той же структуре каталогов. Так что я в основном установил только 3 штуки на каждый ftp-дом.

Крепление unionfs выглядит так:

sudo unionfs-fuse /data/some/local/directory=ro:/mnt/disk1=ro:/mnt/disk2=ro:/mnt/disk3=ro:[...] /mnt/alldisks -o allow_other