linux搭建有密码的ftp,linux搭建ftp

ftp一些概念了解

1、安装 yum -y install vsftpd

2、FTP主动模式与FTP被动模式

3、防火墙开启21端口

文中是使用iptables开启的

现在centos7.2版本默认是防火墙,开启方法为:

永久开启ftp服务,ftp服务默认端口为21

firewall-cmd --add-service=ftp --permanent

firewall-cmd --reload

4.1、匿名登录(了解)

4.2、本地用户登录(了解)

4.3、虚拟用户登录(了解)

5、修改selinux

当安装并配置好ftp后可能登录不上,返回500等错误。根据文中修改设置

6、设置开机启动vsftpd服务

systemctl enable vsftpd.service

/etc/vsftpd目录下配置文件讲解

ftp服务安装完后

以下是一些文件的位置约定:

/usr/sbin/vsftpd ---- VSFTPD的主程序

/etc/rc.d/init.d/vsftpd ---- 启动脚本

/etc/vsftpd/vsftpd.conf ---- 主配置文件

/etc/pam.d/vsftpd ---- PAM认证文件

/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件

/etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件

/var/ftp ---- 匿名用户主目录

/var/ftp/pub ---- 匿名用户的下载目录

/etc/vsftpd目录下配置文件讲解

1、ftpusers

#这里设置黑名单 加入这里的用户都无法访问

2、user_list

#控制配置,这个既可以是黑名单,也可以是白名单

当vsftpd.conf中 userlist_enable=YES 时,为黑名单,加入这里的用户无法访问

当vsftpd.conf中 userlist_enable=NO 时,为白名单,加入这里的用户才能访问

3、vsftpd.conf 配置文件

重要,太多了,自己搜

了解

4、chroot_list

重要,下面步骤用到

当搭建完vsftpd服务后,要进行用户登录访问ftp测试(可在window cmd下测试,但是注意Windows cmd下ftp只能使用主动模式进行连接哦)。

如果有错误,使用cmd命令可以返回详细错误信息

(如我遇到的错误提示[vsftpd:500 OOPS: vsftpd: ...](https://www.cnblogs.com/zuikeol/p/9647048.html))

用网页、文件夹登录不给相关错误信息

Linux搭建vsftpd服务步骤

需求

搭建ftp服务,并分发用户。

上传用户uploadexample : 可创建文件夹,上传文件,查看文件,不可删除文件

下载用户downloadexample : 可查看文件,下载文件,不可删除文件

搭建

方式一:本地用户

在服务器B搭建ftp服务,并开通用户 uploadexample ,并配置只能操作指定文件夹/home/uploadexample,进行上传资源操作。

1、yum安装好ftp服务

yum -y install vsftpd

systemctl start vsftpd.service

此时匿名用户登录等应该都能登录

systemctl enable vsftpd.service #在开机时启用服务

2、/etc/vsftpd目录下修改vsftpd.conf 配置文件

anonymous_enable=NO #关闭匿名登录

#打开注释

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#添加下面

#https://www.cnblogs.com/zuikeol/p/9647048.html

allow_writeable_chroot=YES

#添加读取用户配置目录(注:本行配置默认没有需要手动输入)

user_config_dir=/etc/vsftpd/userconf

#开启被动模式及设置端口段

pasv_enable=YES

pasv_min_port=6990

pasv_max_port=7000

#开启防火墙对应端口 -- 这一步先不做,视情况而定

cd /usr/lib/firewalld/services/

cp mysql.xml ftp-PassiveMode.xml

vi ftp-PassiveMode.xml #手动配置服务管理端口

#修改内容后如下:

ftp Passive Mode

ftp Server Passive Mode

firewall-cmd --reload #刷新

firewall-cmd --get-services | grep ftp-PassiveMode #确认一下

firewall-cmd --permanent --add-service=ftp-PassiveMode #加载服务,开启端口

3、添加用户

为了安全,FTP用户一般是不能登录系统的。

在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进/etc

/passwd中;这只是一种虚拟用户的方法,但说实在的并不是真正的虚拟用户,只是把他登录SHELL的权限去掉了,所以他没有能力登录系统;

所以应该如下操作

新建用户:

# adduser -d /home/uploadexample -g ftp -s /sbin/nologin uploadexample //新建用户

# passwd uploadexample //给用户设置密码

如果现存用户不用新建,另外要确定不在黑名单ftpusers(user_list-yes)中,

并且usermod命令设置这个用户不能登录系统

最后,确认一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限:

local_enable=YES

write_enable=YES

local_umask=022

4、用户ftp相关权限设置

chroot_list文件内容添加上用户uploadexample,一行一个用户,保存

# vi /etc/vsftpd/chroot_list

建立用户配置目录

# mkdir /etc/vsftpd/userconf

建立用户登陆后的目录,也就是允许用户操作的目录 若存在不用创建

# mkdir /home/uploadexample

添加用户配置文件

注:有很多用户时,需要建每个用户相对应的文件

# vi /etc/vsftpd/userconf/uploadexample

添加内容FTP用户登陆后指定的目录:

local_root=/home/uploadexample

5、配置成功 重启ftp服务,并测试。

553 Could not create file.错误的解决

selinux打开的状态下,vsftp会出现本地用户无法上传的问题(可能是本地用户的home目录,或者是整个目录)

错误信息为:

553 Could not create file.

要解决这个问题只要:

1. setsebool -P ftpd_disable_trans 1

2. systemctl restart vsftpd.service

就可以了

方式二:虚拟用户登录

目的:设置用户的上传、下载、删除权限

1 创建虚拟用户的账号及密码

首先需要建立一个文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行中用户名所对应的密码。

#vi /etc/vsftpd/logins.txt

saupload

daka123

sadownload

daka456

saadmin

daka789

生成数据库

# cd /etc/vsftpd (option)

# yum -y install db4* (option)

# db_load -T -t hash -f logins.txt vsftpd_login.db

# file vsftpd_login.db #查看转换后的文件类型

vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)

# chmod 600 vsftpd_login.db #修改数据文件访问权限

查看vsftp登录认证数据库db文件内容的方法

/usr/bin/db_dump -d a /etc/vsftpd/vsftpd_login.db

另外,如果新增用户,重新新建包含新用户数据的txt文件,并运行db_load命令,就会将新用户数据加入搭配db文件中。删除数据未试。

2 为虚拟用户创建PAM认证文件

新建pam:

# vi /etc/pam.d/vsftpd_login.pam //为虚拟用户创建PAM认证文件,文件名为vsftpd_login.pam

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

//下面的vsftpd.conf中配置:

//pam_service_name=vsftpd_login.pam //指定新的PAM认证文件

或在默认文件中修改

# vi /etc/pam.d/vsftpd

//将里面其他的都注释掉,添加下面这两行:

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

//下面的vsftpd.conf中配置:

//pam_service_name=vsftpd(指定PAM配置文件为在/etc/pam.d/下的vsftpd)

3 创建虚拟账号对应的系统用户

# useradd -d /home/ftpexample -s /sbin/nologin ftpexample

//添加用户ftpexample,指定到新建的家目录,将虚拟用户对应到这个系统账号上,这个

账号无需设置密码及登录Shell (另外 如果用其他本地用户,那么该本地用户不能再用原来的账号密码登录了)

# chmod 755 /home/ftpexample/

//调整权限以允许浏览目录

//下面的vsftpd.conf中配置:

//guest_username=ftpexample //指定映射的系统用户名称

4.修改主配置文件

# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=no#禁用匿名用户登录

(anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_umask=022 //指定上传权限掩码)(option)

allow_writeable_chroot=YES#https://www.cnblogs.com/zuikeol/p/9647048.html

local_enable=YES#需映射本地用户,所以启用些项

write_enable=YES#启用上传写入支持

chroot_local_user=YES

#将所有本地用户限制在家目录中,新建的用户必须设置家目录,example:adduser -d /home/uploadexample...

#(或按照方式一种第二步设置相关用户限制目录:)

guest_enable=YES#启用映射功能

guest_username=ftpexample#指定映射的系统用户名称

pam_service_name=vsftpd_login.pam#指定新的PAM认证文件

user_config_dir=/etc/vsftpd/userconf#(自建配置)用户配置文件夹,需要创建

max_clients=300#(自建配置)设置FTP服务器最大接入客户端数为300个

max_per_ip=10#(自建配置)设置每个IP地址最大连接数为10个

pasv_enable=YES# //(自建配置)允许PASV模式进行数据传输

pasv_min_port=65341# //(自建配置)PASV模式下数据传输所使用port范围下界

pasv_max_port=65351# //(自建配置)PASV模式下数据传输所使用port范围上界

...

5.建立虚拟账户的配置文件

# mkdir /etc/vsftpd/userconf (option)

# cd /etc/vsftpd/userconf

创建相关用户配置文件

# touch saupload

# touch sadownload

# touch saadmin

配置文件内容,设置具体的权限:

write_enable=YES 允许写入

download_enable=NO 是否能下载

anon_world_readable_only=NO 允许浏览FTP目录和下载

anon_upload_enable=YES 允许虚拟用户上传文件

anon_mkdir_write_enable=YES 允许虚拟用户创建目录

anon_other_write_enable=YES 允许虚拟用户执行其他操作(如改名、删除)

anon_umask=022 上传文件的掩码,如022时,上传目录权限为755,文件权限为644(例如供http访问)

local_root=/ftproot/admin 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)

# vi saupload

//可以:上传,创建文件夹, 查看下载文件 不能:删除,重命名

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

//可以:上传,创建文件夹, 查看 不能:删除,重命名,下载文件

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

download_enable=NO

# vi sadownload

//只能查看下载文件

anon_world_readable_only=NO

# vi saadmin

//所有权限:上传,创建文件夹 查看下载文件 重命名 删除

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

重启服务,登录相关虚拟用户名密码,进行测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Linux搭建FTP服务器的步骤: 1.安装vsftpd软件包: ```shell sudo apt-get update sudo apt-get install vsftpd ``` 2.配置vsftpd: ```shell sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig #备份原始配置文件 sudo nano /etc/vsftpd.conf #编辑配置文件 #确保以下设置正确: anonymous_enable=NO #禁用匿名访问 local_enable=YES #启用本地用户访问 write_enable=YES #启用写入权限 local_umask=022 #设置默认的文件权限 dirmessage_enable=YES #启用目录信息 use_localtime=YES #使用本地时间 xferlog_enable=YES #启用传输日志 connect_from_port_20=YES #使用20端口进行数据连接 chroot_local_user=YES #限制用户只能访问自己的主目录 secure_chroot_dir=/var/run/vsftpd/empty #设置安全的chroot目录 pam_service_name=vsftpd #启用PAM认证 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #设置SSL证书 rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key #设置SSL私钥 ssl_enable=NO #禁用SSL pasv_enable=YES #启用被动模式 pasv_min_port=40000 #被动模式最小端口 pasv_max_port=40100 #被动模式最大端口 listen=YES #启用监听 listen_ipv6=NO #禁用IPv6监听 ``` 3.创建ftp用户和用户组: ```shell sudo groupadd ftpusers #创建ftp用户组 sudo useradd -g ftpusers -d /var/ftp/ftp1 ftp1 #创建ftp1用户 sudo useradd -g ftpusers -d /var/ftp/ftp2 ftp2 #创建ftp2用户 sudo passwd ftp1 #设置ftp1用户密码 sudo passwd ftp2 #设置ftp2用户密码 sudo chown ftp1:ftpusers /var/ftp/ftp1 #设置ftp1用户的主目录 sudo chown ftp2:ftpusers /var/ftp/ftp2 #设置ftp2用户的主目录 sudo chmod 755 /var/ftp/ftp1 #设置ftp1用户的主目录权限 sudo chmod 755 /var/ftp/ftp2 #设置ftp2用户的主目录权限 ``` 4.重启vsftpd服务: ```shell sudo systemctl restart vsftpd ``` 现在,你已经成功地在Linux搭建FTP服务器,可以使用ftp1和ftp2用户登录并上传/下载文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值