linux ftp

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檢查某個端口是否被佔用







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章