AMI 시스템에 스크립트를 설정하여 디렉터리 생성(vsftpd, pam, mysql)

AMI 시스템에 스크립트를 설정하여 디렉터리 생성(vsftpd, pam, mysql)

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이 비슷한 질문에 답변한 다음 우분투 질문도 발견했습니다.

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

다음은 몇 가지 아이디어입니다.

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 서버에서 파일을 가져오기 위해 호스트 이름을 확인하는 비슷한 스크립트가 있습니다.

관련 정보