一. 下载vsftpd软件
sudo apt-get install vsftpd
二. 配置vsftpd.conf
sudo vim /etc/vsftpd.conf
参数设置
1. 基本参数
annonymous_enable=No 表示不允许匿名登录
2. 限制用户访问权限
让用户只能访问他们home目录以下的目录和文件,而不能往上访问。
chroot_local_user=Yes 为允许本地用户登录,,且只能访问自己的home目录
chroot_list_enable=Yes 使用chroot_list,chroot_local_user=Yes时,里面的名单为非 chroot用户,即不会被限制访问权限,当chroot_local_user=No时,里面的名单为chroot用户,会被限制访问权限
allow_writeable_chroot=Yes 为允许用户写入
chroot_list_file=/etc/vsftpd.chroot_list 文件vsftpd.chroot_list需要我们自己新建,里面的名单为不受限的用户名字,将用户名添加到vsftpd.chroot_list文件中,每个用户名一行
local_root=/home/ftp/test 设置了local_root后,用户登录时会直接进入/home/ftp/test目录下
3. 设置成被动访问模式
4.修改监听端口号
- 编辑/etc/vsftpd/vsftpd.conf 文件,在该配置文件末尾添加此行:listen_port=666
listen_port=666
-
编辑/etc/services 文件,将其中的
ftp 21/tcp 改为 ftp 666/tcp ,
fsp 21/udp 改为 ftp 666/udp
-
重新启动vsftpd服务
sudo service vsftpd restart
- 查看端口号
netstat -tnulp | grep vsftpd
三. 创建与删除用户
1. 创建用户
useradd -d /home/ftp/home/user1 user1
passwd user1
chmod 777 -R /home/ftp/home/user1
chown user1.user1 /home/ftp/home/user1
usermod -d /home/ftp/home/user1 user1
2. 编辑用户权限
网上的其他教程可能在上一步创建用户完后,就说创建成功可以使用了,但是这里还有个坑,就是用户的登录权限,这里不设置好,你还是登录不了!
-
让用户能够登录
usermod -s /bin/bash user1 #让user1有登录的权限
-
用户不能登录
- bin/fasle
user1不能登录,登录时只返回一个错误,就显示
530 Login incorrect
Login faileduser1
看完后也懵逼usermod -s /bin/false user1
-sbin/nologin
user1不能登录,nologin会礼貌的向用户显示一条信息,并拒绝用户登录:This account is currently not available.
但是作者实测,效果和/bin/false一样,并没有返回This account is currently not available.usermod -s /bin/nologin user1
3. 删除用户
userdel -r user1
4. 查看用户及登录权限
cat /etc/passwd
四.登录
在ftp软件中,输入
IP
用户名
端口号
密码
就能登录使用了
五. 问题解决
1. 可以登录,但是无法新建文件,也无法上传
用户对目录的权限问题,必须使用户具有7(drwx)的权限
权限介绍:4=可读 2=可写 1=可执行
7 7 7
第一个7 是 文件所有者的权限
第二个7 是 文件所属组的权限
第三个7 是 其他用户的权限
7 = 4+2+1 表示有可读可写可执行,即rwx
6 = 4+2 表示有可读可写权限,即rw-
5 = 4+1 表示有可读可执行,即r-x
使用命令修改用户目录的权限,这里以用户user1,其目录为/home/ftp/home/user1为例:
- 将目录权限改成777,则所有用户都有7的权限,那user1也有
chmod 777 -R /home/ftp/test
- 将用户目录的所有者和组修改成用户自己,即user1,
chown user1.user1 /home/ftp/home/user1
因为mkdir的方式新建的文件夹,通过ll看权限,其权限默认是drwxr-xr-x
这里我们通过命令让该文件夹的文件所有者和文件所属组都成为user1,那么此时user1就获得了文件所有者的drwx权限,
2. 创建的第一个用户可以登录,之后创建的用户不能登录,报错530 Login incorrect
用户登录权限问题
usermod -s /bin/bash username1