最近公司要用到ftp,小菜鸡百度了一下教程,自己也总结一下
现在随便百度都是vsftpd的服务,所以这里我也是用vsftp
1.检测或安装vsftp
首先检查一下你的主机是否含有vsftp服务,关于rpm,其实是关于的软件管理,可能ubuntu没有,所以我们只需下载就是了(apt-get install rpm)
rpm -qa| grep vsftpd
如果有显示vsftp版本,证明是已经存在vsftp了,可以跳到第二步。
如果没有我们就进行安装vsftp
yum install vsftpd
如果是ubuntu,安装vsftp则执行下面的代码
apt-get install vsftpd
2.添加对应的用户
添加用的命令如下:
useradd 选项或参数 用户名
在这里我们要创建一个用户test321,他的访问的根目录在alidata/www/default,而且不给ssh访问,所以这么写
useradd -d alidata/www/default -s /bin/false test321
然后更改用户的对应的密码
passwd test321 密码
顺带一提。此时用户的信息显示在/etc/passwd里面,如果想去修改用户的初次访问目录,可以去修改该文件
3.修改用户只能去访问该目录
首先要去配置/etc/vsftpd.conf里面的配置项
在这里我们可以找到这段注释
# You may restrict local users to their home directories. See the FAQ for# the possible risks in this before using chroot_local_user or# chroot_list_enable below.# chroot_local_user=YES
上面三行大致的意思是你也许想去限制他只能访问自己的根目录,那就取消注释最下面的那句话就好了,然后我取消注销chroot_local_user=YES这句话,就能使通过ftp访问的用户只能访问自己的根目录
重启服务才能生效:
service vsftpd restart
但是我们可能还想一些ftp用户具有特权,不单单是访问他的根目录,还可以去访问其他目录,我们可以这样做
在conf里面我们可以看到这段注释
# You may specify an explicit list of local users to chroot() to their home# directory. If chroot_local_user is YES, then this list becomes a list of# users to NOT chroot().#chroot_local_user=YES#chroot_list_enable=YES# (default follows)#chroot_list_file=/etc/vsftpd.chroot_list
我们只要把chroot_local_user=YES这段代码取消注释,那表示打开特权,而下面的chroot_list_file这个参数就是存放含有“特权用户”的文件路径,在这个文件里面,我只要写上用户的名字就可以把他改为“特权用户”,注意:一行一个用户。
4.如何修改连接数和限制速度
以下的配置项可以直接在vsftpd.conf最下面添加
限制一个ip的连接数:max_per_ip=连接数
限制ftp的连接数: max_clients=100(注意这个是会话数,不是连接人数)
限制本地用户的速度:local_max_rate=速度
5.可能遇到的错误或问题
1.当限制用户不能跳转其他目录,即注释掉chroot_local_user=YES这句话之后就会出现错误500 OOPS: vsftpd: refusing to run with writable root inside chroot()
只要加上这句话就好了:allow_writeable_chroot=YES,这是因为,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。摘自百度
2.虚拟用户可以登录上去,但是root账户登录不上去,查看一下你的/etc目录,看看下面是否有ftpusers这个文件,这很可能就是引起原因的文件。
ftpusers可以说是ftp登录的黑名单,凡是在这个文件上面有对应名字的,都不能登录,一般而言含有root
3.是否开启了pam模块,有时候vsftp下载下来的时候会在/etc/pam.d目录下含有一个文件vsftpd,具体pam怎么配置我不太清楚...如果这个vsftpd文件存在,新建的用户都不能登录上去,如果不想折腾的话,可以把他删了,但是具体后果我不清楚,因为我还没研究pam...