(linux) 8. PURE_FTP 설정 및 사용자별 권한 설정
💼📝🔑⏰ 📙📓📘📒🎓
💼 pure-ftpd 설치 및 활성화
파일질라로 들어가는 방식은 ssh 방식이고, 진짜 FTP를 사용하기 위해서는 pure-ftpd 설치해주어야 한다.
-
sudo yum install pure-ftpd -y
: FTP 설치 명령 -
sudo vim /etc/pure-ftpd/pure-ftpd.conf
: FTP 설정파일 열기- 아래 내용 추가/변경 후 저장
#1. 10배 이상 늘리기 // (최대 몇명까지 받을지 설정하는 것) MaxClientsNumber 500 # 2 .100배 이상 늘리기 //(외부에서 접속을 최대 몇명까지 설정하는 것) MaxClientsPerIP 80 # 3. MySQLConfigFile 앞에 # 주석 풀기 MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
- 아래 내용 추가/변경 후 저장
📝 pure-ftpd 회원관리를 MySql로 설정
ftp 권한을 MySql로 관리하는 이유?
- FTP로 접근가능한 여러명의 사용자들에게 각각 권한을 부여해주기 위해서 사용한다.
- 굳이 Mysql로 설정하지 않아도 된다.
- 만약 파일로 관리하게 되면 굉장히 노가다 작업을 해야한다.
🔑 ftp_mysql_conf 설정
-
sudo vim /etc/pure-ftpd/pureftpd-mysql.conf
: ftp_mysql 설정파일 열기- 아래 내용 추가/변경 후 저장
# 1. mysql 통신 설정 하는 경로 추가 # mysql 소켓 파일 확인 하는 방법 # mysql이 돌아가고 있는 상태에서 `sudo updatedb` 명령 후 # `sudo locate mysql | fgrep sock` MYSQLSocket /var/lib/mysql/mysql.sock # 2. pure-ftpd 에서 mysql 에 접속할 때 사용할 ID MYSQLUser pureftpd # 3. pure-ftpd 에서 mysql 에 접속할 때 사용할 PW MYSQLPassword 비밀번호입력 # 4. ftp 사용자 정보 DB MYSQLDatabase pureftpd # 5. 비번은 평문으로 저장 하겠다. MYSQLCrypt cleartext
- 아래 내용 추가/변경 후 저장
🔑 mysql 접속/계정생성
-
sudo mysql -u root -p
: mysql 접속- 계정생성 명령어 입력
-- 1. pureftpd 데이터베이스만 조작할 수 있는 계정생성 grant all privileges on pureftpd.* to pureftpd@'localhost' identified by '비밀번호'; -- 2. pureftpd 계정에서만 제어할 수 있는 데이터베이스 생성 CREATE DATABASE pureftpd; -- 3. 데이터베이스 생성 확인 SHOW DATABASES;
- 계정생성 명령어 입력
-
sudo mysql -u pureftpd -p
: 계정이 생성 및 데이터베이스 생성 확인- 데이터베이스 생성 확인
-- 1. 데이터베이스 생성 확인 SHOW DATABASES;
- 데이터베이스 생성 확인
🔑 mysql 권한 테이블 생성
-
sudo vim /etc/passwd
: 리눅스에서 계정번호 확인- 계정번호
# richard의 계정번호는 1000 이라는 것을 알수 있음 richard:x:1000:1000::/home/richard:/bin/bash
- 계정번호
-
sudo mysql -u pureftpd -p
: MySql pureftp 계정 접속- 1 테이블 생성/ 계정 insert해주는 작업
-- 1. 데이터베이스 사용하겠다는 명령어 USE pureftpd; -- 2.유저 테이블 생성 CREATE TABLE users ( uidx int(10) unsigned NOT NULL AUTO_INCREMENT, `user` varchar(100) NOT NULL, `password` varchar(100) NOT NULL, `gid` int(10) unsigned NOT NULL, `uid` int(10) unsigned NOT NULL, `occurDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `status` tinyint(1) unsigned NOT NULL DEFAULT '1', `ipaccess` varchar(15) NOT NULL, `comment` varchar(100) NOT NULL, `ulBandWidth` smallint(5) unsigned NOT NULL, `dlBandWidth` smallint(5) unsigned NOT NULL, `quotaSize` smallint(5) unsigned NOT NULL, `quotaFiles` int(10) unsigned NOT NULL, `dir` varchar(100) NOT NULL, PRIMARY KEY (`uidx`) ); -- 3. 리눅스 계정별 폴더 접근 권한 설정을 위한 insert insert into `users`(`uidx`,`user`,`password`,`gid`,`uid`,`occurDate`,`status`,`ipaccess`,`comment`,`ulBandWidth`,`dlBandWidth`,`quotaSize`,`quotaFiles`,`dir`) values (1,'site1','비밀번호',1000,1000,NOW(),1,'*','',0,0,0,0,'/web/site1'), (2,'site2','비밀번호',1000,1000,NOW(),1,'*','',0,0,0,0,'/web/site2'), (3,'site3','비밀번호',1000,1000,NOW(),1,'*','',0,0,0,0,'/web/site3');
- 1 테이블 생성/ 계정 insert해주는 작업
-
sudo systemctl status pure-ftpd
: ftp 상태 확인 -
sudo systemctl start pure-ftpd
: ftp 시작 -
sudo systemctl enable pure-ftpd
: ftp 항상 실행상태로 만들기(컴퓨터 껏다켜도..) -
sudo systemctl restart pure-ftpd
: ftp 재시작 -
6. MariaDB 설정에서
SQLYog
로 위 테이블 작업을 하는 방법이 조금더 쉽다.
📝 FTP 설치 및 적용 확인
-
sudo yum install ftp
: ftp 설치 -
sudo ftp 127.0.0.1
: ftp 접속 하는 명령어- Name : site1 : mysql에 등록된 아이디
- Password: 비밀번호 : mysql에 등록한 비밀번호 입력
🔑 파일질라 접속 확인
그래도 접속이 안될 경우
- cmd에
ipconfig
를 쳐서 VirtualBox Host-Only Network:IP 확인
- Filezila
호스트 IP
로 바꿔주면 접속이 된다.
📝 eitplus로 접근하는 방법
- File > FTP > FTPsetting 메뉴 클릭
💼 pure-ftpd 실제 사용 예
- 리눅스를 하나도 모르고, 웹만 만들수 있는 친구있다고 가정해보자
- 그러면 그 친구에게
-
FTP에 접속할 수 있는 호스트 IP
,사용자ID
,비밀번호
를 알려준다.
-
- 친구가 Filezila로 접속한 경우 내가 부여해놓은 폴더만 접근이 가능하게 된다.
📝 새로운 친구가 요청하는 경우
새로운 친구가 웹 서버를 요구 하더라도 아래와 같이 빠르게 서버 추가 및 접속 권한을 부여할 수 있다!! 와우!!
- SQLYog를 통해서 users테이블에 데이터 추가
insert into `users`(`uidx`,`user`,`password`,`gid`,`uid`,`occurDate`,`status`,`ipaccess`,`comment`,`ulBandWidth`,`dlBandWidth`,`quotaSize`,`quotaFiles`,`dir`) values (4,'site4','비밀번호',1000,1000,NOW(),1,'*','',0,0,0,0,'/web/site4');
- 리눅스 서버에 접속하여 /web/site4 폴더 만들기
-
mkdir /web/site4/public -p
: 폴더 만드는 명령어
-
- 리눅스 서버 추가하는 작업
-
sudo vim /etc/nginx/conf.d/vhost.conf
: 호스트 설정파일 열기- site4 내용추가
server{ listen 8014 server_name _; root /web/site4/public; }
- site4 내용추가
-
- 마지막으로 리눅스에서 nginx 재시작 해주면 끝이다.
sudo systemctl restart nginx
댓글남기기