一, 环境:
centos7, vsftp, 在本地win10下的FileZilla
二, 问题描述:
已有一个用户upload, 只能上传, 不能下载
三, 目的:
用这个用户, 可以通过ftp上传, 下载, 覆盖, 而且活动范围仅限于这个用户的主目录
四, 过程:
- usermod -d /home/upload upload //设置upload用户的主目录为 /home/upload, 这样该用户一登录就会去到这个目录
- chown -R upload /home/upload //设置 /home/upload 目录的owner为upload用户
- chmod -R 766 /home/upload //设置 /home/upload 目录的权限为766, 也就是 rwxrw-rw-
- 取消了 /etc/vsftpd/vsftpd.conf 里 chroot_local_user=YES 的注释:
- 在 /etc/vsftpd/vsftpd.conf里添加了: allow_writeable_chroot=YES
- 注释了 /etc/pam.d/vsftpd 文件里的这一行, 在前面加 # 号: auth required pam_shells.so, 这一步之前没做, 登录时一直提示 530 Login incorrect.
- systemctl restart vsftpd.service // 重启vsftp服务
- 重新用此用户登录ftp, 可以上传下载覆盖了
五, 后记:
如果一开始是没有账号的, 可以先添加一个账号:
useradd -d /home/myftpfolder -m myftpuser // 这里创建用户的同时指定了这个用户的主目录, 目录不存在则创建,
passwd myftpuser // 如果新加的用户, 别忘了要先设置密码
其它命令:
cat /etc/passwd //查看所有用户信息
getfacl /home/upload //查看这个目录的权限
ftp黑白名单说明:
userlist_enable=YES // 表示启用另一个配置userlist_deny
userlist_deny=YES // 表示 /etc/vsftpd/user_list 里是黑名单, 无法登录到ftp, 如果是NO, 表示是白名单, 只有这里的用户可以登录到ftp, 在别人的地方截个图: