1. 程式人生 > >FTP服務功能使用

FTP服務功能使用

ftp進階使用方法

實驗1:最簡單的實現FTP功能

1.直接yum安裝

yum install vsftpd

2.啟動vsftpd服務

service vsfptd start

3.查看端口是否開啟

ss -ntl # 查看端口21端口是否開啟

4.開始使用

ftp ftp服務ip地址


實驗2:基於DB數據庫文件的FTP虛擬用戶

1.創建用戶數據文件

vim /etc/vsftpd/ftpvusers

添加用戶信息(用戶名、密碼)

xdg

xdg

mage

xdg

cd /etc/vsftpd/

db_load -T -t hash -f ftpvusers xdgvusers.db # 生成用戶數據庫文件*.db

chmod 600 ftpvusers.db #

添加密碼文件的保密性


2.添加自定義的ftp服務用戶

useradd -d /var/ftpsite -s /sbin/nologin ftpvuser

註:就算是nologin也是能正常訪問的,但是ssh是不可以的

chmod 555 /var/ftpsite

註:加目錄不能有寫權限,不然登錄出錯

mkdir /var/ftpsite/upload

註:上傳下載使用,單個管理目錄(在ftp根目錄下是無法操作的)

chown ftpvuser /var/ftpsite/upload

註:屬主的更改


3.添加pam模塊的機制

vim /etc/pam.d/vsftpd.vuser # 認證機制

auth required pam_userdb.so db=/etc/vsftpd/xdgvusers # 這裏xdgvusers.db後綴省略了

account required pam_userdb.so db=/etc/vsftpd/xdgvusers # 這裏也是


4.編輯vsftpd的相關配置文件,指定pam模塊機制

vim /etc/vsftpd/vsftpd.conf # 啟用認證,配置相關信息

pam_service_name=vsftpd.vuser

guest_enable=YES

guest_username=ftpvuser

# 虛擬用戶:訪問時進程顯示的用戶名

user_config_dir=/etc/vsftpd/ftpvusers.conf.d/

# 這裏是指定ftp服務的用戶配置文件路徑


5.建立虛擬用戶各自的配置文件

mkdir /etc/vsftpd/ftpvusers.conf.d/

cd /etc/vsftpd/ftpvusers.conf.d/

vim /etc/vsftpd/ftpvusers.conf.d/xdg # 一個指定了家目錄的相關功能

anon_upload_enable=YES # 上傳功能

anon_mkdir_write_enable=YES # 只能創建目錄功能

vim /etc/vsftpd/ftpvusers.conf.d/mage # 一個指定了另個為家目錄的相關功能

local_root=/app/mage # 指定特定的家目錄,上面沒用特定,使用的原來創建用戶的家目錄

anon_upload_enable=YES

anon_mkdir_write_enable=YES


6.準備mage的目錄

mkdir -p /app/mage/upload # 創建目錄方便管理

chmod 555 mage # ftp服務用戶的家目錄不允許默認有寫權限,不然會出錯

chown ftpvuser /app/mage/upload # 設置目錄的屬性信息


7.測試

systemctl restart vsftpd

命令行: ftp ftp的ip地址

網頁當中: ftp://ftp的ip地址


實現3:基於MYSQL驗證的vsftpd虛擬用戶

實現環境:

一臺作為ftp服務器、一臺作為數據庫服務器(centos7)

準備工作:

關閉防火墻、關閉SELinux

1、安裝所需要包和包組:

在數據庫服務器上安裝包:

Centos7:在數據庫服務器上安裝

yum –y install mariadb-server mariadb

systemctl start mariadb.service

systemctl enable mariadb

在FTP服務器上安裝vsftpd和pam_mysql包

centos6:pam_mysql由epel6的源中提供(配置centos6的yum源) # pam模塊和數據庫之前的連接

yum install vsftpd pam_mysql

centos7:無對應rpm包,需手動編譯安裝

yum -y groupinstall "Development Tools"

yum -y install mariadb-devel pam-devel vsftpd # 所依賴的包

下載pam_mysql-0.7RC1.tar.gz ftp://172.16.0.1/pub/Sources/sources/pam/

tar xvf pam_mysql-0.7RC1.tar.gz cd pam_mysql-0.7RC1/

./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security

make && make install

2、在數據庫服務器上創建虛擬用戶賬號

1.建立存儲虛擬用戶數據庫和連接的數據庫用戶

mysql> CREATE DATABASE vsftpd;

mysql> SHOW DATABASES;

ftp服務和mysql不在同一主機:

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@‘172.18.48.%‘ IDENTIFIED BY ‘xdg‘;

ftp服務和mysql在同一主機:

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY ‘xdg‘;

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@‘127.0.0.1‘ IDENTIFIED BY ‘xdg‘;

mysql> FLUSH PRIVILEGES;

2.準備相關表

mysql> USE vsftpd;

mysql> CREATE TABLE users (name CHAR(50) NOT NULL, password CHAR(50) NOT NULL );

mysql>DESC users;

測試連接

mysql -uvsftpd -pxdg -h 172.18.48.215

3.添加虛擬用戶

根據需要添加所需要的用戶,為了安全應該使用PASSWORD函數加密其密碼後存儲

mysql> INSERT INTO users(name,password) values(‘xiaoming‘,password(‘xdg‘));

mysql> INSERT INTO users(name,password) values(‘xiaohong‘,password(‘xdg‘));

或者合在一起:insert into users(name,password) value(‘xiaoming‘,password(‘xdg‘)),(‘xiaohong‘,password(‘xdg‘));

mysql> SELECT * FROM users;


3、在FTP服務器上配置vsftpd服務

1.在FTP服務器上建立pam認證所需文件

vi /etc/pam.d/vsftpd.mysql 添加如下兩行

auth required pam_mysql.so user=vsftpd passwd=xdg host=172.18.48.215 db=vsftpd table=users

usercolumn=name passwdcolumn=password crypt=2

account required pam_mysql.so user=vsftpd passwd=xdg host=172.18.48.215 db=vsftpd table=users

usercolumn=name passwdcolumn=password crypt=2

註:user=vsftpd passwd=xdg 指的是:數據庫的用戶名、數據庫密碼

host=172.18.48.215 db=vsftpd table=users 指的是:數據庫的主機、數據庫名、數據庫表名

crypt=2 指的是: crypt采用加密 2表示使用mysql password()函數加密

2.建立相應用戶和修改vsftpd配置文件,使其適應mysql認證建立虛擬用戶映射的系統用戶及對應的目錄

useradd -s /sbin/nologin -d /app/ftpmysql ftpmysql

chmod 555 /app/ftpmysql # centos7 需除去ftp根目錄的寫權限(軟件要求)

mkdir /app/ftpmysql/{upload,pub}

setfacl -m u:ftpmysql:rwx /app/ftpmysql/upload

註:或者 chown ftpmysql /app/ftpmysql/upload


確保/etc/vsftpd.conf中已經啟用了以下選項

anonymous_enable=YES # 允許匿名用戶訪問

添加下面兩項

guest_enable=YES

guest_username=ftpmysql

註:系統用戶和虛擬用戶的映射

修改下面一項,原系統用戶無法登錄

pam_service_name=vsftpd.mysql # 指定pam模塊


4、啟動vsftpd服務

service vsftpd start

systemctl start vsftpd

chkconfig vsftpd on

systemctl enable vsftpd

查看端口開啟情況

netstat -tnlp | grep :21


5、Selinux相關設置:在FTP服務器上執行 # 默認進入就是關閉的,所以可以不用寫

restorecon -R /lib64/security

setsebool -P ftpd_connect_db 1

setsebool -P ftp_home_dir 1

chcon -R -t public_content_rw_t /var/ftproot/


6、測試:利用FTP客戶端工具,以虛擬用戶登錄驗證結果

tail /var/log/secure # 日誌存放的文件,因為通過pam模塊認證通過


7、在FTP服務器上配置虛擬用戶具有不同的訪問權限 vsftpd可以在配置文件目錄中為每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在 vsftpd.conf指定其路徑及名稱即可

1、配置vsftpd為虛擬用戶使用配置文件目錄

vim /etc/vsftpd/vsftpd.conf 添加如下選項

user_config_dir=/etc/vsftpd/vusers_config

2、創建所需要目錄,並為虛擬用戶提供配置文件

mkdir /etc/vsftpd/vusers_config/

cd /etc/vsftpd/vusers_config/

touch wang mage

3、配置虛擬用戶的訪問權限 虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關 指令進行的。

如果需要讓用戶wang具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/wang文件,在裏面添加如下 選項並設置為YES即可,只讀則設為NO

註意:需確保對應的映射用戶對於文件系統有寫權限

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}


FTP服務功能使用