|
楼主 |
发表于 2010-10-20 11:21:10
|
显示全部楼层
2、使用本地用户登录
# ftp 172.16.16.121
Connected to 172.16.16.121.
220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.16.121:root): aa
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (172,16,16,121,223,86)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 19 May 26 03:48 11.txt
226 Directory send OK.
使用put命令可以将ftp客户机中的文件上传到ftp服务器中。
ftp> put 22.txt
local: 22.txt remote: 22.txt
227 Entering Passive Mode (172,16,16,121,86,19)
150 Ok to send data.
226 File receive OK.
30 bytes sent in 0.00086 seconds (34 Kbytes/s)
使用get命令可以将ftp服务器中的文件下载到ftp客户机中。
ftp> get 22.txt
local: 22.txt remote: 22.txt
227 Entering Passive Mode (172,16,16,121,143,82)
150 Opening BINARY mode data connection for 22.txt (30 bytes).
226 File send OK.
30 bytes received in 0.0005 seconds (58 Kbytes/s)
不过使用本地ftp用户账号存在一定的安全性,首先它是系统账号,一旦ftp服务器出现安全漏洞会对整个ftp服务器所在的linux主机造成威胁;另外就是本地用户账号可以离开用户宿主目录,转换到系统中的其他目录中,这对系统的安全有着一定的威胁。
可是设置ftp本地用户禁锢在宿主目录中,这样可以防止它切换到其他的目录中。
在vsftpd服务器的配置文件vsftpd.conf中添加配置项chroot_local_user设置为YES,vsftpd服务器将会把本地用户禁锢在用户宿主目录中。
chroot_local_user=YES
配置完后记得要重启服务,这样ftp本地用户就只可以访问自己的目录了。
配置ftp服务器的虚拟目录
在vsftpd服务器中支持匿名用户、本地用户和虚拟用户3类用户账号
在前面认识了两种,其中匿名用户是名为anonymous或ftp的ftp用户,匿名ftp用户登录后将ftp服务器中的"/var/ftp"作为ftp根目录。匿名用户通常用于提供公共文件的下载。
本地用户账号时ftp服务器中的系统用户账号,使用ftp本地用户账号登录ftp服务器后,登录目录为本地用户的宿主目录。本地ftp用户账号通常和web服务器一起提供虚拟主机服务,作为网页虚拟主机更新网页的途径。
虚拟用户账号时为了保证ftp服务器的安全性,由vsftpd服务器提供的非系统用户账号。虚拟用户ftp登录后将把指定的目录作为ftp根目录。虚拟用户与本地用户具有类似的功能。
虚拟用户账号的设置过程
1、建立虚拟用户口令库文件.
建立虚拟用户的口令库,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令.
使用文本编辑器建立名为logins.txt的用户口令库文件
# vi logins.txt
ee
123
rr
456
2、生成vsftpd的认证文件.
首先我们需要安装一下db4-utils-4.2.52-7.1.i386.rpm,在第3张光盘中.
# cd /media/cdrom/RedHat/RPMS/
# rpm -ivh db4-utils-4.2.52-7.1.i386.rpm
warning: db4-utils-4.2.52-7.1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
package db4-utils-4.2.52-7.1 is already installed
然后使用db_load命令生成认证文件,"-f"命令选项设置的值时虚拟用户的口令库文件,即:logins.txt.命令的参数设置为需要生成的认证文件名vsftpd_login.db,该文件放置在目录"/etc/vsftpd"中.
# db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
设置vsftpd_login.db文件的权限只对root用户可读可写.即600.
# chmod 600 /etc/vsftpd/vsftpd_login.db
[root@benet01 ~]# ls -l /etc/vsftpd/vsftpd_login.db
-rw------- 1 root root 12288 May 26 12:54 /etc/vsftpd/vsftpd_login.db
3、建立虚拟用户所需的PAM配置文件.
在"/etc/pam.d"目录中建立vsftpd虚拟用户身份认证所需的PAM配置文件,名称为vsftpd.vu.
# vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
# cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
4、建立虚拟用户及所要访问的目录并设置相应权限.
建立vsftpd虚拟用户所需的系统用户账号,账号为zhen,指定用户的宿主目是"/home/ftpsite/",设置宿主目录的权限是700(vsftpd服务器中的所有虚拟用户账号登录后都将在"/home/ftpsite"目录中)
# useradd -d /home/ftpsite zhen
# chmod 700 /home/ftpsite
5、设置vsftpd.conf配置文件
在对vsftpd.conf配置文件修改前,先将它原来的文件备份,以便出现配置错误时可进行恢复.
# cd /etc/vsftpd
# cp vsftpd.conf vsftpd.conf.bak
在vsftpd.conf配置文件添加虚拟用户的配置项:
guest_enable=yes
guest_username=zhen
pam_service_name=vsftpd.vu
所有配置完成后,重新启动vsftpd服务程序
# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
可以对不同的用户设置不同的权限.
vsftpd服务器中的虚拟用户可以灵活的针对不同的用户账号设置不同的用户权限:
1、设置主配置文件
在vsftpd配置文件中添加user_config_dir配置项,并设置用户配置文件的保存路径
user_config_dir=/etc/vsftpd_user_conf(设置在"/etc/vsftpd_user_conf"目录中保存虚拟用户的配置文件.)
2、建立用户配置文件目录
# mkdir /etc/vsftpd_user_conf
3、为虚拟目录建立单独的配置文件
为用户建立独立的配置文件,配置文件名称和用户名相同,并给他相应的权限.
# vi /etc/vsftpd_user_conf/rr
anon_world_readable_only=no //表示用户可以浏览ftp目录和下载文件.
# ftp 172.16.16.121
Connected to 172.16.16.121.
220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (172.16.16.121:root): rr
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (172,16,16,121,250,156)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 29 May 26 05:27 44.txt
-rw-r--r-- 1 0 0 0 May 26 05:30 55.txt
-rw-r--r-- 1 503 503 0 May 26 05:24 afile
-rw-r--r-- 1 503 503 0 May 26 06:10 file01 |
|