多语言展示
当前在线:1241今日阅读:154今日分享:43

vsftp服务部署

简单明了部署各种场合ftp服务器
工具/原料
1

centos6.5

2

vsftpd

ftp服务基本设置
1

安装vsftp软件包yum -y  install vsftpdchkconfig vsftpd on

2

系统安全设置2.1 vi /etc/sysconfig/iptables(如果防火墙关闭,省略此步)-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT2.2 关闭selinux

3

重启服务service iptables reloadservice vsftpd reload++++++++++++++++++++

4

几点总结✔建议使用主动模式✔安装完vsftpd,会创建一个账户,ftp账户✔ftp账户家目录在 / var/ftp目录✔ftp账户家目录权限是755

基于匿名用户认证
1

创建上传目录cd /var/ftpmkdir upoadchown ftp. uploadchmod 755 upload

2

修改配置文件vsftpd.conf(确保如下字段行是取消注释的)anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES(匿名账户可以有删除的权限)

基于系统账户认证
1

编辑配置文件vsftpd.conf#以下行注释anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YES#以下行取消注释<禁锢用户在自己家目录>chroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list

2

增加虚拟账号useradd -d /data/ftpdata -s /sbin/nologin dbftppasswd dbftp请确认/data/ftpdata所有者所有组为dbftp

3

编辑chroot_listvi /etc/vsftp/chroot_list默认此文件不存在内容为刚刚创建的虚拟用户名,每个用户占一行dbftp

4

只允许特定账户登录系统添加一个用户也默认有ftp的登陆权限编辑配置文件vsftpd.conf文件最后添加两行userlist_deny=NOuserlist_file=/etc/vsftpd/user_list然后修改/etc/vsftpd/user_list文件,把允许登录的账户添加进去

基于虚拟账户统一认证
1

vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账户分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式

2

安装依赖包yum install  db4 db4-utils -y

3

创建虚拟用户账号和密码(奇数行为用户名,偶数行为用户密码)vim /etc/vsftpd/virtual.users user1123user2456

4

生成虚拟用户认证的db文件db_load -T -t hash -f /etc/vsftpd/virtual.users /etc/vsftpd/vsftpd.login.db chmod 600 /etc/vsftpd/vsftpd.login.db

5

配置PAM信息,在/etc/pam.d/创建一个文件,命名为vsftpd.pam(可自定义)vim /etc/pam.d/vsftpd.pamauth         required        pam_userdb.so   db=/etc/vsftpd/vsftpd.login account   required        pam_userdb.so   db=/etc/vsftpd/vsftpd.login

6

配置vsftpd.conf,如下anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022anon_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to blah FTP service.chroot_local_user=YESlisten=YESuserlist_enable=YESpam_service_name=vsftpd.pamguest_username=ftp guest_enable=YESuser_sub_token=$USERlocal_root=/var/ftp/virtual/$USERtcp_wrappers=YES

7

创建相应的虚拟用户目录,用于虚拟用户访问ftp服务所用到的默认目录mkdir -p /var/ftp/virtual/{user1,user2} chown ftp.ftp /var/ftp/virtual/{user1,user2} touch /var/ftp/virtual/user1/user1.txttouch /var/ftp/virtual/user2/user2.txt

8

经过上面配置,实现了如下功能✔可以创建很多虚拟账户且仅能访问ftp上各自虚拟家目录✔所有虚拟账户都可以上传、删除、创建、下载、重命名家目录里的文件或目录缺点是:所有虚拟账户权限都是统一的,现实里需求总是多变的,假如我想不同虚拟账户有不同的权限如何实现,见下文

基于虚拟账户权限认证
1

基于上面我们创建两个用户user1和user2。我想user1具有全部权限,而user2尽具有上传权限。我们从基于虚拟账户统一认证第6步开始修改,1-5步不变。

2

配置vsftpd.conf,如下anonymous_enable=NOlocal_enable=YESlocal_umask=022anon_umask=022xferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to blah FTP service.chroot_local_user=YESlisten=YESuserlist_enable=YESpam_service_name=vsftpd.pamguest_username=ftp guest_enable=YESuser_config_dir=/etc/vsftpd/vsftpd_user_conftcp_wrappers=YES

3

mkdir -p /etc/vsftpd/vsftpd_user_conf在conf里创建 刚才用户名的配置文件 配置文件名要与用户名一样user1要有所有全部权限vi user1local_root=/opt/vsftp/user1write_enable=yesdownload_enable=yesanon_upload_enable=yesanon_mkdir_write_enable=yesanon_other_write_enable=yesanon_world_readable_only=noidle_session_timeout=600data_connection_timeout=120max_clients=2max_per_ip=3local_max_rate=512000user2只有上传和下载权限local_root=/opt/vsftp/user2write_enable=YESdownload_enable=yesanon_upload_enable=yesanon_other_write_enable=noanon_mkdir_write_enable=noanon_world_readable_only=no

4

更改虚拟用户目录权限为配置文件指定映射账户mkdir -p /opt/vsftp/{user1,user2}cd /optchown -R ftp. vsftp

5

经过上面配置,实现了如下功能✔不同用户具有不同的权限✔几个重要参数总结write_enable=YES (写权限)anon_mkdir_write_enable=YES (新建目录权限)anon_upload_enable=YES(上传权限)anon_other_write_enable=YES(删除/重命名的权限)

注意事项

匿名上传的文件是禁止删除的

推荐信息