作者:mobiledu2502868917 | 来源:互联网 | 2014-05-28 09:06
一、安装vsftp和db4sudoapt-getinstallvsftpdsudoapt-getinstalldb4.8-util二、建立虚拟用户口令库文件sudomkdir/etc/vsftpd新建名为logins.txt的用户口令文件,sudogedit/etc/vsftpd/logins.txt奇数行为用户名。偶
一、 安装vsftp和db4
sudo apt-get install vsftpd
sudo apt-get install db4.8-util
二、建立虚拟用户口令库文件
sudo mkdir /etc/vsftpd
新建名为logins.txt的用户口令文件,
sudo gedit /etc/vsftpd/logins.txt
奇数行为用户名。偶数行为密码,如下用户User1的密码为123456,User2的密码为12345
User1
123456
User2
12345
admin
admin
三、生成vsftpd的认证文件
使用db_load命令生成认证文件:
sudo db4.8_load -T -t hash -f /etc/vsftpd/logins.txt
/etc/vsftpd/vsftpd_login.db
将vsftpd_login.db的权限设为只对root可读写,即600
chmod 600 /etc/vsftpd/vsftpd_login.db
四、建立虚拟用户所需的PAM配置文件
在/etc/pam.d目录中建立vsftpd.vu内容如下
sudo gedit /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
五、建立虚拟用户所需的系统用户和主目录
sudo useradd jtmvi -d /www -s /bin/false
sudo chown jtmvi.jtmvi /www
sudo chown jtmvi.jtmvi /www/User1
sudo chown jtmvi.jtmvi /www/User2
六、设置vsftpd.conf配置文件:(记得先备份)
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_bak #备份
gedit /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=jtmvi
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
七 、对不同的虚拟用户设置不同权限
sudo mkdir /etc/vsftpd_user_conf
gedit /etc/vsftpd_user_conf/User1
write_enable=YES
anon_world_readable_Only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User1
gedit /etc/vsftpd_user_conf/User2
write_enable=YES
anon_world_readable_Only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User2
gedit /etc/vsftpd_user_conf/admin
write_enable=YES
anon_world_readable_Only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www
八、重启vsftpd
sudo service vsftpd restart
现在应该能通过ftp连接,连接后上传文件可能会出现:500 OOPS: vsftpd: refusing to run with
writable root inside chroot()
这个错误,然后google之,发现这是由于vsftpd升级了安全性验证的缘故:
- Add stronger checks for the configuration error of running
with a writeable
root directory inside a chroot(). This may bite people who
carelessly turned
on chroot_local_user but such is life.
简而言之,就是说如果开启了chroot来控制用户路径,则用户不能再具有 根目录 的 写 的权限。。。
把用户根目录的 写 权限 去掉就可以解决问题了。
其实我觉得这样有点不方便,因为这样需要在用户根目录下建一个文件夹 然后给它赋予 写 的权限,
然后用户登陆进去会发现必须要再进一层目录才能找到自己的文件。。。这样有点不太方便,当然提高了安全性这一点不可否认。。