vsftpd基於數據庫文件實現虛擬用戶管理站點目錄

vsftpd基於數據庫文件來實現虛擬用戶管理站點目錄:

ftp授權單個系統用戶管理(此用戶要禁止登陸服務器),虛擬出多個虛擬用戶來管理不同的站點目錄

一環境
(1)關閉selinux,centos6.8 x_86_64開啓防火牆,放開ftp的端口

(2).存放虛擬用戶的密碼文件
[root@cacti vsftpd]# cat /etc/vsftpd/vsftpd_login
drxiaowu ##賬戶
ZkJxu55rt9 ##密碼
yanyonG
Zk&aO=+w09
xiaowu
Zk&xi+wu96

(3)生成帳戶的文件數據庫
db_load -T -t hash -f vsftpd_login /etc/vsftpd/vsftpd_login.db
(4)修改文件數據庫訪問權限
chmod 600 /etc/vsftpd/vsftpd_login.db
(5)手工建立虛擬用戶所需的PAM配置文件
[root@cacti extra]# cat /etc/pam.d/vsftpd.virtual
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

(6)添加一個虛擬用戶的入口帳戶
useradd -d /var/www/html -s /sbin/nologin apache

二.生產環境配置演示:

2.1 完整生產配置文件如下:
[root@cacti test001]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog

listen=YES
listen_port=1029 ###默認ftp端口是21,現在修改ftp端口爲1029
###listen_data_port=1011
pam_service_name=vsftpd.virtual
userlist_enable=YES
tcp_wrappers=YES
check_shell=YES
chroot_local_user=YES
guest_enable=YES
guest_username=apache
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/extra

2.2 多個不同的虛擬用戶共享管理同一個站點目錄的配置文件:
[root@cacti extra]# cat /etc/vsftpd/extra/drxiaowu
local_root=/var/www/html/cacti
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=3
max_per_ip=3
local_max_rate=50000
[root@cacti extra]# cat /etc/vsftpd/extra/yanyonG
local_root=/var/www/html/cacti
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
max_clients=3
max_per_ip=2
local_max_rate=50000

2.2 多個不同的虛擬用戶管理不同站點目錄的配置文件:

[root@cacti extra]# cat xiaowu
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/var/www/html/itop
max_clients=1
max_per_ip=2
local_max_rate=50000

[root@cacti extra]# cat drxiaowu
local_root=/var/www/html/cacti
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=3
max_per_ip=3
local_max_rate=50000

測試:
登陸xiaowu ftp賬戶測試:
[root@cacti itop]# lftp -p 1029 [email protected]
lftp [email protected]:/> mkdir test0000000001
mkdir ok, `test0000000001' created
lftp [email protected]:/> cd test0000000001/
lftp [email protected]:/test0000000001> put /root/10.13.23.24.sql
265146 bytes transferred in 5 seconds (48.7K/s)
lftp [email protected]:/test0000000001> ls
-rw-r--r-- 1 48 48 265146 Jan 14 05:47 10.13.23.24.sql
lftp [email protected]:/test0000000001> pwdbr/>ftp://[email protected]:1029/test0000000001
[root@cacti ~]# cd /var/www/html/itop
[root@cacti itop]# ll test0000000001/
total 260
-rw-r--r--. 1 apache apache 265146 Jan 14 13:47 10.13.23.24.sql

登陸drxiaowu ftp賬戶測試:

[root@cacti itop]# lftp -p 1029 [email protected]
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> mkdir txt0000001
mkdir ok, `txt0000001' created
lftp [email protected]:/> cd txt0000001/
lftp [email protected]:/txt0000001> put /root/MegaSAS.log
187351 bytes transferred
lftp [email protected]:/txt0000001> ls
-rw-r--r-- 1 48 48 187351 Jan 14 05:53 MegaSAS.log
lftp [email protected]:/txt0000001>
[root@cacti itop]# cd /var/www/html/cacti/
[root@cacti cacti]# ls txt0000001/
MegaSAS.log
[root@cacti cacti]# ll txt0000001/
total 184
-rw-r--r--. 1 apache apache 187351 Jan 14 13:53 MegaSAS.log

2.3 多個不同的虛擬用戶管理不同站點目錄的配置文件:
當前的站點目錄不都是在/var/www/html 下了,而是在如下目錄,例如:/data/www/testweb /var/www/html /opt/www 類似這樣的多個目錄:
配合文件如下:
[root@cacti /]# cat /etc/vsftpd/extra/xiaowu
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/www/testweb
max_clients=1
max_per_ip=2
local_max_rate=50000

測試:
[root@cacti itop]# lftp -p 1029 [email protected]
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> ls
lftp [email protected]:/> pwd
ftp://[email protected]:1029/

lftp [email protected]:/> put /root/10.13.23.24.sql
put: Access failed: 553 Could not create file. (10.13.23.24.sql)
上傳文件失敗,原因是:虛擬用用戶是apache,而指定的ftp的上傳的站點目錄/data/www/testweb卻是root權限,所以沒有權限上傳。
授權testweb爲apache權限
cd /data/www/
chown -R apache.apache testweb
重新上傳:
[root@cacti www]# lftp -p 1029 [email protected]
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> pwdbr/>ftp://[email protected]:1029/
lftp [email protected]:/> put /root/10.13.23.24.sql
265146 bytes transferred in 5 seconds (48.8K/s)
lftp [email protected]:/> ls
-rw-r--r-- 1 48 48 265146 Jan 14 06:09 10.13.23.24.sql
[root@cacti www]# ll /data/www/testweb/
total 260
-rw-r--r--. 1 apache apache 265146 Jan 14 14:09 10.13.23.24.sql
上傳成功。

提示:此時其他的ftp用戶drxiaowu yanyong 任然可以上傳文件到/var/www/html/cacti /var/www/html/itop 目錄下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章