ftp: 文件传输协议
软件包: vsftpd
ftp端口: 控制端口 21/tcp 数据端口 20/tcp(主动模式)
配置文件: /etc/vsftpd/vsftpd.confman vsftpd.conf man smb.conf
服务端配置:
[root@station230 ~]# yum -y install vsftpd
[root@station230 ~]# service vsftpd restart
[root@station5 ~]# grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@station5 ~]# grep alice /etc/passwd
alice:x:2008:2012::/home/alice:/bin/bash
小总:vsftpd未做任何配置:
1. 匿名用户仅能从被锁定的根目录下载文件 /var/ftp
2. 系统用户可以上传文件到他有写权限的任何目录,HOME目录未被锁定
vsftpd支持的用户类型:
匿名用户:ftp
系统用户: alice,jack
虚拟用户: 不存在于系统账号数据中,安全,例如mysql提供的用户账号
从客户端测试:
[root@station5 ~]# yum -y install ftp lftp
[root@station5 ~]# ftp 192.168.2.115//输入用户名和口令
[root@station5 ~]# lftp 192.168.2.115//匿名用户
[root@station5 ~]# lftp alice@192.168.2.115//指定用户
[root@station80 ~]# wget ftp://192.168.2.80/rhel5.repo
[root@station80 ~]# wget ftp://192.168.2.80/rhel5.repo -O /etc/yum.repo.d/rhel5.repo
[root@station80 ~]# cat download.txt
ftp://192.168.2.80/rhel5.repo
ftp://192.168.2.80/raid.png
[root@station80 ~]# wget -i download.txt
========基本配置、访问控制========
注意:空格,指令错误,指令重复
[root@station230 ~]# egrep -v '^#|^$' /etc/vsftpd/vsftpd.conf
[root@station230 ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}备份配置文件
anonymous_enable=YES//是否允许匿名用户登录
local_enable=YES//是否允许本地用户登录
write_enable=YES//是否允许写(全局)
local_umask=022//控制本地用户上传文件的默认权限,umask表示要减掉的权限
anon_umask=077//控制匿名用户上传文件的默认权限
chroot: 锁定用户HOME,针对系统用户
方法一:部分限制
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
方法二:全部限制
chroot_local_user=YES
anon_max_rate=500000//匿名用户限速
local_max_rate=80000//本地用户限速
max_clients=500//ftp最大连接数
max_per_ip=2//单个IP最大连接数,线程数
local_root=/ftproot//指定本地用户访问的root目录
anon_root=/anonroot//指定匿名用户访问的root目录
案例1:
1. 为各个部门建立ftp访问用户,包括部门的管理员
[root@station230 ~]# mkdir -p /ftproot/{hr/{hr01,hr02},it,sale}
[root@station230 ~]# chmod -R 777 /ftproot/
[root@station230 ~]# useradd admin -s /sbin/nologin
[root@station230 ~]# useradd hr_admin -s /sbin/nologin
[root@station230 ~]# useradd hr01_admin -s /sbin/nologin
[root@station230 ~]# useradd hr02_admin -s /sbin/nologin
[root@station230 ~]# useradd it_admin -s /sbin/nologin
[root@station230 ~]# useradd sale_admin -s /sbin/nologin
[root@station230 ~]# passwd admin
==================================================
[root@station230 ~]# for i in admin hr_admin hr01_admin hr02_admin it_admin sale_admin
> do
> useradd $i -s /sbin/nologin
> echo 1 |passwd $i --stdin
> done
=========================================================================
2. 配置FTP服务器
注:使用匿名访问公司公共的资源
===主配置文件
[root@station230 ~]# vim /etc/vsftpd/vsftpd.conf
write_enable=NO
chroot_local_user=YES
local_max_rate=100000
max_per_ip=2
user_config_dir=/etc/vsftpd/vsftpd_user_conf指定用户私有配置文件存放的目录
[root@station230 ~]# service vsftpd restart
===私有配置文件
[root@station230 ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@station230 ~]# cd /etc/vsftpd/vsftpd_user_conf/
[root@station230 vsftpd_user_conf]# cat admin
local_root=/ftproot
write_enable=YES
local_max_rate=0
max_per_ip=0
===============vsftpd启动排错===================
尝试启动
[root@station11 ~]# service vsftpd restart
关闭 vsftpd: [失败]
为 vsftpd 启动 vsftpd: [失败]
查看该服务的端21/tcp是否被占用
[root@station11 ~]# netstat -tnlp |grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3514/xinetd
tcp 0 0 0.0.0.0:2105 0.0.0.0:* LISTEN 3514/xinetd
使用lsof查看21/tcp被哪个进程占用
[root@station11 ~]# lsof -i TCP:21
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 3514 root 17u IPv4 9902 0t0 TCP *:ftp (LISTEN)
[root@station11 ~]# ls /etc/xinetd.d/
chargen-dgram daytime-stream echo-stream klogin rsync time-stream
chargen-stream discard-dgram eklogin krb5-telnet tcpmux-server
cvs discard-stream ekrb5-telnet kshell tftp
daytime-dgram echo-dgram gssftp rmcp time-dgram
[root@station11 ~]#
[root@station11 ~]# cd /etc/xinetd.d/
[root@station11 xinetd.d]# grep 21 *
[root@station11 xinetd.d]# grep ftp *
gssftp:service ftp
gssftp: server = /usr/kerberos/sbin/ftpd
rsync:# description: The rsync server is a good addition to an ftp server, as it \
tftp:# description: The tftp server serves files using the trivial file transfer \
tftp:# protocol. The tftp protocol is often used to boot diskless \
tftp:service tftp
tftp: server = /usr/sbin/in.tftpd
tftp: server_args = -s /tftpboot
[root@station11 xinetd.d]# cat gssftp
# default: off
# description: The kerberized FTP server accepts FTP connections \
# that can be authenticated with Kerberos 5.
service ftp
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/ftpd
server_args = -l -a
log_on_failure += USERID
}
[root@station11 xinetd.d]# chkconfig gssftp off
[root@station11 xinetd.d]# service xinetd restart
停止 xinetd: [确定]
启动 xinetd: [确定]
[root@station11 xinetd.d]# lsof -i TCP:21
[root@station11 xinetd.d]# netstat -tnlp |grep :21
tcp 0 0 0.0.0.0:2105 0.0.0.0:* LISTEN 4717/xinetd
[root@station11 xinetd.d]# service vsftpd restart
关闭 vsftpd: [失败]
为 vsftpd 启动 vsftpd: [确定]
[root@station80 ~]# netstat -tnlp |grep :80检查某个端口是否被占用