2.创建FTP根目录及虚拟用户映射的系统用户

图片 2

安装:

[root@server ~]# yum install -y vsftpd

[root@server ~]# rpm -ql vsftpd

/etc/logrotate.d/vsftpd

/etc/pam.d/vsftpd

/etc/rc.d/init.d/vsftpd

/etc/vsftpd

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

/etc/vsftpd/vsftpd.conf

/etc/vsftpd/vsftpd_conf_migrate.sh

/usr/sbin/vsftpd 

…….

[root@server ~]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@server ~]# netstat -lntup|grep 21

tcp        0      0 0.0.0.0:21                  0.0.0.0:*             
     LISTEN      3419/vsftpd

[root@server ~]# cd /var/ftp/pub

[root@server pub]# ll

total 0

[root@server pub]# cp /etc/fstab .

到浏览器测验:

图片 1

图片 2

 

####################################################################################################

1.独立自己作主虚构FTP客户的帐号数据库文件

2.开立FTP根目录及虚构客商映射的系统顾客

3.白手成家辅助设想客户的PAM认证文件

4.在vsftpd.conf文件中丰硕援助配置

5.为独家虚拟客商建设架构单独的配备文件

6.重新加载vsftpd配置

7.运用虚构FTP账户访谈测验

 

经超过实际例:

1.起家虚拟FTP客商的帐号数据库文件

  创设设想客户的账户名、密码列表(通过地方文件的艺术卡塔尔国

[root@filesvr~]# vi /etc/vsftpd/vusers.list

fedora

123

gentoo

456

[root@filesvr~]# cd /etc/vsftpd/

[root@filesvrvsftpd]# db_load -T -t hash -f vusers.list   vusers.db

[root@filesvrvsftpd]# file vusers.db

vusers.db: Berkeley DB (Hash, version 8, native byte-order)

[root@filesvrvsftpd]# chmod 600/etc/vsftpd/vusers.*

2.创设FTP根目录及虚构顾客映射的系统客户

[root@filesvr~]# mkdir/var/ftproot

[root@filesvr~]# useradd -d /var/ftproot -s /sbin/nologin virtual

[root@filesvr~]# chmod 755 /var/ftproot/

3.起家扶植虚构客商的PAM认证文件

[root@filesvr~]# vi /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth       required     pam_userdb.so db=/etc/vsftpd/vusers

account    required     pam_userdb.so db=/etc/vsftpd/vusers

4.在vsftpd.conf文件中增加支持配置

[root@filesvr~]# vi  /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

guest_enable=YES

guest_username=virtual

pam_service_name=vsftpd.vu

anon_upload_enable=YES   #允许佚名账号有上传作用

anon_mkdir_write_enable=YES   #同意无名账号创造文件成效

anon_other_write_enable=YES  #同意无名氏账号具有删除.更名权限

dirmessage_enable=YES

……

5.为独家虚构客商建构单独的布置文件

在vsftpd.conf文件中拉长顾客配置目录援救

user_config_dir=/etc/vsftpd/vusers_dir

为顾客fedora、gentoo建设布局单独的配备目录及文件

结构文件名与客户名同名

[root@filesvr~]# mkdir/etc/vsftpd/vusers_dir/

[root@filesvr~]# cd /etc/vsftpd/vusers_dir/

[root@filesvrvusers_dir]# touch fedora

[root@filesvrvusers_dir]# vi gentoo

anon_upload_enable=YES

anon_mkdir_write_enable=YES

6.再一次加载vsftpd配置

service vsftpd reload

7.行使虚构FTP账户采访测量检验

分级用fedora、gentoo客商登入FTP服务器进行下载、上传测量检验

fedora顾客能够登陆,并得以浏览、下载文件,但不可能上传

gentoo顾客能够登入,并得以浏览、下载文件,也能够上传

佚名客户或别的系统顾客将无法登入

 

 

•在使用
db_load命令时,“-f”选项用于钦定客商名/密码列表文件,“-T”选项允许非BerkeleyDB的应用程序使用从文本格式调换的DB数据文件,“-t
hash”选项钦定读取数据文件的宗旨措施。关于db_load命令的亲力亲为表达可参阅/usr/share/doc/db4-utils-4.3.29/utility/db_load.html文件

•将帐号文件的权限设置为600,能够有效提升安全性

•vsftpd虚构客户必要有二个相应的体系顾客帐号(该帐号不须求安装密码及登陆Shell),该顾客帐号的宿主目录作为有着虚构顾客登入后的联合签字FTP根目录

•PAM配置文件(名称能够活动定义)主要用感觉顺序提供客户认证调节,vsftpd服务应用的私下认可PAM配置文件为/etc/pam.d/vsftpd,能够参照他事他说加以侦察该公文的格式创建新的PAM配置文件,用于虚构客商认证调整

•在vsftpd.conf配置文件中增加guest_enable、guest_username配置项,将拜谒FTP服务的具有虚构顾客对应到均等系统客商帐号virtual。并更正pam_service_name配置项,指向上一步创设的PAM配置文件/etc/pam.d/vsftpd.vu

•在vsftpd服务中,虚拟客户帐户默许作为无名氏顾客管理以减低权限,因而相应的权位设置日常选用以anon_开班的配备项。譬如,在装置虚构顾客所上传文件的默许权限掩码时应使用配备项anon_umask而不是local_umask

•此步骤实际上是可选的,假若无需为独家客户设置独立的选项,则无需此步骤

•即便无需为fedora客户增加额外权限设置,可是也要创设二个空配置文件

•假诺急需禁用或许仅同意一些诬捏客商帐号,相近能够应用/etc/vsftpd/user_list列表文件,具体方法请参照他事他说加以考察2.2.3小节中的例2.13。须要注意的是,在/etc/vsftpd/ftpusers文件中到场虚构顾客名,并无法禁止使用对应的种类帐号

 

 

###########################入手实例##############################

[root@server pub]# cd /etc/vsftpd/

[root@server vsftpd]# vim vusers.list

mike

123

john

456

[root@server vsftpd]# db_load -T -t hash -f vusers.list vusers.db

[root@server vsftpd]# file vusers.db

vusers.db: Berkeley DB (Hash, version 9, native byte-order)

[root@server vsftpd]# chmod 600 ./vusers.*

[root@server vsftpd]# useradd -d /var/ftproot -s /sbin/nologin
virtual             #-d 钦命客商的家目录

[root@server vsftpd]# chmod 755 /var/ftproot/

[root@server vsftpd]# vi /etc/pam.d/vsftpd.vu

auth required pam_userdb.so db=/etc/vsftpd/vusers

account required pam_userdb.so db=/etc/vsftpd/vusers

[root@server vsftpd]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

guest_enable=YES

guest_username=virtual

pam_service_name=vsftpd.vu

测试:

[root@server src]# yum install -y lftp

[root@server src]# lftp mike@127.0.0.1       

Password:

lftp mike@127.0.0.1:~> mkdir test

mkdir ok, `test’ created

lftp mike@127.0.0.1:/> quit

[root@server src]# cd /var/ftproot/

[root@server ftproot]# ll

total 4

drwx—— 2 virtual virtual 4096 May 16 17:56 test    
#test目录归于虚构客商virtual 

 

####为不一致设想客户安装分歧的权力#############

[root@server ftproot]# cd /etc/vsftpd/

[root@server vsftpd]# mkdir vusers_home

[root@server vsftpd]# cd vusers_home/

[root@server vusers_home]# vi mike

anon_mkdir_write_enable=YES

anon_upload_enable=YES

测试:

[root@server vusers_home]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK 
]

Starting vsftpd for vsftpd:                                [  OK 
]

[root@server vusers_home]# lftp mike@127.0.0.1       

Password:

lftp mike@127.0.0.1:~> mkdir test1

mkdir ok, `test1′ created           

lftp mike@127.0.0.1:/> quit

[root@server vusers_home]# ll

total 4

-rw-r–r– 1 root root 51 May 16 18:24 mike

[root@server vusers_home]# ll /var/ftproot/

.bash_logout   .bash_profile  .bashrc        test/          test1/

[root@server vusers_home]# ll /var/ftproot/

total 8

drwx—— 2 virtual virtual 4096 May 16 17:56 test

drwx—— 2 virtual virtual 4096 May 16 18:24 test1

[root@server vusers_home]# lftp john@127.0.0.1       

Password:

lftp john@127.0.0.1:~> ls         

ls: Login failed: 530 Login incorrect.         

lftp john@127.0.0.1:~> mkdir test3

mkdir: Login failed: 530 Login incorrect.           

lftp john@127.0.0.1:~> quit

[root@server vusers_home]# cp /etc/vsftpd/

ftpusers                vsftpd_conf_migrate.sh  vusers.list

user_list               vusers.db               

vsftpd.conf             vusers_home/           

[root@server vusers_home]# cp /etc/vsftpd/vusers_home/mike
/etc/vsftpd/vusers_home/john

[root@server vusers_home]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK 
]

Starting vsftpd for vsftpd:                                [  OK 
]

[root@server vusers_home]# lftp john@127.0.0.1

Password:

lftp john@127.0.0.1:~> mkdir test4

mkdir ok, `test4′ created

lftp john@127.0.0.1:/> quit

[root@server vusers_home]# ll /var/ftproot/

total 12

drwx—— 2 virtual virtual 4096 May 16 17:56 test

drwx—— 2 virtual virtual 4096 May 16 18:24 test1

drwx—— 2 virtual virtual 4096 May 16 18:29 test4

 

持续测验:

[root@server vusers_home]# vi /etc/vsftpd/vusers_home/john

anon_mkdir_write_enable=YES

anon_upload_enable=YES

write_enable=YES

virtual_use_local_privs=YES      
当有write_enable=YES;virtual_use_local_privs=YES
时,虚构客户具备写权限(上传,下载,删除,重命名)

[root@server vusers_home]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK 
]

Starting vsftpd for vsftpd:                                [  OK 
]

[root@server vusers_home]# !l

lftp john@127.0.0.1

Password:

lftp john@127.0.0.1:~> ls         

drwx——    2 501      501          4096 May 16 09:56 test

drwx——    2 501      501          4096 May 16 10:24 test1

drwx——    2 501      501          4096 May 16 10:29 test4

drwx——    2 501      501          4096 May 16 10:34 test5

lftp john@127.0.0.1:~> rmdir test5        #删除

rmdir ok, `test5′ removed

lftp john@127.0.0.1:~> ls

drwx——    2 501      501          4096 May 16 09:56 test

drwx——    2 501      501          4096 May 16 10:24 test1

drwx——    2 501      501          4096 May 16 10:29 test4

lftp john@127.0.0.1:~> cd test

test/  test1/  test4/

lftp john@127.0.0.1:~> cd test4

lftp john@127.0.0.1:~/test4> put /etc/fstab    #上传

855 bytes transferred   

lftp john@127.0.0.1:~/test4> ls

-rw-r–r–    1 501      501           855 May 16 10:43 fstab

lftp john@127.0.0.1:~/test4> get fstab -o /tmp/    #下载

855 bytes transferred

lftp john@127.0.0.1:~/test4> mv fstab fftab     #重命名

rename successful

lftp john@127.0.0.1:~/test4> ls

-rw-r–r–    1 501      501           855 May 16 10:46 fftab 

 

 

 

############备注######################

备注:virtual_use_local_privs参数
当virtual_use_local_privs=YES时,设想客商和本地客商有相近的权能;
当virtual_use_local_privs=NO时,设想客商和无名氏顾客有生龙活虎致的权柄,私下认可是NO。

当virtual_use_local_privs=YES,write_enable=YES时,虚拟客商全部写权限(上传、下载、删除、重命名)。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,设想客户无法浏览目录,只可以上传文件,无任何权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚构客商只好下载文件,无任何权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,设想顾客只好上传和下载文件,无任何权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,设想客商只好下载文件和创造文件夹,无任何权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_other_write_enable=YES时,虚构顾客只可以下载、删除和重命名文件,无任何权限。

 

 

 

 

 #######################################用mysql+pam+vsftpd###############################

 

意气风发、安装所要求程序

 

1、安装mysql和pam_mysql

 

# yum -y install  mysql-server mysql-devel pam_mysql

注意:pam_mysql由epel源提供。(yum  install -y epel-release)

二、成立设想客户账号

 

1.预备数据库及连锁表

 

第大器晚成请确定保证mysql服务业已何足为奇运转。而后,按需求树立存款和储蓄虚拟顾客的数据库就能够,这里将其创设为vsftpd数据库。

 

mysql> create database vsftpd;

 

mysql> grant select on vsftpd.* to vsftpd@localhost identified by
‘redhat’;

mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by
‘redhat’;

mysql> flush privileges;

 

mysql> use vsftpd;

mysql> create table users (

 id int AUTO_INCREMENT NOT NULL,

 name char(20) binary NOT NULL,

password char(48) binary NOT NULL,

 primary key(id)

 );

 

2、加多测量检验的杜撰客户

 

依据必要增加所急需的顾客,须求证实的是,这里将其密码为了安全起见应该接收PASSWO奥迪Q5D函数加密后存款和储蓄。

 

mysql> insert into users(name,password)
values(‘fush1’,password(‘asdfg’));

mysql> insert into users(name,password)
values(‘fush2’,password(‘asdfg’));

三、配置vsftpd

 

1.确立pam认证所需文件

 

#vi /etc/pam.d/vsftpd.mysql

拉长如下两行

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=redhat
host=localhost db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd
passwd=redhat host=localhost db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2

 

##请检查
ll 
/lib64/security/pam_mysql.so  
该公文是或不是存在,一纸空文查看pam_mysql 是不是安装成功!**

 

 

只顾:由于mysql的设置方式各异,pam_mysql.so基于unix
sock连接mysql服务器时恐怕会出标题,那时,建议授权三个可长途连接的mysql并访谈vsftpd数据库的客户。

 

2.改造vsftpd的配备文件,使其适应mysql认证

 

树立虚构顾客映射的种类客商及相应的目录

# useradd -s /sbin/nologin -d /var/ftproot virtual      #virtual
为设想客商映射的种类客户

# chmod go+rx /var/ftproot

请确定保障/etc/vsftpd.conf中曾经启用了以下选项

[root@server vusers_home]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

事后增加

guest_enable=YES

guest_username=virtual     # virtual
为虚构顾客映射的系统顾客,useradd -s /sbin/nologin -d /var/ftproot
virtual  中所创设的

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

四、启动vsftpd服务

 

# service vsftpd start

# chkconfig vsftpd on

 

查阅端口开启状态

 

# netstat -tnlp |grep :21

tcp        0      0 0.0.0.0:21              0.0.0.0:*             
 LISTEN      23286/vsftpd

测试:

 oot@server ~]# lftp fush1@127.0.0.1

Password:

lftp fush1@127.0.0.1:~> ls     

drwx——    2 501      501          4096 May 16 10:47 test

drwx——    2 501      501          4096 May 16 10:24 test1

drwx——    2 501      501          4096 May 16 10:46 test4

lftp fush1@127.0.0.1:/> mkdir test3

mkdir: Access failed: 550 Permission denied. (test3)  
 #因为全局的anon_mkdir_write_enable=YES权限注释掉了,所以并未有权限

lftp fush1@127.0.0.1:/> quit 

五、配置设想客商具有不一样的会见权限

# vim vsftpd.conf

加上如下选项

user_config_dir=/etc/vsftpd/vusers_home

 

[root@server vusers_home]#touch fush1

[root@server vusers_home]#vim fush1

write_enable=YES

virtual_use_local_privs=YES          
 那时候fush1将全数富有权限(下载,上传,重命名,成立,删除)

 

测量检验如下:

[root@server vusers_home]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK 
]

Starting vsftpd for vsftpd:                                [  OK 
]

[root@server vusers_home]# lftp fush1@127.0.0.1

Password:

lftp fush1@127.0.0.1:~> ls     

drwx——    2 501      501          4096 May 16 10:47 test

drwx——    2 501      501          4096 May 16 10:24 test1

drwx——    2 501      501          4096 May 16 10:46 test5

lftp fush1@127.0.0.1:~> mkdir test4

mkdir ok, `test4′ created

lftp fush1@127.0.0.1:~> cd test4

lftp fush1@127.0.0.1:~/test4> put /etc/fstab

855 bytes transferred                             

lftp fush1@127.0.0.1:~/test4> ls

-rw-r–r–    1 501      501           855 May 18 06:29 fstab

lftp fush1@127.0.0.1:~/test4> get /etc/fstab -o /usr/local/src/

855 bytes transferred

lftp fush1@127.0.0.1:~/test4> cd ..

lftp fush1@127.0.0.1:~> ls

drwx——    2 501      501          4096 May 16 10:47 test

drwx——    2 501      501          4096 May 16 10:24 test1

drwxr-xr-x    2 501      501          4096 May 18 06:29 test4

drwx——    2 501      501          4096 May 16 10:46 test5

lftp fush1@127.0.0.1:~> mv test5 test2

rename successful

lftp fush1@127.0.0.1:~> ls

drwx——    2 501      501          4096 May 16 10:47 test

drwx——    2 501      501          4096 May 16 10:24 test1

drwx——    2 501      501          4096 May 16 10:46 test2

drwxr-xr-x    2 501      501          4096 May 18 06:29 test4

lftp fush1@127.0.0.1:~> rm -rf test2

rm ok, 2 files removed

lftp fush1@127.0.0.1:~> ls

drwx——    2 501      501          4096 May 16 10:47 test

drwx——    2 501      501          4096 May 16 10:24 test1

drwxr-xr-x    2 501      501          4096 May 18 06:29 test4