Amazon ami 64비트 상자, 무료 계층 마이크로에서 vsftpd를 설정하려고 합니다.
다음 지침을 따르세요.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**
이제 나는 혼란스러워요
지식이 부족해서 스크립트 파일을 만들어야 하는지, 아니면 이미 상자에 포함되어 있어서 수정하면 되는지 잘 모르겠습니다. 나는 Nick이 자신의 예제를 게시했을 때 32비트 시스템에서 스크립트를 생성했다고 가정합니다. 그러나 그의 기사 하단에서 그는 64비트 스크립트에 대해 이야기합니다.
어쨌든 탐색을 시도하면 $ 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
이제 상자에 계속 로그인할 수 있지만 데이터베이스에 대해 인증되지 않는 것 같고 사용자 파일이 생성된 위치가 표시되지 않습니다. 내 생각엔 그들의 대본에 뭔가 문제가 있는 것 같아. nick이 비슷한 질문에 답변한 다음 우분투 질문도 발견했습니다.
미리 감사드립니다.
편집하다
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
다음은 몇 가지 아이디어입니다.
1) 사용자 homedir을 생성하려면 pam_script 모듈이나 이와 유사한 모듈을 사용해야 할 수도 있습니다. pam 모듈 pam_mkhomedir은 passwd 파일(또는 ldap 등)에 표시된 내용을 기반으로 홈 디렉토리를 기반으로 하며 여러 uid/gid/homedir 매핑을 가정합니다. 귀하의 사용자는 시스템 인식 비밀번호 항목을 기반으로 하지 않고 mysql에서 가상이며 vsftp 세계에서 잘 작동합니다.
pam_script 모듈은 배포판에 포함되어 있지 않을 가능성이 높으며, 외부 패키지를 찾거나 소스에서 패키지를 컴파일해야 할 수도 있습니다.
2) $PAM_USER는 pam 모듈에 전달되는 환경 변수입니다. pam_script를 사용하여 모든 경우에 PAM_AUTHTOK 및 PAM_USER를 어떻게 전달할 수 있습니까?
3) 스크립트 섹션에 도달하면 /etc/pam-script/pam_script_auth가 배포판의 비표준 위치에 기록될 수 있으므로 selinux 오류를 확인하십시오.
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
행운을 빌어요,
갭
답변2
이것이 귀하의 스크립트입니다.
#!/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 서버에서 파일을 가져오기 위해 호스트 이름을 확인하는 비슷한 스크립트가 있습니다.