安装vsftp时没有db_load这个命令该命令需要 db4-utils 的包正常情况下,执行
引用 rpm -qa|grep db4 会有3个包 引用 db4-devel-4.3.29-9.fc6 db4-utils-4.3.29-9.fc6 db4-4.3.29-9.fc6 如果缺少,则安装相应的包,rpm安装即可 centos上可以通过 引用 yum install db4-utils即可安装其它服务器上,则要到安装光盘上找,或者去网上下载
为vsftp建立虚拟用户 在RedHat AS里,是自带了vsftpd为系统提供了一个ftp服务,但在实际应用中根据自己的需要还是要做不少的配置。 我们知道,在建立vsftpd用户时,我们一般是在linux下建立用户useradd的方式来访问ftp,但有时我们只想提供ftp服务,而避免用户用ftp的帐号去登录linux,采用一般的方式只能是限制该用户的访问权限,但还是避免不了用户登录进linux系统,所以比较好的方法是用vsftpd的虚拟用户(virtual users)。 配置的步骤如下 1) Create the virtual users database.(建立虚拟用户数据库) 大家看一下logins.txt文件的格式,它的内容是: tom foo fred bar 意思是说用户tom的密码是foo,用户fred的密码是bar,这就是虚拟用户的信息,大家可以按 <用户名> <密 码> 的格式来建立自己的虚拟用户群。 然后以root用户登录系统,建立用户数据库: db_load -T -t hash -f logins.txt /etc/vsftpd_login.db 该命令会建立一个文件 /etc/vsftpd_login.db ,同时改变它的文件属性: chmod 600 /etc/vsftpd_login.db 2) Create a PAM file which uses your new database.(建立PAM文件,告诉系统你要使用自己的数据库了) 看看另一个文件vsftpd.pam,它有两行内容: auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 这是告诉系统,我将用新的用户授权库了。ok,把这个文件copy到/etc/pam.d/ftp: cp vsftpd.pam /etc/pam.d/ftp 3) Set up the location of the files for the virtual users(为虚拟用户建立文件夹) useradd -d /home/ftpsite virtual ls -ld /home/ftpsite (会得到以下输出): drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite然后: cp /etc/hosts /home/ftpsite chown virtual.virtual /home/ftpsite/hosts 4)修改vsftpd.conf文件 文件在/etc/vsftpd/vsftpd.conf,在后面加上: anonymous_enable=NO local_enable=YES write_enable=NO (注:这里可按需求设置) anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO chroot_local_user=YES guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd_user_conf 5)建立用户的权限 先mkdir /etc/vsftpd_user_conf //开放tom和fred的读权限 #echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/tom #echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/fred 这样就可以用读权限了,能看到目录和文件。 6)重启vsftpd service vsftpd restart ok,用tom用户登录ftp看看,是不是已经可以了特别注意:1。如果要删除掉一个虚拟用户,先在logins.txt中删除用户对应的用户名和密码,然后删除vsftpd_login.db,重新运行db_load -T -t hash -f logins.txt /etc/vsftpd_login.db2。如果只是要修改用户的密码,只需重新运行db_load就可以3。如果要改变用户的其它配置,只需修改用户的配置文件
