Linux Ftp vsftpd
Linux FTP操作
1.运行rpm -qa | grep vsftpd查看ftp是否已经安装
2.如果未安装,使用yum -y install vsftpd 安装(ubuntu 下使用apt-get install vsftpd)
3.运行chkconfig --list vsftpd,检查ftp是否开机启动
显示:vsftpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
如果未开机启动可以运行chkconfig --level 35 vsftpd on设置ftp开机启动。
0~6代表等级,等级指定该系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
chkconfig --list可以查看所有服务
4.运行service vsftpd start启动FTP
运行service vsftpd stop停止FTP
运行service vsftpd restart重启FTP
运行service vsftpd status查看FTP状态
5.运行vi /etc/vsftpd/vsftpd.conf设置FTP
如: anonymous_enable=NO
ocal_root=/home/ftp
看鸟哥私房菜服务器架设篇第三版
1.查看日志
/var/log/
2.限制用户活动目录
change root,简称chroot
3.FTP使用到的端口
命令通道:21,数据传输:20
文件
1./etc/vsftpd/vsftpd.conf
配置FTP
man vsftpd.conf/man 5 vsftpd.conf
查看详细配置
2./etc/pam.d/vsftpd
使用PAM模块相关配置
3./etc/vsftpd/ftpusers
设置无法登录FTP的用户,/etc/pam.d/vsftpd中设定的就是这个文件
4./etc/vsftpd/user_list
设置用户是否可以访问FTP,可以访问或不可以访问由userlist_deny={YES/NO}设定
userlist_enable设置开关
5./etc/vsftpd/chroot_list
文件默认不存在。设置用户chroot在某目录下。
通过chroot_list_enable/chroot_list_file两个参数设置
6./usr/sbin/vsftpd
vsftpd的执行文件
7.anon_root=/home/ftp
修改匿名用户登录目录,默认/var/ftp
8.ocal_root=/home/ftp
修改本地用户登录目录,默认/root
服务器环境相关设置
1.connect_from_port_20=YES(NO)
ftp数据传输端口
Default: NO
2.listen_port=21
ftp命令通道端口
Default: 21
3.dirmessage_enable=YES(NO)
显示用户进入的目录要注意的内容,可以通过message_file修改
Default: NO
4.message_file=.message
当dirmessage_enable=YES时可以让vsftpd显示该档案讯息
Default: .message
5.listen=YES(NO)
设定为YES表示vsftpd以standalone的方式启动
Default: NO
6.pasv_enable=YES(NO)
是否支持数据流的被动式联机模式
Default: YES
7.use_localtime=YES(NO)
是否使用本地时间
Default: NO
8.write_enable=YES(NO)
是否允许用户上传数据
Default: NO
9.connect_timeout=60
单位是秒,主动式联机模式下,发出连接信号60秒内没有响应则断线
Default: 60
10.accept_timeout=60
被动式联机模式下,服务器启用端口等待60无回应则断线
Default: 60
11.data_connection_timeout=300
成功建立连接,300秒内容无法顺利完成数据传送,客户端联机会被vsftpd强制剔除
Default: 300
12.idle_session_timeout=300
300秒内无命令动作,强制脱机
Default: 300
13.max_clients=0
如果vsftpd以standalone方式启动,设定同一时间内的最大连接数
Default: 0 (unlimited)
14.max_per_ip=0
如果vsftpd以standalone方式启动,设定同一IP在同一时间内的最大连接数
Default: 0 (unlimited)
15.pasv_min_port=0/pasv_max_port=0
被动模式下,如想使用65400到65410这11个端口,设置pasv_min_port=65400/pasv_max_port=65410
Default: 0 (use any port)
16.ftpd_banner=说明文字
连接FTP时,在客户端软件上显示的说明文字。可以使用banner_file设定值来取代
Default: (none - default vsftpd banner is displayed)
17.banner_file=/path/file
同16
本地用户相关设置
1.guest_enable=YES(NO)
值为YES时,任何用户都被认为是guest
Default: NO
2.guest_username=ftp
guest_enable=YES时生效,指定访客身份
Default: ftp
3.local_enable=YES(NO)
值为YES时,/etc/passwd内的账号才能以本地用户的方式登录FTP服务器
Default: NO
4.local_max_rate=0
本地用户的传输速度限制,单位为bytes/second,0为不限制
Default: 0 (unlimited)
5.chroot_local_user=YES(NO)
是否将用户限制在特定目录之内
Default: NO
6.chroot_list_enable=YES(NO)
是否启用chroot写入列表的功能
Default: NO
7.chroot_list_file=/etc/vsftpd/chroot_list
如果chroot_list_enable=YES,此文件生效
Default: /etc/vsftpd.chroot_list
8.userlist_enable=YES(NO)
阻止用户登录
Default: NO
9.userlist_deny=YES(NO)
当userlist_enable=YES时才会生效,或值为YES,则当使用者账号被列入userlist_file时,无法登入FTP
Default: YES
10.userlist_file=/etc/vsftpd/user_list
阻止登录FTP的用户列表
Default: /etc/vsftpd/user_list
匿名用户相关设置
1.anonymous_enable=YES(NO)
是否允许匿名用户登入FTP,其他相关设置必须在此设置为YES时才会生效
Default: YES
2.anon_world_readable_only=YES(NO)
匿名用户只能下载可读
Default: YES
3.anon_other_write_enable=YES(NO)
是否允许匿名用户除了写入之外的权限。包括删除、修改服务器上的文件及文件名等。
Default: NO
4.anon_mkdir_write_enable=YES(NO)
匿名用户是否可以建立目录,如果为YES,anon_other_write_enable必须为YES
Default: NO
5.anon_upload_enable=YES(NO)
匿名用户是否可以上传数据,如果为YES,anon_other_write_enable必须为YES
Default: NO
6.deny_email_enable=YES(NO)
匿名用户使用Email登录时,可以设置某此Email无法登入,与banned_email_file一起使用
Default: NO
7.banned_email_file=/etc/vsftpd/banned_emails
配合6,输入email地址
Default: /etc/vsftpd/banned_emails
8.no_anon_password=YES(NO)
当设置为YES时,匿名用户将会略过Email检验
Default: NO
9.anon_max_rate=0
匿名用户的传输速度,单位bytes/second,0为不限制
Default: 0 (unlimited)
10.anon_umask=077
匿名用户上传的文件的权限,如果是077,上传文件的权限是-rw-------
Default: 077
系统安全相关设置
1.ascii_download_enable=YES(NO)
设置为YES,客户端优先使用ASCII格式下载文件
Default: NO
2.ascii_upload_enable=YES(NO)
设置为YES,客户端优先使用ASCII格式上传文件
Default: NO
3.one_process_model=YES(NO)
设置为YES,每个连接都会拥有一个Process
Default: NO
4.tcp_wrappers=YES(NO)
支持TCP Wrappers的防火墙机制,利用/etc/hosts.[allow|deny]作为基础防火墙
Default: NO
5.xferlog_enable=YES(NO)
设置为YES,会记录上传下载日志到xferlog_file设置的文件中
Default: NO (but the sample config file enables it)
6.xferlog_file=/var/log/xferlog
如果xferlog_enable为YES,记录上传下载日志
Default: /var/log/xferlog
7.xferlog_std_format=YES(NO)
是否设置为wu-ftp的登录格式
Default: NO
8.dual_log_enable=YES(NO)
除了/var/log/xferlog的wu-ftp格式登录日志,还可以设置具有vsftpd的独特登录日志格式
Default: NO
9.vsftpd_log_file=/var/log/vsftpd.log
具有vsftpd的独特登录日志格式
Default: /var/log/vsftpd.log
10.nopriv_user=nobody
vsftpd预设以nobody为服务执行者的权限
Default: nobody
11.pam_service_name=vsftpd
pam模块的名称,放置在/etc/pam.d/vsftpd中
Default: ftp
vsftpd默认值
1.anonymous_enable=YES
支持匿名者登入FTP
2.local_enable=YES
支持本地本地用户登入
3.write_enable=YES
允许用户上传数据
4.local_umask=022
建立新目录(755)和文件(644)的权限
5.#anon_upload_enable=YES
6.#anon_mkdir_write_enable=YES
7.dirmessage_enable=YES
若目录下有.message则会显示该文件的内容
8.xferlog_enable=YES
记录登录日志到xferlog_file参数中,默认为/var/log/xferlog
9.connect_from_port_20=YES
支持主动式联机功能
10.chown_uploads=YES
11.#chown_username=whoever
12.xferlog_file=/var/log/vsftpd.log
13.xferlog_std_format=YES
14.#idle_session_timeout=600
15.#data_connection_timeout=120
16.#nopriv_user=ftpsecure
17.#async_abor_enable=YES
18.ascii_upload_enable=YES
19.ascii_download_enable=YES
20.#ftpd_banner=Welcome to blah FTP service.
21.#deny_email_enable=YES
22.#banned_email_file=/etc/vsftpd/banned_emails
23.#chroot_local_user=YES
24.#chroot_list_enable=YES
25.#chroot_list_file=/etc/vsftpd/chroot_list
26.#ls_recurse_enable=YES
27.listen=YES
28.#listen_ipv6=YES
29.pam_service_name=vsftpd
30.userlist_enable=NO
31.#tcp_wrappers=YES
32.userlist_deny=NO
33.local_root=/var/ftp
34.use_localtime=yes
增加该设置
针对本地用户的设置
预期效果:
1.使用本地时间代替GMT时间
2.用户登录时显示欢迎信息
3.系统账号不可登入FTP(UID小于50的账号)
4.本地用户可以上传、下载、建立目录及修改文件。
5.用户新增目录、文件权限为002
6.其他主机设置保留默认值
具体设置
1.匿名用户无法登入
anonymous_enable=NO
2.本地用户设置
local_enable=YES
write_enable=YES
local_umask=002(可写入)
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list(必须存在)
3.与服务器环境相关设置
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
banner_file=/etc/vsftpd/welcome.txt(必须存在,须手动建立)
4.创建/etc/vsftpd/welcome.txt
5.建立限制系统账号登入的文件
有两个文件控制,一个是PAM模块管理,一个是vsftpd主动提供。
在默认情况下,PAM设置的文件为/etc/vsftpd/ftpusers;
vsftpd.conf的userlist_file设置的文件为/etc/vsftpd/user_list.
两个文件必须存在,且内容一样。打开/etc/passwd,将UID小于500的账号名称复制到这两个文件中。
ftp常用指令
1.help
指令说明
2.dir/ls
显示远程服务器的目录、文件列表
3.cd
切换目录
4.get filename
下载文件名为filename的文件
5.mget filename*
下载多个文件,可使用通配符*
6.put filename
上传文件名为filename的文件
7.delete file
删除file这个文件
8.mkdir dir
创建dir这个目录
9.lcd /home
切换到[本地端主机]的工作目录,会将文件下载到这个目录或从这个目录上传文件
10.passive
启动或关闭passive模式
11.binary
数据传输模式设置为binary格式
12.bye
退出FTP
13.ftp hostname [port]
连接ftp,默认为21
lftp:
1.lftp localhost
默认匿名登录
如果报错:500 OOPS: vsftpd: refusing to run with writable anonymous root
修改匿名用户文件夹权限:chmod 755 /var/ftp
2.lftp [-p port] [-u username[,password]] [host|IP]
完整登录指令,如果没有指定用户则以匿名用户登录
3.参数
-p:指定端口
-u:指定用户名及密码,密码可以不指定,后面会要求输入
-f:可以将指令写入脚本
-c:后面直接加上需要的指令
4.定时任务
4.1.新建文件autoftp.sh,内容如下:
open localhost
cd temp
lcd /mnt/hgfs/share/
mget -c -d abc*
bye
保存后,运行:lftp -f autoftp.sh即可。
4.2.修改autoftp.sh内容如下,注意引号:
lftp -c "open localhost
cd temp
lcd /mnt/hgfs/share/
mget -c -d abc*
bye"
保存后运行sh autoftp.sh,或修改文件权限直接运行
4.3.若为非匿名用户,可以将第一行修改为open -u username,password hostname
4.4.将脚本写入crontab中,就可以定时上传下载文件了
新增用户并设置
1.useradd -s /sbin/nologin -d /home/ftp/test test
新增用户test,并指定目录/home/ftp/test/
#限定用户不能telnet,只能FTP
usermod -s /sbin/nologin test
#用户恢复正常,/bin/bash是否存在,可通过cat /etc/shells查看
usermod -s /bin/bash test
#更改用户主目录
usermod -d /test
#删除用户
userdel -r test
2.passwd test
设置用户test的密码
3.修改/etc/vsftpd/vsftpd.conf,设置local_enable=YES,chroot_local_user=YES
限定了所有用户只能在FTP主目录及其子目录
下面限制test用户只能访问/home/ftp/test/目录
在vsftpd.conf中添加user_config_dir=/etc/vsftpd/userconfig
创建目录userconfig,并在其下添加相应用户的配置信息,文件名即用户名。
如 vim test
添加local_root=/home/ftp/test/则用户test只能访问该目录
如果在该文件中添加write_enable=NO,则用户不能上传文件。
即可以给每个用户定制
如果所有用户都无法上传,修改FTP目录的权限
chmod -R 777 /home/ftp
4.允许某个用户访问其他目录
3.1修改/etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
3.2编辑chroot_list,一个用户一行