在阿里云买了个虚拟服务器,装了个ubuntu,一开始安装的是他们推荐的vsftp,后来其中一个网站要给别人搞了,需要给ftp帐号他。这个vsftp有个问题就是无办法限制用户只能访问其home目录,例如我有个网站/www/website1跟/www/website2,对应的帐号是website1user跟website2user,他们的home目录分别是/www/website1跟/www/website2。但是你用website1user或者website2user登录你不仅可以看到其他网站的目录,甚至系统的文件目录也可以操作。vsftp提供了限制访问home目录的功能,但怎么设置都没效果,而且它只能限制ftp的,如果通过sftp访问就没效了,估计是有bug,浪费了我一晚时间最后没解决,搞到我直想骂人。实在没办法只好换成pure-ftp,发觉简单很多,以下例子使用我上面说的环境。
安装:
创建通用用户组及用户:aptitude install pure-ftpdcd /etc/pure-ftpd/confecho '
no'
> PAMAuthenticationecho '
no'
> UnixAuthenticationecho '
/etc/pure-ftpd/pureftpd.pdb'
> PureDBln -s ../conf/PureDB /etc/pure-ftpd/auth/50pure
设置用户权限:groupadd -g 2001 ftpgroupuseradd -u 2001 -s /bin/false -d /bin/null -c "FTP user" -g ftpgroup ftpuser
增加ftp用户(pure-ftp并不会在系统创建用户,这里创建的是虚拟用户,比vsftp科学多了):chown -R ftpuser:ftpgroup /www
我这里创建了website1user这个虚拟用户,创建的时候会提示输入密码。(如果系统本来有website1user这个用户也没影响,当然也可以删除系统的website1user)pure-pw useradd website1user -u ftpuser -d /www/website1
保存设置:
重启服务器后就可以测试了。pure-pw mkdb
经测试用户只能操作自己的网站目录。service pure-ftpd restart
另外一些基本命令:
pure-pw useradd virtusername -u realusername -g realgroupname -d /home/directory #增加用户pure-pw usermod virtusername -u realusername -g realgroupname -d /home/directory #修改用户pure-pw userdel virtusername #删除用户pure-pw passwd virtusername #改密码pure-pw list # 列出所有用户pure-pw show virtusername # 显示用户详细信息pure-pw mkdb # 保存设置