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服務功能使用