vsftpd的教程很多,不必再述了,我讲讲配置过程中会遇到的疑惑。
1.路径问题
路径是可以自定义的,你不用管它默认路径是什么。反正自己统一建立一个/home/ftpuser,存放不同用户的根目录。例如创建了两个文件夹/home/ftpuser/dark /home/ftpuser/ftpclient。 然后我用useradd增加两个账户dark和ftpclient,不需要为这两个账户设定系统路径,即useradd时候,输入option -M强制不生成系统根目录。好像默认就是-M的,不过即使你生成了,也不碍事,你可以不用。
然后你在vsftpd.conf中到配置local_root=/home/ftpuser/dark.
就可以了。当然,在这里,你会遇到如下问题:
1.怎么让dark进入/home/ftpuser/dark,而ftpuser进入/home/ftpuser/ftpuser?
2.各种由权限引起的bug。
3.忘记把根目录/home/ftpuser/dark的拥有者设置为dark,用chown改变文件拥有者——默认拥有者是root的。
这两个问题,可以从我的另一篇文章中寻找答案
http://blog.csdn.net/xzongyuan/article/details/9281823
分别对应“好用的配置”和“常见问题汇总”。之前我没作汇总,排错效率很低,有了这个,基本上排错的方向就明确了。
权限问题要注意,网络用户的根目录,不能是可写权限的,如果可写,就会报错。因此要在只读的文件夹里面建一个新的文件夹pub(名字自定义),然后给它可读写权限,输入sudo chmod 700 pub
举例 /home/ftpuser/dark 下,dark到权限应该是dr-x------,/home/ftpuser/dark/pub中,pub权限是drwx------。
2.安全问题
这个我还是以菜鸟到角度来提醒下,一定要把网络账户的shell改一下,ftp传输时,密码是明文的,只要截取到信息,就能看到你密码 。参照上面链接到“安全性配置”。
3。chroot
忘了说这个,很关键,不要忽视它。一开始我没管它,结果linux的登录用户可以看到整个server的文件,非常危险!chroot意思是change root,则改变系统用户的根目录,让它的根目录从"/"改变为你设置的local_root=/home/ftpuser/
关于chroot的配置,看过英文呢版的,很清楚,但是找不到了,中文的表述,很多人都说不清楚。
如上所述,这两个命令主要是限定网络用户的根目录的。如果不限定,某些ftp工具,直接登录的是系统根目录"/",存在安全隐患
最保险的做法是让所有网络用户都被jailed,即限定在具体的local_root下。
chroot_local_user=YES #这样就OK了。注意,只要你希望jail某些用户,上面到chroo_local_user就要为YES,一旦设置为NO,则无论下面怎么设置,都是可以看到根目录的。
如果要求有例外情况,允许dark可以进入根目录,则才需要配置下面选项,这个YES不是开启的意思,而是指定的用户是否被jail。
chroot_list_enable=YES
并且
在/etc下,新增一个叫做vsftpd.chroot_list,把dark放进去,表示dark可以随意浏览server的根目录。一般情况下,不要往这个文件加任何用户,保证jail所有人。
chroot_list_enable这个选项最纠结,其实不应该用YES/NO,而应该用chroot_list_enable=JAIL/DO_NOT_JAIL。这样就不会让人误会了。选YES,就代表chroot_list的人DO_NOT_JAIL。
总结:
chroot_local_user=YES #将所有本地用户限制在自家目录中,NO则不限制。
#如果需要安排例外例外用户,则设置下面指令。
chroot_list_enable=YES #是否允许vsftpd读取一个提供了用户名的文件,如果chroot_local_user指令是YES的话,
#则该文件中的用户不会被限制在自家主目录中,如果chroot_local_user是NO的话,
#则这些用户会被限制。
chroot_list_file=/etc/vsftpd.chroot_list
用于控制用户登录权限,如果不在list内,则无法登录,对应vstpd.user_list
userlist_enable=NO
userlist_deny=NO