FTP的基础设置

 本文对安装部分不作描述 使用xinetd 管理vsftpd(必定要安装xinetd) 像FTP这样的访问压力比较小的服务,使用xinetd方式是比较合适的,首先应该告诉vsftpd,从如今开始能够不用监听端口了,打开配置文件/etc/vsftpd/vsftpd.conf,找到 "listen=YES"  将"listen=YES"改成"listen=NO",表示没必要监听端口, 接下来须要告诉xinetd和FTP服务器有关的信息。为此,在/etc/xinetd.d 目录下创建文件vsftpd,包含下面这些内容 service ftp {     socket_type    = stream     wait        = no     user        = root     server        = /usr/sbin/vsftpd #server字段填写的是vsftpd服务器的启动脚本所在地路径。     log_on_success    += DURATION     disable        = no } 如今从新启动xinetd,使其配置生效 /etc/xinetd.d/xinetd restart 查看22端口的状况,能够看到xinetd已经接管了这个端口 netstat -tulnp | grep 22 或者 lsof -i:22 设置匿名用户登陆 vsftp 服务器默认配置为容许匿名用户登陆,匿名用户叫作anonymous 这个用户在本地被映射为ftp 打开 /etc/vsftpd/vsftpd.conf,应该能够看到这些  # Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=YES 另外一个比较有用的选项是anno_max_rate,用于限制匿名用户的传输速率,在宽带资源并不很是充裕的状况下,能够考虑“委屈”一下 anonymous,这个选项后面的数值单位是bytes/秒,若是设置为0 将不受限制,例如将匿名用户传输的速率限制为20KB/s,那么能够这样设置 naon_max_rate=20000 而后记得重启FTP服务器,使其生效。 设置本地用户登陆 在一个网店内部,FTP更多的状况下被配置为向受权用户开放。为此,用户应该在服务器上拥有本身的账号。vsftpd 把这样的用户称之为“本地用户” (local users),这和其余FTP服务器所说的“真实用户(real users)” 是一回事。 要开启vsftpd 的这个功能,只要简单的取消配置文件中local_enable=YES前的注释符号#,若是在vsftpd.conf配置文件中找不到这一行,那就手动填上,当本地用户登陆到FTP上,所处的目录就是在服务器上的主目录,没有理由限制用户在本身的目录中建立、删除或是修改数据,在配置文件中取消write_enable=YES前的注释符号#能够打开本地用户的上传权限(若没有,则手动添加) # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES 重启生效 处于安全性的开考虑,有一些用户是不能被容许经过FTP登陆的,例如root用户。vsftpd将一些系统用户整理在/etc/vsftpd/ftpusers 中,经过cat命令查看这个文件获得以下信息 [root@mail ~]# cat /etc/vsftpd/ftpusers # Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody 这是一张黑名单,全部被列入其中的用户都不能经过FTP登陆进来,固然,尽管FTP的本意是组织外部FTP用户接触本地的系统信息,但管理员也能够简单地把那些“看不顺眼”的帐户放进去,这样就能够实现限制某些用户登陆FTP的功能了 限制用户在本地目录中 登陆到FTP的用户能够在服务器上处处浏览,查看普通的或是敏感的文件。这显然是任何一个管理员都不肯见到的事情。幸运的是,vsftpd提供了chroot(change root改变根目录)系统调用,使其余目录在使用者不可见,也不可访问 要开启这个选项,应该在/etc/vsftpd/vsftpd.conf找到chroot_root_user关键字,并修改为下面这样 chroot_local_user=YES 这样当用户试图进入一个系统目录是,vsftpd会提示失败,并委婉的拒绝这一请求 ftp> cd /etc/ 550 Filed to change directory. 相似的,管理员还能够指定下面这个选项,经过一个配置文件制定有哪些用户应该受到限制 chroot_list_enable=YES 配置文件经过chroot_list_file选项指定,下面这条设置将配置完呢间指定为/etc/vsftpd/vsftpd.chroot_list chroot_list_file=/etc/vsftpd/vsftpd.chroot_list /etc/vsftpd/vsftpd.chroot_list的格式应该和/etc/vsftpd/ftpusers 同样,每行一个用户 使用虚拟用户、 虚拟用户基于这样一种可以实现方式:全部非匿名用户的均被视为访客(guest),并被映射为一个特定的用户:用guest_username选项指定。管理员能够为每个用户设置主目录,并赋予相应的权限。虚拟用户很是适合那些须要为不一样用户提供FTP空间的站点。WEB 主机托管经常采用这样的方法:用户在本地编辑好网页,而后经过FTP上传到服务器上——首先要经过虚拟用户身份验证。 例如:一项任务,并包括下面这些需求     禁用匿名用户     为用户jcsmith和culva添加FTP虚拟用户     将他们的口令分别设置为jc123和cu123     将jcsmith的FTP主目录设置为/home/ftp/jcsmith,赋予它只读权限     将culva的FTP主目录设置为/home/ftp/culva,赋予它上传文件和创建目录的权限 建立虚拟用户的数据库文件 建立数据库文件须要DB这个工具,db工具经过读取一个特定格式的文本文件在建立数据库文件,这个用户应该为每一个用户预留2行,第一行是用户名,第二行是口令,在本例中,在主目录下创建文件login_user(文件名宁肯以任取),包含下面这些内容 jcsmith jc123 culva cu123 运行db_load 命令,经过~/login_user(由-f选项指定)建立数据库文件/etc/vsftpd_login.db(yum install db* -y) db_load -T -t hash -f /home/lewis/login_user /etc/vsftpd_login.db   -T选项知道db_load命令经过文本文件建立数据库,“-t hash”则指定了建立数据库的方式:这里使用了一种被称做“哈希表(Hash table)” 的数据结构,最后修改这个数据库问价你的权限,使其只对root用户可见 chmod 600 /etc/vsftpd_login.db 配置PAM验证 /etc/pam.d/vsftpd 是vsftpd默认使用的PAM验证文件,编辑这个文件,加入下面这两行 auth    required    /lib/security/pam_userdb.so db=/etc/vsftpd_login account    required    /lib/security/pam_userdb.so db=/etc/vsftpd_login 在/etc/pam.d/vsftpd 中本来就有的一些配置会干扰这里的设置。将其余全部的行都注释掉。 事实上,vsftpd使用的PAM文件是用配置文件(/etc/vsftpd/vsftpd.conf)中的pam_service_name=指定的。若是感到/etc/pam.d/vsftpd设置起来太麻烦。也可使用本身喜欢的名字在/etc/pam.d/下新建一个文件,而后把pam_service_name指向它。下面这条配置将vsftpd的PAM验证文件设置为/etc/pam.d/my_vsftpd pam_service_name=my_vsftpd 建立本地用户映射 下面设置将登陆进来的jcsmith和culva映射为一个指定的非特权用户。编辑vsftpd的配置文件/etc/vsftpd/vsftpd.conf,修改(或者添加) guest_username=ftp 这样jcsmith和culva 在登陆到FTP服务器后。就只有FTP用户的权限了,下面在配置文件中/etc/vsftpd/vsftpd.conf全部可能影响到的行 anonymous_enable=NO          ##不容许匿名用户登陆 local_enable=YES             ##容许本地用户登陆 chroot_local_user=YES        ##将用户限制在主目录中 pam_service_name=vsftpd      ##指定PAM验证文件(在/etc/pam.d/中) guest_enable=yes             ##激活访客(guest)身份 guest_username=ftp           ##设置登陆用户应该被映射成本地用户 其中local_enable=YES 和 guest_enable=YES 用于开启虚拟用户登陆。前者告诉vsftpd容许本地用(在本例中是jcsmith和culva)登陆到服务器;后者用于将全部的登陆用户视为访客(guest)。访客最终被映射为guest_username所指定的bending用户(在本例中是FTP) 设置用户目录和权限 到目前为止已经能够用jcsmith和culva这两个帐户登陆FTP服务器了,但他们还只能拥有相同的目录(/home/ftp)和权限。下面来完成最后的两个任务     将jcsmith的FTP主目录设置为/home/ftp/jcsmith,赋予它只读权限     将culva的FTP主目录设置为/home/ftp/culva,赋予它上传文件和创建目录的权限 首先为这两个用户创建各自的主目录。在本例中,虚拟用户登陆后自动被映射为本地的ftp用户,因此应该把这些目录的属主设置为ftp用户 mkdir /home/ftp/culva chown ftp /home/ftp/culva/ mkdir /home/ftp/jcsmith chwon ftp /home/ftp/jcsmith/ 接下来为两个用户设置不一样的目录和权限。vsftpd使用“user_config_dir=”这一选项来指定存放用户配置的目录。这里首先创建 mkdir /etc/vsftpd_user_conf 而后在/etc/vsftpd/vsftpd.conf中将user_config_dir选项指向它。如今配置文件中项管的行看起来像下面这样 anonymous_enable=NO          ##不容许匿名用户登陆 local_enable=YES             ##容许本地用户登陆 chroot_local_user=YES        ##将用户限制在主目录中 pam_service_name=vsftpd      ##指定PAM验证文件(在/etc/pam.d/中) guest_enable=yes             ##激活访客(guest)身份 guest_username=ftp           ##设置登陆用户应该被映射成本地用户 user_config_dir=/etc/vsftpd_user_conf ##存放用户配置文件的目录 最后在/etc/vsftpd_user_conf目录降低了jcsmith和culva这两个文本文件,分别存放和jcsmith和culva有关的配置。jcsmith的内容很是简单,只有一行 local_root=/home/ftp/jcsmith   ##这行指定了jcsmith在FTP服务器上的主目录 culva的配置文件以下 write_enable=YES    ##打开vsftpd的全局写权限 anon_upload_enable=YES  ##打开文件上传权限 anon_mkdir_write_enable=YES  ##打开创建目录的权限 local_root=/home/ftp/culva 至此就完成了FTP虚拟用户的设置,做为工做的最后一步,重启服务器老是必须的 service vsftpd restart
相关文章
相关标签/搜索