vsftpd и виртуальные пользователи

Не обращайте внимания. Просто я воздвиг два CentOS с мелкими приладами за два дня. Стать молодым и прыщавым уже не смогу. Видимо придется довольствоваться двойной дозой прыщей от бытия линуксоидом. Поседеть от общения с Вашей любимой OS тоже уже не смогу. Могу только посочувствовать тем, кто получает удовольствие от причастности к Великому Делу. Тварищ Webmaster

Мое приобщение к великому делу меня чуть ли не убило. Как-то неприятно, что все мои желания в Linux стандартными средствами не реализованы. Вот еще чуть чуть и буду считать себя уродом. Хорошо, что линукс настолько гибкий, что я всё равно добиваюсь своего… Пусть и немножко другим путем…

Сегодня мне было необходимо победить фтп. Точнее сделать так, чтобы у меня был быстрый фтпэшник с возможностью аутентификации как локальными юзверями, так и виртуальными (ну или еще откуда-нить). Как-то раньше юзал для этого что-то типо proftpd. Но с переходом на CentOS везде юзаю vsFTPd, это такой маленький и очень шустренький фтп-сервер с достаточным кол-вом возможностей. И все в нем хорошо бы, и виртуальных пользователей поддерживает, да вот в FAQ:
_Note – currently there is a restriction that with guest_enable enabled, local
users also get mapped to guest_username._
То есть локальные и виртуальные от одного и того же юзверя запускаются. И хоть ты тресни…

Кто настраивал vsFTPd под виртуальных юзверей наверное помнят проблемы и конфиги. Если Вы еще не испытывали такого счастья, то почитайте примеры. А затем хорошенько все забудьте. Ибо на самом деле ограничений нет!

Вы уже прочитали man и форум? Нет? Тогда бегом читать, ибо меня не поймете. Первое, что я вычитал: индивидуальные настройки на каждого юзверя ограничены. Так-то оно и так, но вот если их не указывать в vsftpd.conf, то он все настройки отлично читает для каждого юзверя. Таким образом мне удалось заставить каждого виртуального юзверя закрепить за одним из локальных, указать домашний каталог и внести другие ограничения.

Вот пример одного из юзверей:
dirlist_enable=YES
download_enable=YES
local_root=/home/testuser/ftp/users/tom
write_enable=YES
guest_username=testuser
guest_enable=YES

Пользователь TOM работает под testuser.

Далее нужно было подружить его с pam. Если не знаете что это такое, вот замечательная статья.

Сделал я как и в рекомендациях, только чутка подправив:
auth sufficient pam_userdb.so db=/etc/vsftpd/virtual_users unknown_ok debug
account sufficient pam_userdb.so db=/etc/vsftpd/virtual_users unknown_ok debug
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so

Те, кто найдены в базе виртуальных, обрабатываются через пользовательские конфиги. Если не найдено, то ищется локальный юзверь.

Ну а остальные настройки от предложенных в нете не отличаются…

db_load -T -t hash -f src dest

| Опубликовано: 19.08.08 в   Добавить в закладки

  1. Avdenago    20.08.08    #

    “Поседеть от общения с Вашей любимой OS тоже уже не смогу”

    – уже поседел?
  2. unit    20.08.08    #

    Это как бы у Вебмастера спросить нуна... Его цитата


  3. — Игорь    25.08.08    #

    Привет, Игорь. Если копал, то может знаешь, умеет ли vsftpd ходить по каталогам-символическим ссылкам? Или его также как pure-ftpd нужно пересобирать с дополнительными ключами для добавления этих возможностей


  4. unit    25.08.08    #

    ln -s куда имя

    если включен chroot и юзверь закрыт, работает только внутри его папки доступа...
    а так без проблем… можно использовать для создания виртуальных папок


Комментирование этой статьи закрыто.