vsftpd-PAM-디렉토리를 작성하는 MySQL 및 pam_mkhomedir user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password

PAM으로 mysql DB에 연결하는 가상 사용자와 vsftpd를 성공적으로 사용했습니다. 이제 성공적인 vsftpd 연결로 사용자 디렉토리 생성을 자동화하고 싶습니다.

다음은 /etc/pam.d/vsftpd 구성입니다.

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
account required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
session required pam_mkhomedir.so skel=/home/skel/ umask=0022 debug

pam_mkhomedir을 추가하면 로그에 다른 메시지가없는 디렉토리를 만들 수 없다는 메시지 만 표시됩니다. 따라서 분명히 적용되지 않습니다. 필요한 게 더 있습니까?

내 /etc/vsftpd/vsftpd.conf :

# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES

# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES

# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=YES
# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
download_enable=NO

force_local_data_ssl=NO
force_local_logins_ssl=NO

# PASV - passive ports for FTP
pasv_enable=YES
pasv_min_port=14000
pasv_max_port=14100

vsftpd.conf에서 이것이 필요하다는 게시물을 보았으므로 이것을 시도했습니다.

session_support=YES

그러나 이제 로그가 표시하는 것처럼 더 이상 인증하지 않는 것 같습니다.

Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_keyinit(vsftpd:session): Unable to look up user "user1"
Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_mkhomedir(vsftpd:session): User unknown.

디렉토리를 이미 만든 경우에도 마찬가지입니다. 이제 아무도 들어갈 수 없습니다.

어떤 아이디어?



답변

PAM 모듈에 의한 사용자 조회가 성공하려면에서 MySQL 용 NSS 모듈을 활성화해야합니다 nsswitch.conf(5). nss_mysql당신의 친구입니다.


답변

당신은 시도 할 수 있습니다 pam_script-그것은 사용자 세션이 열린 후 (다른 것들 중에서) 임의의 쉘 스크립트를 실행할 수있게하는 pam 모듈입니다.

당신은 찾을 수 있습니다 pam_script여기에 : https://github.com/jeroennijhof/pam_script를 . 적어도 패키지 관리자를 통해 설치할 수 있어야합니다. 적어도 apt-get을 통해 설치할 수있었습니다.

vsftpd는 인증을 거부 할 때 적어도 pam_script에 문제가있는 것 같습니다. 해결되지 않은 질문 : vsftpd가 실패한 pam_script 인증 후 정지됨을 참조하십시오 . 그러나 귀하의 경우 문제가되지 않아야합니다.


답변

짧은 대답은 시스템과 서비스 자격 증명을 혼합하고 있으며 vsftpd의 가상 사용자와 함께 pam_mkhomedir을 사용해서는 안됩니다.

pam_mkhomedir은 사용자 로컬 디렉토리를 작성하기위한 것이며 사용자가 시스템에 정의되어 있다고 가정합니다. vsftpd의 가상 사용자는 의도적으로 시스템 사용자 가 아니며 vsftpd 서비스 이외의 권한이 없습니다 (시스템에 해당 사용자에 대한 정보가 없음). 인증에 PAM을 사용하는 것은 사용자 자격 증명 (사용자 이름 + 암호 ==> 확인)의 유효성 검사 만 전달합니다. vsftpd도 PAM과 함께 시스템 사용자를 사용하도록 구성 할 수 있으므로 가상 사용자를 사용할 때 혼동 될 수 있습니다.

가상 사용자 의 홈 디렉토리를 작성하는 경우 vsftpd 서비스 계정 / 그룹을 폴더의 소유자로 설정하고 vsftpd 서비스 경로에 vsftpd 서비스에 대한 적절한 권한을 가진 “가상 홈 디렉토리”를 배치해야합니다. 해결하려는 문제가 확실하지 않지만 사용자 세션을 chrooting 할 때 사용자간에 격리를 시도한다고 가정합니다. 로그인하려면 사용자 데이터베이스에 가상 사용자를 작성해야하므로 동시에 홈 디렉토리를 생성하지 않는 이유는 무엇입니까? 가상 사용자 데이터베이스와 vsftpd 사용자 가상 홈 폴더의 일관성을 유지하기 위해 사용자 추가 / 변경 / 삭제 스크립트를 사용하여이 작업을 수행했습니다. YMMV.

가상 사용자의 경우 시스템이 아닌 vsftpd 내에서만 작업하고 있음을 기억하십시오.