ftp服务的搭建:
[root@tiandong63 ~]# yum install vsftpd -y 安装
[root@tiandong63 ~]# chkconfig vsftpd on 开机自启动
[root@tiandong63 ~]# /etc/init.d/vsftpd start 启动
Starting vsftpd for vsftpd: [ OK ]
[root@tiandong63 ~]# netstat -tlunp|grep vsftpd 查看开放的端口
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1606/vsftpd
[root@tiandong63 ~]# ll -d /var/ftp/pub/ 默认共享的文件
drwxr-xr-x 2 root root 4096 Mar 22 2017 /var/ftp/pub/
[root@tiandong65 ~]# yum install lftp -t 在Linux客户端上查看分享的文件
[root@tiandong65 ~]# lftp 192.168.1.63
lftp 192.168.1.63:~> ls
drwxr-xr-x 2 0 0 4096 Mar 22 2017 pub
在Windows系统上看分享的目录:
例子:公司技术部准备搭建一台FTP服务器,允许所有员工上传和下载文件,并允许创建用户自己的目录
此时在共享的目录下建立新的目录:(权限拒绝)
修改配置文件:
192.168.1.63:
/etc/vsftpd/vsftpd.cong
12 anonymous_enable=YES 匿名用户传输
27 anon_upload_enable=YES 匿名用户上传
31 anon_mkdir_write_enable=YES 匿名用户创建文件
此时在Windows上面穿件文件
依然是权限拒绝
权限拒绝有两方面一个是服务本身权限拒绝,一个是目录权限不足,此时服务本身有读写权限,所以看一下目录权限
[root@tiandong63 vsftpd]# cat /etc/passwd|grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
ftp是ftp用户,查看一下共享目录权限。
[root@tiandong63 vsftpd]# ll -d /var/ftp/pub/
drwxr-xr-x 2 root root 4096 Mar 22 2017 /var/ftp/pub/
修改一下共享目录权限
[root@tiandong63 vsftpd]# chown -R ftp.ftp /var/ftp/pub
[root@tiandong63 vsftpd]# ll -d /var/ftp/pub/
drwxr-xr-x 2 ftp ftp 4096 Mar 22 2017 /var/ftp/pub/
[root@tiandong63 vsftpd]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
此时在来创建:(此时可以创建目录了,但是不能给文件名称)
此时在来修改配置文件:
配置文件增加一行,重启服务在来看
32 anon_other_write_enable=yes 配置文件加了这行后匿名用户权限特别大,因此不建议加
[root@tiandong63 vsftpd]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
此时也同步更新的到了服务器端
例2:
公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文
件、创建目录、更新网页等等。公司现有两个部门负责维护任务,他们分别适用team1 和team2
帐号进行管理。先要求仅允许team1 和team2 帐号登录FTP 服务器,但不能登录本地系统,并将
这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。
ftp 和www web服务器相结合。
www web服务器根目录: /var/www/html
只允许:team1和team2两用户 可以上传。 vsftp禁止匿名。
分析:
将FTP 和WEB 服务器做在一起是企业经常采用的方法,这样方便实现对网站的维护,为了增强安
全性,首先需要使用仅允许本地用户访问,并禁止匿名用户登录。其次使用chroot 功能将team1
和team2 锁定在/var/www/html 目录下。如果需要删除文件则还需要注意本地权限
(1)建立维护网站内容的ftp 帐号team1 和team2 并禁止本地登录,然后设置其密码
[root@tiandong63 ~]# useradd -s /sbin/nologin team1
[root@tiandong63 ~]# useradd -s /sbin/nologin team2
[root@tiandong63 ~]# echo 123456 |passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[root@tiandong63 ~]# echo 123456 |passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.
(2)修改ftp主配置文件
[root@tiandong63 ~]# vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=NO #禁止匿名用户登录
15 local_enable=YES #允许本地用户登录
97 local_root=/var/www/html #设置本地用户的根目录为/var/www/html
98 chroot_list_enable=YES #激活chroot功能
100 chroot_list_file=/etc/vsftpd/chroot_list #设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
[root@tiandong63 vsftpd]# /etc/init.d/vsftpd restart
(3)建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帐号
[root@tiandong63 ~]# touch /etc/vsftpd/chroot_list
[root@tiandong63 ~]# vim /etc/vsftpd/chroot_list
1 team1
2 team2
[root@tiandong63 ~]# mkdir -p /var/www/html
[root@tiandong63 ~]# chmod o+w -R /var/www/html
在共享目录下面写入测试数据
[root@tiandong63 ~]# mkdir /var/www/html/webdata
此时在Windows上面查看:
在Linux上查看:
[root@tiandong65 ~]# lftp 192.168.1.63 -u team1,123456
lftp team1@192.168.1.63:~> ls
drwxr-xr-x 2 0 0 4096 Mar 22 11:08 webdata
lftp team1@192.168.1.63:/>
例3: ftp虚拟帐号:
企业环境
公司为了宣传最新的产品信息,计划搭建FTP 服务器,为客户提供相关文档的下载。对所有互
联网开放共享目录,允许下载产品信息,禁止上传。公司的合作单位能够使用FTP 服务器进行上
传和下载,但不可以删除数据。需要保证服务器的稳定性并做优化。
创建ftp虚拟帐号。允许客户使用ftp帐号下载文件。 但是,你们自己的合作伙伴帐号:vip可以上传一内部文件。
需求分析
根据企业的需求,对于不同用户进行不同的权限限制,FTP 服务器需要实现用户的审核。需考虑
到服务器的安全性,所以关闭实体用户登录,使用虚拟帐号验证机制,并对不同虚拟帐号设置不
同的权限。为了保证服务器的性能,还需要根据用户的等级,限制客户端的连接数及下载速度。
1、创建用户数据库
(1)创建用户文本文件
先建立用户文本文件vsftpd_virtualuser.txt,添加两个虚拟帐号,非会员帐号ftp及会员帐号
[root@tiandong63 ~]# vim /etc/vsftpd/vsftpd_virtualuser.txt
nonevip
123456
vip
123456
[root@tiandong63 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db
[root@tiandong63 ~]# rm -rf /etc/vsftpd/vsftpd_virtualuser.txt
[root@tiandong63 ~]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
[root@tiandong63 ~]# vim /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
[root@tiandong63 ~]# useradd -d /var/ftp/share ftpuser
[root@tiandong63 ~]# useradd -d /var/ftp/vip ftpvip
[root@tiandong63 ~]# chmod -R 500 /var/ftp/share/
[root@tiandong63 ~]# chmod -R 700 /var/ftp/vip/
[root@tiandong63 ~]# vim /etc/vsftpd/vsftpd.conf
96 chroot_local_user=YES
117 pam_service_name=vsftpd
118 user_config_dir=/etc/vsftpd/vuserconfig
119 max_clients=300
120 max_per_ip=10
121 userlist_enable=YES
122 tcp_wrappers=YES
[root@tiandong63 ~]#
[root@tiandong63 ~]# grep vuserconfig /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vuserconfig
[root@tiandong63 ~]# mkdir /etc/vsftpd/vuserconfig
[root@tiandong63 ~]# touch /etc/vsftpd/vuserconfig/nonevip
[root@tiandong63 ~]# touch /etc/vsftpd/vuserconfig/vip
[root@tiandong63 ~]# vim /etc/vsftpd/vuserconfig/nonevip
1 guest_enable=yes
2 guest_username=ftpuser
3 anon_world_readable_only=no
4 anon_max_rate=50000
[root@tiandong63 ~]# vim /etc/vsftpd/vuserconfig/vip
1 guest_enable=yes
2 guest_username=ftpvip
3 anon_world_readable_only=no
4 write_enable=yes
5 anon_mkdir_write_enable=yes
6 anon_upload_enable=yes
7 anon_max_rate=100000
[root@tiandong63 ~]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
[root@tiandong63 ~]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@tiandong63 ~]# cd /var/ftp/share/
[root@tiandong63 share]# ll -h
total 60M
-rw-r--r-- 1 root root 60M Jan 11 2014 GNS3-0.8.6-all-in-one.exe
[root@tiandong63 share]# cp -r /boot/grub/ ./
[root@tiandong63 share]# ll -h
total 60M
-rw-r--r-- 1 root root 60M Jan 11 2014 GNS3-0.8.6-all-in-one.exe
drwxr-xr-x 2 root root 4.0K Mar 22 19:38 grub
[root@tiandong63 ftp]# cd vip/
[root@tiandong63 ftp]# cd vip/
[root@tiandong63 vip]# pwd
/var/ftp/vip
[root@tiandong63 vip]# ll
total 0
[root@tiandong63 vip]# cp -r /boot/grub/ ./
[root@tiandong63 vip]# ll -h
total 60M
-rw-r--r-- 1 root root 60M Jan 11 2014 GNS3-0.8.6-all-in-one.exe
drwxr-xr-x 2 root root 4.0K Mar 22 19:40 grub
[root@tiandong63 ~]# cd /etc/vsftpd/
[root@tiandong63 vsftpd]# ll
total 32
-rw------- 1 root root 125 May 11 2016 ftpusers
-rw------- 1 root root 361 May 11 2016 user_list
-rw------- 1 root root 4668 Mar 19 21:28 vsftpd.conf
-rwxr--r-- 1 root root 338 May 11 2016 vsftpd_conf_migrate.sh
-rw------- 1 root root 12288 Mar 19 20:57 vsftpd_virtualuser.db
drwxr-xr-x 2 root root 4096 Mar 19 21:13 vuserconfig
[root@tiandong63 vsftpd]# cd vuserconfig/
[root@tiandong63 vuserconfig]# ll
total 8
-rw-r--r-- 1 root root 88 Mar 22 19:26 nonevip
-rw-r--r-- 1 root root 156 Mar 22 19:29 vip