Ubantu20搭建Vsftpd服务

2021-08-13  本文已影响0人  阿当运维

环境:Ubantu20.04

需求:

搭建ftp服务器,共享目录 /tmp/jkyy-ftp ,创建2个用户。
jkyyrw ---对文件可读可写可删除
jkyy ---只读权限

搭建过程

  1. 更新源,安装vsftpd服务
apt-get update
apt install vsftpd
  1. 编辑vsftpd配置文件
    位置:/etc/vsftpd.conf
listen=YES
#listen_ipv6=NO
anonymous_enable=NO  #禁止匿名用户登录
local_enable=YES     #本地账户登录开启
write_enable=YES     #开启全局写权限
local_umask=022     #默认上传文件权限掩码(755)
dirmessage_enable=YES  
use_localtime=YES   #本地时间
xferlog_enable=YES  #记录日志开启
connect_from_port_20=YES   
xferlog_file=/var/log/vsftpd.log   #日志
xferlog_std_format=YES   #日志格式化开启

#限制可访问的目录为/tmp/jkyy-ftp ,不可上翻目录,
#chroot_local_user为是否限制用户在自己家目录下 YES为限制,NO为不限制
#chroot_list_enable为是否启动限制用户的名单。后面的list_file可以理解为“特权用户”。
#至于是限制名单还是放行名单,完全取决于chroot_local_user是YES还是NO。特权=取反
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd.chroot_list
local_root=/tmp/jkyy-ftp 
allow_writeable_chroot=YES  #允许chroot写权限,不加会500错误

#限制用户白名单
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/allow_ftp_list

secure_chroot_dir=/var/run/vsftpd/empty
#pam_service_name=vsftpd
pam_service_name=ftp 
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

utf8_filesystem=YES
  1. 重启服务, 检测服务是否正常启动
root@t01:~# systemctl restart vsftpd
root@t01:~# systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-08-13 02:29:06 UTC; 10s ago
    Process: 13475 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
   Main PID: 13487 (vsftpd)
      Tasks: 1 (limit: 2316)
     Memory: 592.0K
     CGroup: /system.slice/vsftpd.service
             └─13487 /usr/sbin/vsftpd /etc/vsftpd.conf

Aug 13 02:29:06 t01 systemd[1]: Starting vsftpd FTP server...
Aug 13 02:29:06 t01 systemd[1]: Started vsftpd FTP server.
  1. 创建我们的ftp目录
mkdir  /tmp/jkyy-ftp
  1. 创建ftp用户组
groupadd ftpgroup
  1. 创建用户,指定家目录为我们的ftp目录。并添加到ftp组
useradd -d /tmp/jkyy-ftp  -g ftpgroup -s  /sbin/nologin jkyyrw
useradd -d /tmp/jkyy-ftp  -g ftpgroup -s  /sbin/nologin jkyy
passwd jkyyrw
passwd jkyy
  1. 修改ftp目录的属主属组以及权限
chown -R jkyyrw:ftpgroup /tmp/jkyy-ftp
chmod  -R 755 /tmp/jkyy-ftp/
  1. 确认修改结果
root@t01:/tmp# ll /tmp/
total 48
drwxrwxrwt 11 root    root     4096 Aug 13 02:20 ./
drwxr-xr-x 19 root    root     4096 Aug 11 10:51 ../
drwxr-xr-x  2 jkyyrw  ftpgroup 4096 Aug 13 02:09 jkyy-ftp/
  1. 登录测试
image.png

中途遇到的问题

  1. 500 OOPS: cannot change directory:/home/xxx
    创建用户的没有指定家目录,跟着提示看/home,并无这个用户的家目录。
    解决:重新创建用户指定家目录,或者在/home下自己创建一个用户的家目录。
  2. /sbin/nologin用户无法登录ftp。其他登陆类型用户可以登录ftp
    解决:编辑/etc/shells 加入/sbin/nologin即可。etc/shells是用来说明有效shell的配置文件。
  3. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    这个问题是vsftpd配置没配置好,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
    解决: 加入 allow_writeable_chroot=YES
  4. 登录ftp总是出现密码错误
    苏州街:/etc/vsftpd.conf配置文件的pam_service_name=vsftpd改为pam_service_name=ftp,即可解决。pam_service_name=ftp
上一篇下一篇

猜你喜欢

热点阅读