Хорошо, я пытаюсь воспроизвести базовую настройку компании веб-хостинга здесь, аутентифицируя виртуальных пользователей через SQL и перенаправляя / помещая их в тюрьму в их каталог. Здесь я достиг почти всех целей, за исключением перенаправления / заключения их в свой каталог.
Каталоги хранятся в /home/ftp
и вот что DefaultRoot
установлен на. Я хочу, чтобы у каждого отдельного пользователя был отдельный каталог. Не похоже, что настройка homedir
в SQL не имеет никакого эффекта. После входа в FTP с любым пользователем он входит в DefaultRoot
без ограничения каталога или перенаправления.
Как мне выполнить эту последнюю задачу?
Попробуйте закомментировать DefaultRoot, я думаю, это может переопределить значения, считанные из бэкэнда базы данных.
РЕДАКТИРОВАТЬ:
Если установлен DefaultRoot и что-либо другое, кроме ~, то пользователь будет заключен в тюрьму в дереве с корнем DefaultRoot.
Если DefaultRoot равен ~, то пользователь будет заключен в тюрьму в дереве с корнем в его домашнем каталоге.
В дополнение к настройке 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:
passwd.ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
group.ftp
ftp:x:50:
nobody:x:99:
Все это заставляет ваших виртуальных пользователей иметь UID / GID 14:50 на жестком диске независимо от их имени пользователя для входа.