vsftpd安装与vsftpd虚拟用户的实现(源码包)
来自:Linux爱好者之家
vsftpd源码包在本站Download中(http://linux.pchk.com)下载.
先检查目录和权限,可能存在。(如果已经自带安装vsftpd了,先删了rpm -e xxxxxxx)
useradd nobody
mkdir /usr/share/empty
mkdir /var/ftp
useradd -d /var/ftp ftp
chown root.root /var/ftp
chmod og-w /var/ftp
解包 tar zxvf vsftpd-1.2.2.tar.gz
cd vsftpd-1.2.2
make
make install
设置运行的方式,到xinetd中,修改
vi /etc/xinetd.d/vsftpd 将 disable=yes 改为no
这样就可以用xinetd控制了 ,命令:
service xinetd restart
然后测试 ftp ip (如果没有问题,本地用户应该可以登陆,但是login faild,这是缺少本地用户认证pam文件,所以要从刚刚编译好的文件中复制过来)
cp RedHat/vsftpd.pam /etc/pam.d/ftp (没有这步将不能本地登陆)
cp vsftpd.conf /etc/vsftpd.conf (配置文件,没有这个文件,只能匿名)
然后配置一下vsftpd.conf文件,就可以本地登陆了
vi /etc/vsftpd.conf
anonmous_enable=NO (禁匿名)
Local_enable=YES (本地可以登陆)
write_enable=YES (本地写权限)
local_umask=022
重启xinetd 然后测试
service xinetd restart
ftp ip
本地登陆应该没有问题了 。
当然,我们应该使用独立的FTP服务,修改xinetd中vsftpd脚本文件
vi /etc/xinetd.d/vsftpd 将disable=no 改成yes
然后再修改vsftpd.conf文件
vi /etc/vsftpd.conf 添加一句 Listen=YES
重启xinetd服务 service xinetd restart
然后启动vsftpd服务
/usr/local/sbin/vsftpd /etc/vsftpd.conf &
这样就可以使用独立的服务了
使用非常规端口,(不用21端口)
vi /etc/vsftpd.conf 添加 listen_port=2122
然后杀掉vsftpd进程 killall -9 vsftpd
然后启动 /usr/local/sbin/vsftpd /etc/vsftpd.conf &
然后测试 ftp ip 2122
^^^^^^^^^^^^^^^^
以上是安装和配置过程,下面就是虚拟用户的实现了
目标:建3个虚拟用户
1,ftpupload 可以上传下载,新建文件夹 ,但不能删除文件和文件夹 ,不能重命名文件
2,ftpdownload 只能下载 (一般提供这个用户)
3,ftpadmin 有ftpupload权限 还有删除和重命名文件的权限。
注:虚拟用户顾名思义,只能登陆FTP,不能登陆系统,并缩定在自家目录中
方法:
1,建logins.txt文件 ,作用就是存放虚拟用户用户名和密码 用vi 建
vi logins.txt
ftpupload
123 (这里是你为ftpupload用户设置的密码)
ftpdownload
456
ftpadmin
789
然后建用户库文件
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db
当然还需要虚拟用户认证文件
cd vsftpd-1.2.2/EXAMPLE
cp VIRYUAL_USERS/vsftpd.pam /etc/pam.d/ftp.vu
建个目录/home/ftptest 是存放FTP文件地方
然后再建个用户,这个用户就是虚拟用户的映射用户
useradd -d /home/ftptest virtual
chmod 700 /home/ftptest
chown virtual.virtual /home/ftptest (注意,如果没有virtual组要先建个)
vi /etc/vsftpd.conf (修改配置文件,加虚拟用户)
添加
guest_enable=YES (启用虚拟用户)
guest_username=virtual (虚拟用户映射本地用户)
pam_service_name=ftp.vu (指定pam配置文件)
user_config_dir=/etc/vsftpd_user_conf (不同的虚拟用户配置文件的存拍柯?
然后建vsftpd_user_conf目录
mkdir /etc/vsftpd_user_conf
建ftpdownload用户文件,只能下载
vi ftpdownload
anon_word_readable_only=NO
建ftpupload 用户文件,可以上传下载,新建文件夹 ,但不能删除文件和文件夹 ,不能重命名文件。
vi ftpupload
anon_word_readable_only=NO
write_enable=YES 增加写权限
anon_upload_enable=YES 增加上传权限
anon_mkdir_write_enable=YES 增加创建目录权限
然后再建ftpadmin用户文件,就是在ftpupload文件基础上 ,添加删除权限
cp /etc/vsftpd_user_conf/ftpupload /etc/vsftpd_user_conf/ftpadmin
vi ftpadmin
添加 anon_other_writer_enable=YES 增加删除权限
重启vsftpd服务
killall -9 vsftpd
然后启动 /usr/local/sbin/vsftpd /etc/vsftpd.conf &
分别用ftpdownload,ftpupload,ftpadmin用户登陆。
OK,设置成功....................................
以上就是我学vsftpd的手记,希望能给大家些帮助,当然还有些vsftpd.conf中基本的参数,这里就不列出了
我的vsftpd.conf文件如下:
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
#connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.log
直到看了以上文章才解决问题:
1。本地用户无法登陆,原因:没有把pam文件拷贝过去
2。匿名用户无法登陆,原因:没有把/var/ftp的权限设置正确。