Хорошо, я пытаюсь повторить базовую настройку компании веб-хостинга, аутентифицируя виртуальных пользователей через SQL и перенаправляя/заключая их в их каталог. Я достиг большинства целей здесь,за исключением перенаправления/заключения их в их каталог.
Каталоги хранятся в /home/ftp
и это то, что DefaultRoot
установлено. Я хочу, чтобы каждый отдельный пользователь имел и был заключен в тюрьму в своем собственном каталоге. Похоже, что настройка homedir
в SQL не имеет никакого эффекта. При входе на FTP любым пользователем он входит в DefaultRoot
без тюрьмы или перенаправления каталога.
Как выполнить эту последнюю задачу?
решение1
Попробуйте закомментировать DefaultRoot. Думаю, это может переопределить значения, считанные из бэкэнда базы данных.
РЕДАКТИРОВАТЬ:
Если задан DefaultRoot и есть что-то отличное от ~, то пользователь будет помещен в дерево с корнем DefaultRoot.
Если DefaultRoot равен ~, то пользователь будет помещен в дерево с корнем в его домашнем каталоге.
решение2
Помимо настройки DefaultRoot ~, как уже упоминалось, как выглядит ваша конфигурация SQL — вы действительно извлекаете ее из базы данных?
DefaultRoot ~
<IfModule mod_dso.c>
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
</IfModule>
SQLLogFile /var/log/proftpd/mod_sql.log
PersistentPasswd off
AuthPAM off
AuthUserFile /some/path/to/dummy/passwd.ftp
AuthGroupFile /some/path/to/dummy/group.ftp
AuthOrder mod_sql.c mod_auth_file.c
SQLConnectInfo proftpd@localhost:3306 userdatabase password
SQLAuthTypes Backend Crypt Plaintext OpenSSL
SQLUserInfo user user_id password NULL NULL ftp_homedir NULL
SQLAuthenticate users
SQLDefaultUID 14
SQLDefaultGID 50
SQLMinUserUID 13
SQLMinUserGID 49
Это более или менее краткий пример выполнения 100% аутентификации из базы данных и помещения их в их домашний каталог, как указано в базе данных. Если вы также хотите динамически создавать их домашний каталог при входе в систему (полезно, если вы добавляете их в базу данных и не хотите входить на сервер, чтобы сделать это), вы можете добавить:
CreateHome on dirmode 0755
...в конфигурацию. Два других фиктивных файла, перечисленных выше, соответствуют вашей установке ProFTPd, которая находится на сервере Red Hat/Centos:
пароль.ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
группа.ftp
ftp:x:50:
nobody:x:99:
Все это приведет к тому, что ваши виртуальные пользователи будут иметь UID/GID 14:50 на жестком диске независимо от их имени пользователя для входа.