⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vsftp配置大全---超完整版 网络应用 linux技术中坚站.htm

📁 在Linux下使用GCC编制的FTP服务器
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                  <BR>anon_other_write_enable=NO <BR>chroot_local_user=YES 
                  <BR>guest_enable=YES <BR>guest_username=vsftpd 
                  //这两行的意思是采用虚拟用户形式 <BR>virtual_use_local_privs=YES 
                  //虚拟用户和本地用户权限相同 <BR><BR>pasv_enable=YES //建立资料联机采用被动方式 
                  <BR>pasv_min_port=30000 //建立资料联机所可以使用port 范围的上界,0表示任意。默认值为0。 
                  <BR>pasv_max_port=30999 //建立资料联机所可以使用port 范围的下界,0表示任意。默认值为0。 
                  <BR>(7)启动程序 <BR># /usr/local/sbin/vsftpd-pam 
                  /etc/vsftpd-pam.conf &amp; <BR>(8)测试连通及功能 <BR># vi 
                  /home/vsftpd/test //建立一个文件,内容如下 <BR>1234567890 <BR># chown 
                  vsftpd.vsftpd /home/vsftpd/test <BR><BR># ftp 127.0.0.1 
                  <BR>Connected to 127.0.0.1. <BR>220 (vsFTPd 2.0.3) <BR>530 
                  Please login with USER and PASS. <BR>530 Please login with 
                  USER and PASS. <BR>KERBEROS_V4 rejected as an authentication 
                  type <BR>Name (127.0.0.1:root): xuchen <BR>331 Please specify 
                  the password. <BR>Password: <BR>230 Login successful. 
                  <BR>Remote system type is UNIX. <BR>Using binary mode to 
                  transfer files. <BR>ftp&gt; pwd <BR>257 \"/\" <BR>ftp&gt; size 
                  test <BR>213 11 <BR>ftp&gt; quit <BR>221 Goodbye. 
                  <BR>OK,用户名为xuchen,密码为12345可以连接到FTP服务器,看不到文件列表,但可以下载已知文件名的文件,不能上传文件,非常安全吧!! 
                  <BR><BR>如果我们需要用户看到文件,怎么办?也好办,在配置文件中加入如下语句: 
                  <BR>anon_world_readable_only=NO 
                  &nbsp;//匿名登入者不能下载可阅读的档案,默认值为YES 
                  <BR><BR>如果需要让用户上传文件和下载文件分开,建议如下这么做 <BR># vi /home/logins.txt 
                  <BR>xuchen <BR>12345 <BR>upload <BR>45678 
                  <BR>//首先建立虚拟用户upload,密码为45678 <BR># db_load -T -t hash -f 
                  /home/logins.txt /etc/vsftpd_login.db //更新数据文件 <BR><BR># mkdir 
                  /home/vsftpd/upload <BR># vi /etc/vsftpd-pam.conf 加入如下语句 
                  <BR>user_config_dir=/etc/vsftpd_user_conf <BR># mkdir 
                  /etc/vsftpd_user_conf <BR># vi /etc/vsftpd_user_conf/upload 
                  文件内容如下 <BR>local_root=/home/vsftpd/upload <BR>write_enable=YES 
                  <BR>anon_world_readable_only=NO <BR>anon_upload_enable=YES 
                  <BR>anon_mkdir_write_enable=YES 
                  <BR>anon_other_write_enable=YES <BR><BR># chmod 700 
                  /home/vsftpd/upload <BR># chown vsftpd.vsftpd 
                  /home/vsftpd/upload/ 
                  <BR><BR>这样,xuchen用户可以下载/home/vsftpd里的文件及upload里的文件,而upload用户可以上传和下载/home/vsftpd/upload文件夹的东西,但不能到/home/vsftpd里下载文件,很简单得实现了分用户上传和下载 
                  <BR><BR>对于用Mysql库存储用户名及密码的方式来说: 
                  <BR>就是把用户名和密码放在mysql库里,实现起来也相当简单 <BR>(1)建立一个库并设置相应权限 <BR># 
                  mysql –p <BR>mysql&gt;create database ftpd; <BR>mysql&gt;use 
                  ftpd; <BR>mysql&gt;create table user(name char(20) 
                  binary,passwd char(20) binary); <BR>mysql&gt;insert into user 
                  (name,passwd) values (\'test1\',\'12345\'); 
                  <BR>mysql&gt;insert into user (name,passwd) values 
                  (\'test2\',\'54321\'); <BR>mysql&gt;grant select on ftpd.user 
                  to ftpd@localhost identified by \'123456\'; <BR>mysql&gt;flush 
                  privileges; 刷新权限设置 <BR>mysql&gt;quit 
                  <BR>(2)下载libpam-mysql进行安装编译 <BR>下载地址如下: <BR></FONT><A 
                  href='http://www.chinalinuxpub.com/"http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz/"' 
                  target=_blank><FONT size=2><A 
                  href="http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz" 
                  target=_blank>http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz</A></FONT></A><FONT 
                  size=2> <BR>假设我们把它放在了/home/xuchen目录下 <BR># cd /home/xuchen 
                  <BR># tar xzvf pam_mysql-0.5.tar.gz <BR># cd pam_mysql <BR># 
                  make <BR># cp pam_mysql.so /lib/security <BR>(3)建立PAM认证信息 
                  <BR># vi /etc/pam.d/ftp ,内容如下 <BR>auth required 
                  /lib/security/pam_mysql.so user=ftpd passwd=123456 
                  host=localhost db=ftpd table=user usercolumn=name 
                  passwdcolumn=passwd crypt=0 <BR><BR>account required 
                  /lib/security/pam_mysql.so user=ftpd passwd=123456 
                  host=localhost db=ftpd table=user usercolumn=name 
                  passwdcolumn=passwd crypt=0 <BR><BR>注意: <BR>crypt= n 
                  <BR>crypt=0: 明文密码 <BR>crypt=1: 
                  使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt) <BR>crypt=2: 
                  使用MYSQL中的password()函数加密 <BR>crypt=3:表示使用md5的散列方式 
                  <BR>(4)建立本地虚拟用户 <BR># useradd -d /home/ftpd -s /sbin/nologin 
                  ftpd <BR><BR>(5)下面就差修改vsftpd.conf文件了,我把我的提供给大家参考吧:) <BR># vi 
                  /etc/vsftpd-pam1.conf <BR>anonymous_enable=NO 
                  <BR>local_enable=YES <BR>write_enable=YES <BR>local_umask=022 
                  <BR>anon_upload_enable=YES <BR>anon_mkdir_write_enable=YES 
                  <BR>anon_other_write_enable=YES <BR>chroot_local_user=YES 
                  <BR>guest_enable=YES <BR>guest_username=ftpd <BR>listen=YES 
                  <BR>listen_port=21 <BR>pasv_enable=YES <BR>pasv_min_port=30000 
                  <BR>pasv_max_port=30999 <BR>anon_world_readable_only=NO 
                  <BR>virtual_use_local_privs=YES 
                  <BR><BR>#user_config_dir=/etc/vsftpd_user_conf 
                  <BR>可以看出,和前面的用db库来验证没有多大区别,其实就是一个东西,一个用mysql来验证,一个用db库,我个人比较倾向于用db库来验证,在这个环境下,相对于Mysql来说,安全系数更高一点。 
                  <BR><BR>(6)# /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam1.conf 
                  &amp; &nbsp; //以后台方式启动 <BR><BR>(7)测试连通 <BR># ftp 127.0.0.1 
                  <BR>Connected to 127.0.0.1. <BR>220 (vsFTPd 2.0.3) <BR>530 
                  Please login with USER and PASS. <BR>530 Please login with 
                  USER and PASS. <BR>KERBEROS_V4 rejected as an authentication 
                  type <BR>Name (127.0.0.1:root): test1 <BR>331 Please specify 
                  the password. <BR>Password: <BR>230 Login successful. 
                  <BR>Remote system type is UNIX. <BR>Using binary mode to 
                  transfer files. <BR>ftp&gt; pwd <BR>257 \"/\" <BR>ftp&gt; quit 
                  <BR>221 Goodbye. <BR>看,成功了!!这样就实现了mysql的认证方式,很简单吧?? 
                  <BR><BR>4、为FTP增加磁盘配额,从而避免恶意用户用垃圾数据塞满你的硬盘 
                  <BR>我首先要说的是这个功能是系统自带的,而不是vsftp 
                  的功能之一,千万别搞混了。好了,我们先假设我们的系统用户ftpd的主目录是/home/ftpd,它是建立在/home分区中,那么如果我们要对ftpd用户进行磁盘限额,那我们需要修改/etc/fstab中根分区的记录,将/home分区的第4个字段改成defaults,usrquota,如下: 
                  <BR>LABEL=/home &nbsp; /home &nbsp; ext3 &nbsp; 
                  &nbsp;defaults,usrquota &nbsp; &nbsp; 1 2 <BR># reboot 
                  &nbsp;//重新启动系统使设置生效 <BR>也可以用 <BR># mount -o remount /dev/sda6 
                  &nbsp;///dev/sda6的挂接点就是/home,这样可以不用启动系统。 
                  <BR>这里我还要说明一下,如果我们对一个组进行磁配额,那我们需要增加参数grpquota,例如 
                  <BR>LABEL=/home &nbsp; /home &nbsp; ext3 &nbsp; 
                  &nbsp;defaults,grpquota &nbsp; &nbsp; 1 2 <BR>也可以 
                  <BR>LABEL=/home &nbsp; /home &nbsp; ext3 &nbsp; 
                  &nbsp;defaults,usrquota,grpquota &nbsp; &nbsp; 1 2 
                  <BR>你想怎么限制都可以,自己组合参数吧。 <BR># quotacheck -avu 
                  <BR>说明:a-自动开启挂载文件系统的配额,v-显示信息,u-启用用户配额or g-启用组配额 <BR># edquota 
                  ftpd //为用户ftpd设置磁盘配额 <BR>OR <BR># edquota -g grp 
                  &nbsp;//为组grp设置磁盘配额 <BR>系统会自动打开配额文件,如下: <BR>Disk quotas for 
                  user ftpd (uid 502): <BR>&nbsp;Filesystem &nbsp; &nbsp; &nbsp; 
                  &nbsp; blocks &nbsp; &nbsp; &nbsp; soft &nbsp; &nbsp; &nbsp; 
                  hard &nbsp; &nbsp; inodes &nbsp; &nbsp; soft &nbsp; &nbsp; 
                  hard <BR>&nbsp;/dev/sda6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
                  424 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; 
                  &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp; 13 &nbsp; &nbsp; 
                  &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;0 
                  <BR>第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 
                  列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace 
                  period),默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 
                  0,那个限度就不会被设置。我设置了硬块限度为1KB,是为了测试方便。 <BR># quotaon &nbsp;-avu 
                  &nbsp;//打开磁盘配额监控进程,u是用户g是组,这里我没设置g参数 
                  <BR>要校验用户的配额是否被设置,我们可以使用以下命令: <BR># quota ftpd <BR>Disk quotas 
                  for user ftpd (uid 502): <BR>&nbsp;Filesystem &nbsp;blocks 
                  &nbsp; quota &nbsp; limit &nbsp; &nbsp;grace &nbsp; files 
                  &nbsp; quota &nbsp; limit &nbsp; grace <BR>/dev/sda6 &nbsp; 
                  &nbsp; 424* &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp;1 &nbsp; &nbsp; 
                  &nbsp; &nbsp; &nbsp; &nbsp;13 &nbsp; &nbsp; &nbsp;0 &nbsp; 
                  &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp; <BR># edquota 
                  –t(-g)来设置过渡期(grace period) //当然只针对软限制而言 <BR>和另一个 edquota 
                  命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额: <BR>Grace period before 
                  enforcing soft limits for users: <BR>Time units may be: days, 
                  hours, minutes, or seconds <BR>&nbsp;Filesystem &nbsp; &nbsp; 
                  &nbsp; &nbsp; &nbsp; &nbsp; Block grace period &nbsp; &nbsp; 
                  Inode grace period <BR>/dev/sda6 &nbsp; &nbsp; &nbsp; &nbsp; 
                  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 7days &nbsp; &nbsp; 
                  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7days 
                  <BR>按你的需要修改后存盘退出 <BR>用以下命令显示磁盘配额使用状态 <BR># repquota &nbsp;-a 
                  &nbsp;或 repquota &nbsp;/dev/sda6(用户配额) <BR># repquota -g -a 或 
                  repquota -a /dev/sda6 (组的配额) <BR>如果一切按照你的意思实施了,那么我们就进行测试了!如下图4 
                  <BR><BR>我们传了一个&gt;1k的文件,没有成功,这样我们就成功的为用户ftpd增添了磁盘配额,要是哪一天你不想加磁盘配额了,怎么办?参看如下命令: 
                  <BR>取消某个文件系统的配额限制 <BR>#quotaoff &nbsp;-vug /dev/sda6 
                  &nbsp;//删除home分区的磁盘限额 <BR>#删除/etc/fstab中设置配额的部分 
                  <BR>修改软配额的最大超越时间 <BR>注意: 
                  <BR>/,/boot/,/proc,/mnt/cdrom等不要使用配额,没用。而且磁盘配额不适合FAT和FAT32系统。 
                  <BR>以后当新设置了某个用户的配额,可以使用如下命令,马上生效。 <BR># quotacheck -auvgm 
                  &nbsp; &nbsp; &nbsp; --是不尝试重新挂载文件系统 <BR><BR>备注: 
                  <BR>1、vsftpd配置参数详细整理 <BR>#接受匿名用户 <BR>anonymous_enable=YES 
                  <BR>#匿名用户login时不询问口令 <BR>no_anon_password=YES <BR>#匿名用户主目录 
                  <BR>anon_root=(none) <BR>#接受本地用户 <BR>local_enable=YES 
                  <BR>#本地用户主目录 <BR>local_root=(none) 
                  <BR>#如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录 
                  <BR>deny_email_enable=YES 
                  <BR>#仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录 <BR>check_shell=YES 
                  <BR>#若启用此选项,userlist_deny选项才被启动 <BR>userlist_enable=YES 
                  <BR>#若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录 
                  <BR>userlist_deny=NO 
                  <BR>#如果和chroot_local_user一起开启,那么用户锁定的目录来自/etc/passwd每个用户指定的目录(这个不是很清楚,很哪位熟悉的指点一下) 
                  <BR>passwd_chroot_enable=NO <BR>#定义匿名登入的使用者名称。默认值为ftp。 
                  <BR>ftp_username=FTP 
                  <BR><BR>#################用户权限控制############### 
                  <BR>#可以上传(全局控制). <BR>write_enable=YES <BR>#本地用户上传文件的umask 
                  <BR>local_umask=022 <BR>#上传文件的权限配合umask使用 
                  <BR>#file_open_mode=0666 <BR>#匿名用户可以上传 
                  <BR>anon_upload_enable=NO <BR>#匿名用户可以建目录 
                  <BR>anon_mkdir_write_enable=NO <BR>匿名用户其它的写权利(更改权限?) 
                  <BR>anon_other_write_enable=NO 
                  <BR>如果设为YES,匿名登入者会被允许下载可阅读的档案。默认值为YES。 
                  <BR>anon_world_readable_only=YES 
                  <BR>#如果开启,那么所有非匿名登陆的用户名都会被切换成guest_username指定的用户名 
             

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -