Ограничить Пользователь SFTP для нескольких папок

Источник проблемы в том, что у вас слишком много маленьких файлов.

Если я правильно понимаю, у вас более 14 миллионов файлов. Нет никакого способа, чтобы ЛЮБАЯ оболочка могла иметь более 14 миллионов имен файлов в командной строке. Помимо этого. ваши имена файлов кажутся длиной около 18 символов, так что это примерно 18 * 14M или около 252 мегабайт только для хранения имен файлов.

bash , например, имеет ограничение в 128 КБ. даже немного меньше, чем 252 МБ. Я понятия не имею, какой у csh лимит, потому что я его не использую. Маловероятно, что это будет больше, чем ограничение длины командной строки bash. Конечно, это не будет 252 МБ или больше.

Однако еще не все потеряно, вместо этого вы можете использовать find ... -exec .

find . -maxdepth 1 -type f -name '*.mol2' \
  -exec pythonsh ../../prepare_ligand4.py -l {} -d ../etc/ligand_dict.py \;

Это запустит prepare_ligand4.py ОДИН РАЗ для каждого файла, поэтому это займет очень много времени. Вы могли бы немного ускорить его (не намного, не с 14 + M файлами для обработки), используя find ... -print0 с xargs -0 -P ... или GNU parallel -0 ... вместо find ... -exec


Намного лучшим решением было бы загрузить исходный код для prepare_ligand4.py и измените его так, чтобы вы могли дать ему один большой файл (например, исходный файл перед csplit -сим его), и он будет обрабатывать каждый блок индивидуально. Это будет намного быстрее и проще в работе. Вероятно, у вас все еще будет более 14 миллионов выходных файлов (если предположить, что объединенный выходной файл будет бесполезен ... если это не так, вам повезло!), Но это лучше, чем иметь 14 миллионов входных файлов и 14 миллионов выходных файлов.

Это, конечно, потребует определенных навыков программирования на python .

Возможно, кто-то уже сталкивался с той же проблемой и написал собственную расширенную версию prepare_ligand4.py . Стоит потратить некоторое время на поиск или, может быть, попробовать Форум Autodock или даже связаться с автором Autodock.

3
17.04.2017, 20:16
1 ответ

ключевые слова, относящиеся к тому, что вы хотите сделать, это SFTP chroot jail

, вам нужно изменить свой sshd_config, сначала раскомментируйте строку, чтобы включить SFTP, которая будет соответствовать примерно так:

Подсистема sftp / usr / lib64 / ssh / sftp-server

В конце sshd_config вы можете иметь некоторые из следующего в шаблоне, который закомментирован. Вам понадобится что-то вроде этого:

# jail only user dave to folder /dave_sftp/
Match User dave
   ChrootDirectory /dave_sftp
   AllowTCPForwarding no
   X11Forwarding no
   ForceCommand internal-sftp

# jail only user ron to folder /ron_sftp/
Match User ron
   ChrootDirectory /ron_sftp
   AllowTCPForwarding no
   X11Forwarding no
   ForceCommand internal-sftp

# jail users that are in group sftp1_group to the folder /sftp1_group/
Match Group sftp1_group
   ChrootDirectory /sftp1_group
   AllowTCPForwarding no
   X11Forwarding no
   ForceCommand internal-sftp

# jail users that are in group sftp2_group to the folder /sftp2_group/
Match Group sftp2_group
   ChrootDirectory /sftp2_group
   AllowTCPForwarding no
   X11Forwarding no
   ForceCommand internal-sftp

Заключение определенного пользователя в определенную папку довольно просто. На ваш вопрос укажите список папок, к которым могут получить доступ различные пользователи , это просто ручной труд с вашей стороны, создание отдельной группы и сопоставление ее с определенной папкой, которую вы хотите использовать, и помещение этих пользователей в те соответствующие группы, которые соответствуют папкам, которые вы хотите предоставить им в тюрьме sftp-доступ к. Например, поместите пользователя dave в обе группы sftp1_group и sftp2_group , чтобы разрешить этому пользователю доступ к нескольким папкам.

Здесь также можно найти очень хороший пример: https://serverfault.com/questions/591781/creating-sftp-users-and-jailing-to-chroot-on-centos -user-authentication-error

помните о

Все папки до chroot home должны принадлежать и доступны для записи только пользователю root. Папки не могут быть доступны для групповой записи - даже если группа является корневой

, вот еще один пример: https://askubuntu.com/questions/261663/how-can-i-set-up-sftp-with- chrooted-groups

5
27.01.2020, 21:18

Теги

Похожие вопросы