좋습니다. 여기서는 SQL을 통해 가상 사용자를 인증하고 가상 사용자를 해당 디렉터리로 리디렉션/감금하여 웹 호스팅 회사의 기본 설정을 복제하려고 합니다. 여기서 대부분의 목표를 달성했습니다.디렉터리로 리디렉션/감금하는 경우는 제외됩니다.
디렉토리는 다음에 저장되며 /home/ftp
이것이 DefaultRoot
설정됩니다. 나는 각 개별 사용자가 자신의 디렉토리를 갖고 감옥에 가두기를 원합니다. homedir
SQL의 설정이 아무런 영향을 미치지 않는 것 같습니다 . 임의의 사용자로 FTP에 로그인하면 DefaultRoot
디렉터리 감옥이나 리디렉션 없이 로그인됩니다 .
이 마지막 작업을 어떻게 수행합니까?
답변1
DefaultRoot를 주석 처리해 보세요. 데이터베이스 백엔드에서 읽은 값을 재정의할 수 있을 것 같습니다.
편집하다:
DefaultRoot가 설정되고 ~ 이외의 다른 것이 있으면 사용자는 DefaultRoot에 루트가 있는 트리에 갇히게 됩니다.
DefaultRoot가 ~이면 사용자는 it 홈 디렉터리에 루트가 있는 트리에 갇히게 됩니다.
답변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% 인증을 수행하고 DB에 나열된 홈 디렉터리에 가두는 다소 간결한 예입니다. 로그인할 때 홈 디렉토리를 동적으로 생성하려는 경우(데이터베이스에 추가하고 이를 수행하기 위해 서버에 로그인하고 싶지 않은 경우 유용함) 다음을 추가할 수 있습니다.
CreateHome on dirmode 0755
...구성에. 위에 나열된 다른 두 개의 더미 파일은 Red Hat/Centos 서버에 있는 ProFTPd 설치와 일치합니다.
비밀번호.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:
이로 인해 가상 사용자는 로그인 사용자 이름에 관계없이 하드 드라이브에서 14:50의 UID/GID를 갖게 됩니다.