装好了Linux,先来把ftp开一下。Red Hat Enterprise Linux 4.7中默认的有一个GSftp,但是一搜网上,讨论的太少了,基本没什么资料。还是用vsftp吧。也是默认就装上的,在服务里面启动就可以了(我是在gnome里面打开的)。查看装没装:rpm -q vsftpd 会显示版本号。
vsftp有三种模式,匿名登陆,本地用户登陆,虚拟用户。匿名用户我不用,按说虚拟用户最好,也安全。但是一看资料,太麻烦了,还要用别的工具或数据库存储用户信息,反正我也不做专业的ftp,只是自己传个东西,还是用本地用户吧。
一、首先建立ftp的目录和用户
建目录简单:mkdir /tmp/ftp
建组和用户在图形界面下很简单,和windows一样,但是既然用LiInux,还是学点命令的好。
建组:groupadd ftpuser (这一步我没加,反正建个用户自己用,也不想建什么组。其实用下面的useradd的时候,如果不指定组,系统会自动建一个名称相同的组。)
创建用户
useradd -G test –d /tmp/test –M -s /sbin/nologin ftpuser
注:我建的用户叫ftpuser。其他参数:G:用户所在的组(这个我没指定); d:表示创建用户的自己目录的位置给予指定;M:不建立默认的自家目录,也就是说在/home下没有自己的目录;s:用户登陆的shell,这里/sbin/nologin是没有shell,因为ftp用户不需要让他在系统登陆。
建好用户给用户设密码:
passwd ftpuser 再输入两次密码就可以了。另外,删除用户的命令是:userdel -r ftpuser
至此,如果vsftpd服务开着的话,就能够访问了,不过只能看,不能传。因为在其目录没有权限。
二、目录权限的设定
两种办法:把目录的属主定为ftp用户: chown ftpuser /tmp/ftp
还有把目录权限设定为777(自己用,ftp下面都是临时传的一些文件,全有权限算了)
chmod 777 /tmp/ftp ----7表示wrx 5表示rx 0表示什么权限都没有
这样似乎就行了,怎么发现ftp登陆的以后,可以到处转呀,系统所有的目录都能尽收眼底,这样不行,应该把用户限定在ftp目录下面。
三、限定目录
这就改修改/etc/vsftpd.conf了,里面的内容可真多,咱也不用仔细研究了。
资料说要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项。我看前两项默认的已经是yes了,就是后面的chroot_local_usr需要改成YES。改完之后发现登陆时提示could not open chroot() list file:/etc/vsftpd.chroot_list,原来系统本来没有vsftpd.chroot_list这个文件。
touch /etc/vsftpd.chroot_list,建立这个文件,在里面写上userftp的名字。OK,重启后再也不能到处乱跑了。
vsftpd的重启命令:service vsftpd restart(start stop)
我还忘了一项,应该把anonymous_enable=YES改成NO,把匿名登陆关了。