vsftpd-PAM-디렉토리를 작성하는 MySQL 및 pam_mkhomedir


11

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.

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

어떤 아이디어?


안녕하세요,이 문제를 해결할 수 있습니까?
George

@George 전혀 아닙니다.
Tom

나는 매우 다른 방식으로 문제를 해결했으며 vsftpd에서 멀어지고 pureftp와 함께 갔다. 이러한 모든 문제없이 몇 시간 안에 설치 및 실행 완벽하게 작동합니다.
조지

vsftpd가 / home / vsftpd를 소유하고 있습니까?
Luca Gibelli 8

답변:


0

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


당신이 이것에 제공 할 수있는 참조가 있습니까? nss-mysql내 상황에서 필요한 것에 대해 아무것도 찾지 못하는 것 같 습니까?
Tom

pam_mkhomedir그것이 생성 해야하는 사용자의 홈 디렉토리 경로를 어떻게 알 수 있습니까? 사용자 확인에 어떤 데이터베이스를 사용해야하는지 어떻게 알 수 있습니까? NSS는 그 정보를 제공합니다. 귀하의 경우, 사용자 데이터베이스가 MySQL 데이터베이스에 저장되어 있다고 가정하면 nss_mysql 이 필요 합니다.
Ashish SHUKLA

이 라이브러리에 대해 무엇이든 찾으려고합니다. 제공 한 링크는 문서가없는 매우 오래된 프로젝트입니다. 이것을 설치하면 nssswitch.conf에 넣을 내용이 표시되지 않습니다. 오직 3 개의 매개 변수를 포함 할 수 있습니다. 어떤 종류의지도를 제공 할 수 있습니까? pam_mysql이 nss-mysql과 같은 것 같습니까? pam_mysql이 mysql db를 사용하여 vsftpd 가상 사용자로 인증하는 곳에서 작동합니다.
Tom

PAMNSS 와 다릅니다 . PAM은 인증을 목표로하지만 NSS의 목표는 이름 (호스트 이름, 사용자 이름 등)을 확인하는 것입니다. 배포판의 대부분은 nss_mysql데비안 용 패키지를 제공하고 파생물은 다음과 같이 제공합니다 libnss-mysql. 그리고 예, 10 년 동안 업데이트되지는 않았지만 정상적으로 작동합니다. 모듈을 설치하고 구성한 후에 추가하면 nsswitch.conf(5)작업이 시작됩니다.
Ashish SHUKLA

내 배포판에서 libnss-mysql을 추가했습니다. 상자 밖으로 시도했지만 아무것도 작동하지 않습니다. nsswitch.conf에서 변경해야 할 사항에 대한 아이디어가 있습니까?
Tom

0

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

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

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


0

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

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.