环境:Ubantu20.04
需求:
搭建ftp服务器,共享目录 /tmp/jkyy-ftp ,创建2个用户。
jkyyrw ---对文件可读可写可删除
jkyy ---只读权限
搭建过程
- 更新源,安装vsftpd服务
apt-get update
apt install vsftpd
- 编辑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
- 重启服务, 检测服务是否正常启动
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.
- 创建我们的ftp目录
mkdir /tmp/jkyy-ftp
- 创建ftp用户组
groupadd ftpgroup
- 创建用户,指定家目录为我们的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
- 修改ftp目录的属主属组以及权限
chown -R jkyyrw:ftpgroup /tmp/jkyy-ftp
chmod -R 755 /tmp/jkyy-ftp/
- 确认修改结果
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/
- 登录测试
中途遇到的问题
- 500 OOPS: cannot change directory:/home/xxx
创建用户的没有指定家目录,跟着提示看/home,并无这个用户的家目录。
解决:重新创建用户指定家目录,或者在/home下自己创建一个用户的家目录。 - /sbin/nologin用户无法登录ftp。其他登陆类型用户可以登录ftp
解决:编辑/etc/shells 加入/sbin/nologin即可。etc/shells是用来说明有效shell的配置文件。 - 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
这个问题是vsftpd配置没配置好,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
解决: 加入 allow_writeable_chroot=YES - 登录ftp总是出现密码错误
苏州街:/etc/vsftpd.conf配置文件的pam_service_name=vsftpd改为pam_service_name=ftp,即可解决。pam_service_name=ftp
网友评论