Intereting Posts
Что может привести к тому, что блок-устройство будет как-то меньше его разделов? Псевдоним для «cd», который показывает текущий каталог каждый раз, когда меняю каталоги? Обработка 3 файлов с помощью awk Что означает отметка времени «00:00:00» в kern.log? Как параллельно запускать несколько экземпляров программы параллельно? Первый и последний день месяца Как управлять эквалайзером в командной строке? Как использовать SCSUDO для запуска скриптов с позиционными параметрами? LetsEncrypt не смог подключиться для проверки домена (тайм-аут) rsync, используя часть относительного пути Как я могу получить 1080p для работы на моем телевизоре с помощью HDMI с помощью xrandr? Сценарий оболочки для команды kill Могу ли я загрузить Ubuntu, необходимо подключение к Интернету? Преобразовать ключ = значения в CSV Обмен данными между двумя идентичными жесткими дисками

Настройка скрипта в поле AMI для создания каталогов – vsftpd, pam, mysql

Я хотел бы сначала сказать, что я новичок, когда дело доходит до Linux, поэтому, пожалуйста, извините меня за путаницу. Я пытаюсь установить vsftpd на 64-битной коробке amazon ami, бесплатном микроэлементе.

Следуя этим инструкциям, http://wiki.centos.org/HowTos/VirtualVsFtpd, я успешно смог запустить мой ftp. Пока я вручную создаю домашний каталог пользователей, он работает отлично.

Нужна помощь, автоматически настраивая домашние каталоги пользователей. для ftp-клиента

Следующее, что я хотел сделать, это настроить сценарий, чтобы автоматически настраивать домашний каталог пользователей, а не вручную делать это. Я нашел здесь некоторую документацию, http://t3chnick.blogspot.com/2011/12/vsftp-mysql-virtual-with-auto-create.html Я потратил часы, пытаясь заставить это работать без успеха.

Как и документация nicks, я модифицировал файл /etc/pam.d/vsftpd для включения следующих строк кода.

 #%PAM-1.0 session optional pam_keyinit.so force revoke # Auth in MySQL auth requisite pam_mysql.so user=vsftpd-ro passwd=readonly host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=0 auth required pam_script.so onerr=success dir=/etc/pam-script** 

Теперь мое замешательство

Из-за моего отсутствия знаний я не уверен, что я должен создавать файл сценария или если он уже включен в поле, и мне просто нужно его изменить. Я предполагаю, что когда Ник опубликовал свой пример, он создал сценарий на 32-битной коробке, но в нижней части своей статьи он рассказывает о 64-битном скрипте.

Во всяком случае, когда я пытаюсь перейти к $ cat /etc/pam-script/pam_script_auth я не нахожу ни скрипта, ни $ cat /etc/pam-script/pam_script_auth pam-script . Если я попытаюсь создать его, я получаю отказ в разрешении, если я не использую sudo vi /etc/pam-script/pam_script_auth

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

 $ cat /etc/pam-script/pam_script_auth 

pam_script_auth

 #!/bin/sh if [ ! -d "/opt/ftp/$PAM_USER" ]; then /usr/bin/env mkdir /opt/ftp/$PAM_USER /usr/bin/env chown ftp:ftp /opt/ftp/$PAM_USER fi 

Теперь я могу войти в окно, но он, похоже, не аутентифицируется против db, и я не вижу, где был создан пользовательский файл. Я предполагаю, что в скрипте что-то не так. Я также нашел следующий вопрос ubuntu, где nick ответил на аналогичный вопрос.

https://askubuntu.com/questions/406486/vsftpd-hanging-when-using-pam-exec-or-pam-script/408346#408346?newreg=bd1b0e5dec104d1abe5e91800d3a7763

Заранее спасибо.

РЕДАКТИРОВАТЬ

Было предложено jayhendren использовать pam_mkhomedir.so, а не скрипт.

Пожалуйста, исправьте меня, если я ошибаюсь, но мое предположение заключается в том, чтобы настроить мой /etc/pam.d/vsftpd так

 #%PAM-1.0 session optional pam_keyinit.so force revoke # Auth in MySQL auth requisite pam_mysql.so user=vsftpd-ro passwd=readonly host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=0 session required pam_mkhomedir.so skel=/opt/ftp/ umask=0022 debug account required pam_mysql.so user=vsftpd-ro passwd=readonly host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=0 

Может ли кто-нибудь проверить эту конфигурацию?

Вот несколько мыслей:

1) Вероятно, вам нужно использовать модуль pam_script или что-то подобное для создания пользователей homedir. Модуль pam pam_mkhomedir основывает домашний каталог на том, что видно в файле passwd (или ldap и т. Д.), И принимает множественные сопоставления uid / gid / homedir. Ваши пользователи являются виртуальными в mysql и не основаны на записи passwd, о которой знает система, и могут играть хорошо в мире vsftp.

Модуль pam_script, скорее всего, не включен в ваш дистрибутив, и вам может потребоваться найти внешний пакет или скомпилировать пакет из источника.

2) $ PAM_USER – переменная environement, которая передается модулю pam : с pam_script, как мне передать PAM_AUTHTOK и PAM_USER во всех случаях?

3) Когда вы дойдете до части скрипта, проверьте наличие ошибок selinux, так как / etc / pam-script / pam_script_auth может получить шлепанную запись в нестандартное место для вашего распространения.

4) Отправьте свой вывод в файл / etc / pam-script / pam_script_auth в файл журнала, чтобы вы могли видеть, возникают ли ошибки, связанные с вашими командами.

 $ cat /etc/pam-script/pam_script_auth #!/bin/sh echo "I got here" >> /tmp/script.out 2>&1 if [ ! -d "/opt/ftp/$PAM_USER" ]; then /usr/bin/env mkdir /opt/ftp/$PAM_USER >> /tmp/script.out 2>&1 /usr/bin/env chown ftp:ftp /opt/ftp/$PAM_USER >> /tmp/script.out 2>&1 fi 

Удачи,

Ник

Итак, это ваш скрипт:

 #!/bin/sh if [ ! -d "/opt/ftp/$PAM_USER" ]; then /usr/bin/env mkdir /opt/ftp/$PAM_USER /usr/bin/env chown ftp:ftp /opt/ftp/$PAM_USER fi 

Попробуйте свой сценарий:

 #!/bin/sh if [ ! -d "/opt/ftp/${PAM_USER}" ]; then /usr/bin/env mkdir /opt/ftp/${PAM_USER} /usr/bin/env chown ftp:ftp /opt/ftp/${PAM_USER} fi 

PAM_USER – это переменная справа? Но я не вижу, где вы создаете эту переменную.

Надеюсь, это поможет вам, у меня есть похожий скрипт, он проверяет мое имя хоста, чтобы взять файл на сервере tftp.