Linux FTP搭建及其使用

一、ftp搭建

1.安装ftp软件包

1.1挂载镜像

mount /dev/sr0 /mnt

1.2安装相应的rpm包

--vsftpd:
rpm -qa | grep vsftpd
yum -y install vsftpd
rpm -ivh vsftpd-2.2.2-21.el6.x86_64.rpm

--ftpd:
rpm -ivh ftp-0.17-54.el6.x86_64.rpm

2.开启ftp服务

--redhat6:
启动ftp命令:
service vsftpd start

停止ftp命令:
service vsftpd stop

重启ftp命令:
service vsftpd restart

--redhat7:
启动ftp命令:
systemctl start vsftpd.service

停止ftp命令:
systemctl stop vsftpd.service

重启ftp命令:
systemctl restart vsftpd.service

3.vsftpd配置

配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:
(1)ftpusers 该文件用来指定那些用户不能访问ftp服务器。
(2)user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp。
(3)vsftpd.conf vsftpd的主配置文件。

--vsftpd.conf 部分常用参数
listen=[YES|NO]             是否以独立运行的方式监听服务
listen_address=ip地址       设置要监听的ip地址
listen_port=21              设置FTP服务的监听端口
download_enable=[YES|NO]    是否允许下载文件
userlist_enable=[YES|NO]/userlist_deny=[YES|NO] 设置用户列表为允许还是禁止操作
max_clients=0               最大客户端连接数,0为不限制
max_per_ip=0                同一ip地址的最大连接数,0为不限制
anonymous_enable=[YES|NO]   是否允许匿名用户访问
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件
anon_umask=022              匿名用户上传文件的umask值
anon_root=/var/ftp          匿名用户的ftp根目录
anon_mkdir_write_enable=[YES|NO]  是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO]  是否开放匿名用户的其他写入权限(重命名、删除等操作)
anon_max_rate=0             匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO]       是否允许本地用户登录ftp
local_umask=022             本地用户上传文件的umask值
local_root=/var/ftp         本地用户的ftp根目录
chroot_local_user=[YES|NO]  是否将用户权限禁锢在ftp目录,以确保安全
local_max_rate=0            本地用户最大的传输速率,0为不限制

3.1以匿名用户为例,登录FTP

想要以匿名用户登录,需要修改/etc/vsftpd/vsftpd.conf的配置文件。
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
把这两个参数的注释去掉,就可以完成匿名用户的配置,此时匿名用户既可以登录上传,也可以下载文件。
修改完成后,记得重启该服务。
systemctl restart vsftpd.service

另一台机器使用匿名用户ftp进行登录,无密码。
ftp 192.168.80.238
Connected to 192.168.80.238 (192.168.80.238).
220 (vsFTPd 3.0.2)
Name (192.168.80.238:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

3.2添加test1和test2两个用户,并且可以身份验证访问ftp服务

--添加用户
useradd test1
echo "123" | passwd --stdin test1

useradd test2
echo "123"|passwd --stdin test2

用户可以随便切换到其他目录下,安全性较低。

--将普通用户禁锢在家目录中,使其不能随意切换目录
vi /etc/vsftpd/vsftpd.conf
#chroot_local_user=YES
去掉参数前面的注释并重启服务。
注意:rhel7中单纯的修改参数chroot_local_user=YES,会造成ftp登录失败的问题,需要在此参数chroot_local_user=YES的基础上添加参数allow_writeable_chroot=YES才可以。

--将test1加入user_list文件中,user_list默认为黑名单
echo "test1" >> user_list

test1登录失败:
ftp 192.168.88.5
Connected to 192.168.88.5 (192.168.88.5).
220 (vsFTPd 3.0.2)
Name (192.168.88.5:root): test1
530 Permission denied.
Login failed.

test2登录成功:
ftp 192.168.88.5
Connected to 192.168.88.5 (192.168.88.5).
220 (vsFTPd 3.0.2)
Name (192.168.88.5:root): test2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

注意:若想uesr_list变为白名单,则只需要在ftp配置文件末尾加入:userlist_deny=NO重启服务即可。

3.3建立test3虚拟用户账户使用ftp

vi /etc/vsftpd/vuser
test3
123

注意:奇数行为用户名,偶数行位密码。

3.3.1将vuser文件转换成数据库文件,并给vuser和转换后的vuser.db数据库文件设置权限
db_load -T -t hash -f vuser vuser.db
chmod 600 vuser
chmod 600 vuser.db
3.3.2创建一个用户为vuser,指定家目录/opt/vuser,并不使用shell登陆
useradd -d /opt/vuser -s /sbin/nologin vuser
3.3.3编辑pam认证模块支持虚拟用户的登陆
vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser 
account required pam_userdb.so db=/etc/vsftpd/vuser
3.3.4编辑ftp配置文件,开启虚拟用户,使用pam认证登陆
vi vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.vu
3.3.5重启服务
systemctl restart vsftpd.service
3.3.6使用test3验证登录
ftp 192.168.88.5
Connected to 192.168.88.5 (192.168.88.5).
220 (vsFTPd 3.0.2)
Name (192.168.88.5:root): test3
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

如果使用虚拟用户,出现登录失败的情况,可能为以下三方面原因:
(1)检查自己的虚拟用户数据库文件内容是否有误。
(2)可能是PAM模块有问题检查自己的 /etc/pam.d/vsftpd文件的内容。
(3)虚拟用户验证FTP服务因为需要用到PAM模块,所以本地用户有可能被PAM模块限制而导致无法登陆。

二、常用的ftp命令

2.1连接ftp

格式:ftp <ip地址>
如:ftp 192.168.88.5
输入相应的用户名密码登录即可。

2.2下载文件(get/mget)

2.2.1get命令

将远程主机上的文件传送到本地主机上。

格式:get <remote_file> <local_file>

如:
ftp 192.168.88.5
Connected to 192.168.88.5 (192.168.88.5).
220 (vsFTPd 3.0.2)
Name (192.168.88.5:root): test2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /tmp/
250 Directory successfully changed.
ftp> ls -lrt
227 Entering Passive Mode (192,168,88,5,115,103).
150 Here comes the directory listing.
drwx------    3 0        0              17 Feb 09 06:04 systemd-private-7fb240dbba1e49af931a4499c959bba2-vmtoolsd.service-krWDjZ
drwx------    3 0        0              17 Feb 09 06:04 systemd-private-7fb240dbba1e49af931a4499c959bba2-rtkit-daemon.service-itBl9T
drwx------    3 0        0              17 Feb 09 06:04 systemd-private-7fb240dbba1e49af931a4499c959bba2-cups.service-U3Zwog
drwx------    3 0        0              17 Feb 09 06:04 systemd-private-7fb240dbba1e49af931a4499c959bba2-colord.service-0FDRUo
-rw-r--r--    1 0        0           14893 Feb 24 07:30 ashrpt_1_0223_1000.html
226 Directory send OK.

ftp> get ashrpt_1_0223_1000.html
ftp> get ashrpt_1_0223_1000.html C:\Users\Administrator_L\Desktop\ash.html

2.2.2mget命令

从远程主机接收一批文件到本地主机。

格式:mget <remote_files>

如:
ftp 192.168.88.5
Connected to 192.168.88.5 (192.168.88.5).
220 (vsFTPd 3.0.2)
Name (192.168.88.5:root): test2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> cd /tmp/
ftp> mget *.*
mget adjtime? y

227 Entering Passive Mode (192,168,70,31,142,169).

150 Opening BINARY mode data connection for adjtime (5685 bytes).

226 Transfer complete.

注意:要去除提示需执行:prompt off
文件会下载到当前目录下,也就是执行ftp命令的所在目录。

2.3上传文件(put/mput)

2.3.1put命令

将本地主机上的文件传送到远程主机。

格式:put <local_file> <remote_file>

如:
ftp> put C:\Users\Administrator_L\Desktop\1.txt
ftp> put C:\Users\Administrator_L\Desktop\1.txt 2.txt

2.3.2mput命令

将本地主机上的一批文件传送到远程主机。

格式:mput local_file

如:
ftp> mput *.txt

3.其他常用ftp命令

pwd                显示远程Linux FTP服务器上的当前路径。
ls                 列出远程Linux FTP服务器上当前路径下的目录和文件。
dir                列出远程Linux FTP服务器上当前路径下的目录和文件(同上)。
mkdir [foldname]   在远程Linux FTP服务器上当前路径下建立指定目录。
rmdir [foldname]   删除远程Linux FTP服务器上当前路径下的指定目录。
cd [foldname]      更改远程Linux FTP服务器上的工作目录。
delete [filename]  删除远程Linux FTP服务器上指定的文件。
rename [filename] [newfilename]  重命名远程Linux FTP服务器上指定的文件。
close              从远程Linux FTP服务器断开但保留FTP命令参数提示。
disconnect         从远程Linux FTP服务器断开但保留FTP命令参数提示(同上) 。
bye                结束和远程Linux FTP服务器的连接。
quit               结束和远程Linux FTP服务器的连接(同上)!                  直接从远程Linux FTP服务器进入到本地shell中。
exit              (接上步)从本地shell环境中返回到远程Linux FTP服务器环境下。
!ls               列出本地机器上当前路径下的目录和文件。
lcd [foldname]    更改本地机器的工作目录。
?                 显示ftp命令说明。
help              显示ftp命令说明(同上)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值