centos에서 vsftpd + mysql 사용
Vsftpd 용 계정 추가 및 가상 사용자 디렉토리 생성
Vsftpd 가 사용할 계정은 vsftpd 로 가정하고 추가합니다.
> useradd vsftpd
> passwd vsftpd
가상 사용자가 사용할 디렉토리는 vsftpd 에 users 디렉토리를 사용한다고 가정합니다.
가상 사용자를 user1 이라고 가정하고 가상 사용자의 홈 디렉토리까지 만들어 줍니다.
> mkdir /home/vsftpd/users
> mkdir /home/vsftpd/users/user1
Mysql Server 설치
가상 유저 정보를 저장하기 위한 mysql 서버를 설치하고 데몬을 띄운후에 mysql root 유저 설정을 해줍니다.
> yum install mysql-server mysql-devel
> chkconfig mysqld on
> service mysqld start
> mysqladmin -uroot password rootpassword
mysql 클라이언트로 mysql 서버에 접속하여 vsftpd 에서 사용할 가상 유저의 DB 를 생성해줍니다.
> mysql -u root -p
mysql> CREATE DATABASE vsftpd;
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'vsftpdpassword';
mysql> FLUSH PRIVILEGES;
mysql> USE vsftpd;
mysql> CREATE TABLE `accounts` (
-> `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-> `username` VARCHAR( 30 ) NOT NULL ,
-> `pass` VARCHAR( 50 ) NOT NULL ,
-> UNIQUE ( `username` )
-> ) ENGINE = MYISAM ;
이제 가상 유저로 사용할 사용자의 계정을 추가해 줍니다.
mysql> INSERT INTO accounts (username, pass) VALUES ('user1', md5('user1password'));
PAM mysql library 설치
vsftpd 에서는 사용자 인증을 위해서 pam 을 사용합니다. 이 pam 인증을 mysql 로 받기 위해서는 pam_mysql.so 라이브러리가 필요합니다.
centos 에서는 mysql 용 pam library 파일을 제공해주지 않아서 EPEL 저장소에서 받아서 설치해야 합니다. 아래와 같이 설치하고 확인합니다.
> rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
> yum install pam_mysql
> ls -al /lib64/security/pam_mysql.so
-rwxr-xr-x 1 root root 42424 Aug 14 2011 /lib64/security/pam_mysql.so
pam을 통해 mysql DB 를 통한 인증이 가능하도록 pam 설정을 /etc/pam.d/vsftpd 파일을 아래와 같이 편집 해줍니다.
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_mysql.so user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3
account required pam_mysql.so user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3
Vsftpd 설치
> yum install vsftpd
설치 후, 아래와 같이 vi 편집기로 /etc/vsftpd/vsftpd.conf 파일을 열어 가상 유저사용에 관한 설정을 해줍니다. 각 기본 설정은 vsftpd 설정 문서를 참고합니다.
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES
이 부분 부터가 가상 사용자 사용에 관한 설정입니다.
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vsftpd
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/users
pam 을 통한 mysql DB 를 통한 인증 및 가상 사용자 디렉토리 설정을 끝마쳤습니다.
각 사용자에 대한 개별 설정은 user_config_dir 에서 지정한 디렉토리에 가상 사용자 계정과 같은 이름(/etc/vsftpd/users/user1) 으로 아래와 같이 생성합니다.
dirlist_enable=YES
download_enable=YES
local_root=/home/vsftpd/users/user1
write_enable=YES
이제 vsftpd 를 서비스에 등록하고 실행하면 가상 유저로 접속이 가능해집니다.
> chkconfig vsftpd on
> service vsftpd start
> ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
이제 다른 가상 사용자를 동적으로 추가 하려면, 아래 과정을 거치면 됩니다.
1. 가상 사용자 계정 디렉토리(/home/vsftpd/users/user2) 를 만듬
2. 가상 사용자 계정 설정 파일(/etc/vsftpd/users/user2)을 만듬
3. mysql DB 에 가상 사용자 계정(user2) 및 암호(user2password) 를 넣어줌
출처 : https://reachlabkr.wordpress.com/2015/01/21/vsftpd-virtual-user-with-mysql-on-centos-6-5-2/
'Linux' 카테고리의 다른 글
/lib/ld-linux.so.2: bad ELF interpreter: 그런 파일이나 디렉터리가 없습니다 (0) | 2018.02.06 |
---|---|
리눅스 euc-kr 파일을 utf-8로 변환, 또는 반대로 변환 (0) | 2018.01.19 |
네임서버 설치 bind 설치 및 설정 (dns) (1) | 2018.01.14 |
원격호스트에서 ssh 세션을 이용한 rsync 명령으로 파일/디렉토리 복사 (0) | 2018.01.14 |
Superblock 손상을 입었을 경우 복구 방법 (0) | 2018.01.14 |
댓글