mount /media/cdrom/---------挂载光驱
rpm -ivh /media/cdrom/RedHat/RPMS/vsftpd-*
---------其中的*号可以按TAB键自动补齐
步骤三、配置匿名vsftpd服务器
vsftpd服务器最重要的是主配置文件vsftpd.conf。vsftpd守护进程运行时首先从vsftpd.conf文件获取配置文件的信息,然后配合ftpusers和userlist文件决定可访问的用户。下表列出了与vsftpd服务器相关的目录和文件。
文件/目录名 |
说明 |
/etc/vsftpd/vsftpd.conf |
Vsftpd服务器的主配置文件 |
/etc/vsftpd.ftpusers |
禁止访问vsftpd服务器的用户列表(只能做黑名单) |
/etc/vsftpd.user_list |
根据vsftpd.conf许可或禁者访问vsftpd服务器的用户列表文件(可做白名单和黑名单) |
/var/ftp |
匿名用户的默认文件目录 |
下表列出了vsftpd.conf文件中比较常用的部分配置参数。
参数名 |
说明 |
anonymouse_enable |
指定是否允许匿名登录,默认为YES |
local_enable |
指定是否允许本地用户登录,默认为YES |
write_enable |
指定是否开放写权限,默认为YES |
local_umask |
指定文件创建的初始权限 |
dirmessage_enable |
指定是否能浏览目录内信息 |
anon_upload_enable |
指定是否让匿名用户上传文件 |
anon_mkdir_write_enable |
指定是否让匿名用户创建文件夹 |
xferlog_enable |
指定是否启用日志功能 |
xferlog_std_format |
指定采用何种日志格式 |
xferlog_file |
指定日志文件的存放路径 |
connect_from_port_20 |
指定是否启用20端口进行数据连接 |
idle_session_timeout |
指定用户会话空闲多少时间(秒)后自动断开 |
data_connection_timeout |
指定数据连接空闲多少时间(秒)后自动断开 |
ftpd_banner |
指定登录时的欢迎信息 |
banner_file |
欢迎信息较长时可以使用某个文件内容作为欢迎信息,此参数指定该文件的路径 |
ascii_upload_enable |
指定是否允许使用ASCII格式上传文件 |
asii_download_enable |
指定是否允许使用ASCII格式下载文件 |
listen |
指定 vsftpd服务器的运行方式,默认为YES以独立方式运行 |
pam_service_name |
指定验证方式(默认为vsftpd) |
tcp_wrappers |
指定是否启用防火墙 |
chroot_list_enable |
指定是否启用锁定在主目录中的用户的列表 |
chroot_list_file |
锁定在主目录中的用户列表文件的路径 |
chroot_local_user |
锁定本地用户在自己的根目录中 |
userlist_enable |
指定是否启用user_list文件 |
userlist_file |
指定黑名单或者白名单的文件路径 |
userlist_deny |
指定名单是黑名单还是白名单(YES或NO) |
vsftpd服务器的默认设置是允许本地用户和匿名用户登录,本地用户默认进入其个人主目录(/home/账户名),并可以切换到其他有权访问的目录,还可以上传和下载文件。匿名用户只能下载/var/ftp/目录下的文件。默认情况下/var/ftp/目录下没有任何文件。
我们现在将vsftpd服务器配置为专用的匿名FTP服务器,仅允许匿名用户登录。匿名用户可在/var/ftp/pub目录中新建目录、上传和下载文件。输入以下命令:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak ------------对原始文件进行备份
vi /etc/vsftpd/vsftpd.conf -------------------确认如下参数的值
anonymouse_enable=yes
local_enable=no
write_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
connect_from_port_20=yes
listen=yes
tcp_wrappers=yes
保存退出。输入以下命令:
chmod o+w /var/ftp/pub ---修改/var/ftp/pub目录的权限允许其他用户写入文件
service vsftpd restart ---重启vsftpd服务
步骤四、测试匿名vsftpd服务器
(1)在windows计算机上,运行菜单项中输入:CMD
(2)进入字符界面下,输入:ftp 192.168.21.1
(3)连接到vsftpd服务器后,输入服务用户名,如:“tom”(本用户是本地用户)。屏幕会提示“530 This FTPserver is anonymous only. login failed”。
(4)待屏幕出现ftp提示符“ftp>”时,先输入“close”命令断开这次连接,然后输入“open 192.168.21.1”命令,再次连接到vsftpd服务器。输入匿名用户名“anonymous”,并在“Password:”后输入口令(邮件地址)或不输入口令直接回车,即可登录到服务器。
(5)在“ftp>”提示符后输入命令:
cd pub -------切换到匿名用户专用目录/var/ftp/pub
mkdir mydir -------新建一个mydir的目录
put abc.txt ------上传abc.txt文件
get abc.txt ------下载abc.txt文件
bye -----------关闭FTP命令行工具
步骤五、配置用户专用的vsftpd服务器
将vsftpd服务器配置成仅Linux用户可以使用的FTP服务器,用户只能操作其主目录,不能切换到其他目录。输入如下命令:
vi /etc/vsftpd/vsftpd.conf -------------------确认如下参数的值
anonymouse_enable=no
local_enable=yes
write_enable=yes
connect_from_port_20=yes
listen=yes
tcp_wrappers=yes
pam_service_name=vsftpd
userlist_enable=yes
chroot_local_user=yes
userlist_file=/etc/vsftpd.user_list
userlist_deny=yes -------------不允许vsftpd.user_list列表中的用户登录FTP服务器
保存退出。
注意:
限制某些本地用户登录服务器有多种方法:
(1) 直接编辑vsftpd.ftpusers文件,将禁止登录的用户名写入该文件中;
(2) 直接编辑vsftpd.user_list文件,将禁止登录的用户名写入该文件中,此时在vsftpd.conf文件中应设置“userlist_enable=yes”和“userlist_deny=yes”语句,则vsftpd.user_list文件中指定的用户不能访问FTP服务器。
(3) 直接编辑vsftpd.user_list文件,将允许登录的用户名写入该文件中,此时在vsftpd.conf文件中应设置“userlist_enable=yes”和“userlist_deny=no”语句,则只允许vsftpd.user_list文件中指定的用户访问FTP服务器。如果某用户同时出现在vsftpd.ftpusers和vsftpd.user_list文件中,那么该用户将不允许登录。这是因为vsftpd总是先执行vsftpd.user_list,再执行vsftpd.ftpusers文件。
编辑vsftpd.user_list文件,确认不允许登录的用户名单。
重启vsftpd服务:service vsftpd restart
步骤六、测试用户专用vsftpd服务器
(1)在windows计算机上,运行菜单项中输入:CMD
(2)进入字符界面下,输入:ftp 192.168.21.1
(3)连接到vsftpd服务器后,输入服务用户名,如:“anonymous”。屏幕会提示“530 Login incorrect. login failed”。
(4)待屏幕出现ftp提示符“ftp>”时,先输入“close”命令断开这次连接,然后输入“open 192.168.21.1”命令,再次连接到vsftpd服务器。输入用户名“tom”,并在“Password:”后输入口令后按回车,即可登录到服务器。
(5)在“ftp>”提示符后输入命令:
pwd ----------查看用户主目录
cd /etc -------屏幕会提示用户无权操作
mkdir mydir -------新建一个mydir的目录
put zeng.txt ------上传abc.txt文件
get zeng.txt ------下载abc.txt文件
bye -----------关闭FTP命令行工具
步骤七、配置虚拟账号vsftpd服务器
VSFTPD服务器提供了对虚拟用户的支持,它采用PAM认证机制实现了虚拟用户的功能。所谓虚拟用户,是批用户本身不是系统本地用户(即该用户账号信息不存在于/etc/passwd文件中),也不是匿名用户(因为匿名用户登录时都采用统一的用户名anonymous或ftp ),每个虚拟用户都可以有自己特定的用户名称,且虚拟用户名称都存放于独立的账号数据库中。在验证时,VSFTPD需要一个系统用户的身份来读取数据库文件或数据库服务器以完成验证过程,这就是VSFTPD的guest用户。正如匿名用户也需要一个系统用户ftp一样,也可以把guest用户看成是虚拟用户在系统中的代表。
(1) 首先我们创建虚拟用户数据库文件
Vi /etc/virtuserdb.txt
virtuser1
user001
virtuser2
user002
virtuser3
user003
保存退出。该文件的奇数行为虚拟用户名,偶数行为相应的口令。
然后执行如下命令生成虚拟用户数据库文件,并改变虚拟用户数据库文件的权限。
db_load -T -t hash -f /etc/virtuserdb.txt /etc/vsftpd/vsftpd.db
chmod 600 /etc/vsftpd/vsftpd.db
(2) 创建PAM认证文件,创建虚拟用户使用的PAM论证文件。
Vi /etc/pam.d/vsftpd.virtual
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd
该PAM认证配置文件中有两条规则:第一条规则的功能是设置利用pam_userdb.so模块来进行身份认证,主要是接受用户名和口令,进而对该用户的口令进行认证,并负责设置用户的一些秘密信息。其中采用的数据库是/etc/vsftpd/vsftpd.db文件(此处省略了文件名后面的“.db”);第二条规则的功能是检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间限制等,设置在进行账号授权时采用的数据库也是/etc/vsftpd/vsftpd.db文件
(3) 创建虚拟用户所对应的真实账号及其所登录的目录,并设置相应的权限。
useradd -d /var/virtuser virtuser
chmod 744 /var/virtuser
(4) 编辑/etc/vsftpd/vsftpd.conf文件,增加或修改的内容如下:
Vi /etc/vsftpd/vsftpd.conf
guest_enable=YES ………….激活虚拟用户登录功能
guest_username=virtuser ………指定虚拟用户所对应的真实用户
pam_service_name=vsftpd.virtual
….修改原文件中的pam_service_name值,设置PAM认证时所采用的文件名称。
保存退出。
步骤八、测试虚拟账户vsftpd服务器
(1)在windows计算机上,运行菜单项中输入:CMD
(2)进入字符界面下,输入:ftp 192.168.21.1
(3)连接到vsftpd服务器后,输入服务用户名,如:“virtuser”。并在“Password:”后输入口令后按回车,即可登录到服务器。
(5)在“ftp>”提示符后输入命令:
pwd ----------查看用户主目录
put abc.txt ------上传abc.txt文件
get abc.txt ------下载abc.txt文件
bye -----------关闭FTP命令行工具
注意:
有两点需要说明,一是vsftpd指定虚拟用户登录后,本地用户就不能登录了;二是虚拟用户在某种程度中更接近于匿名用户,包括上传、下载、修改文件名、删除文件等配置所使用的指令与匿名用户的指令是相同的。例如,如果要允许虚拟用户上传文件,则需要采用如下指令: anon_upload_enable=YES