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 [email protected]//指定用戶
[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檢查某個端口是否被佔用