天天看點

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

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 

max_per_ip=2

2.2 多個不同的虛拟使用者管理不同站點目錄的配置檔案:

[root@cacti extra]# cat xiaowu 

local_root=/var/www/html/itop

max_clients=1

[root@cacti extra]# cat drxiaowu 

測試:

登陸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

<a href="mailto:br/"></a>

<a href="mailto:br/">登陸drxiaowu ftp賬戶測試:</a>

<a href="mailto:br/">[root@cacti itop]# lftp -p 1029 [email protected] Password:  lftp [email protected]:~&gt; ls  lftp [email protected]:/&gt; mkdir txt0000001 mkdir ok, `txt0000001' created lftp [email protected]:/&gt; cd txt0000001/ lftp [email protected]:/txt0000001&gt; put /root/MegaSAS.log  187351 bytes transferred lftp [email protected]:/txt0000001&gt; ls -rw-r--r-- 1 48 48 187351 Jan 14 05:53 MegaSAS.log lftp [email protected]:/txt0000001&gt;  [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</a>

<a href="mailto:br/">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</a>

<a href="mailto:br/">測試: [root@cacti itop]# lftp -p 1029 [email protected] Password:  lftp [email protected]:~&gt; ls  lftp [email protected]:/&gt; ls lftp [email protected]:/&gt; pwd ftp://[email protected]:1029/</a>

<a href="mailto:br/">提示:此時其他的ftp使用者drxiaowu yanyong 任然可以上傳檔案到/var/www/html/cacti /var/www/html/itop 目錄下。</a>

 本文轉自 wjw555 51CTO部落格,http://blog.51cto.com/wujianwei/2060748原文連結: