CentOS 5.3系统设置vsftpd虚拟用户的具体步骤
时间:2014-11-01 01:06 来源:linux.it.net.cn 作者:it
我们登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。
匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。
本地用户登录:使用系统用户登录,在/etc/passwd中。
虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。
FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。
本文的Linux系统是CentOS 5.3
yum -y install vsftpd
一、建立Vsftpd虚拟用户:
1、添加虚拟用户口令文件安装Vsftpd
[root@51ou.com ~]#vi /etc/vsftpd/vftpuser.txt
添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。
ftp1 #用户名
123456 #密码
ftp2 #用户名
123456 #密码
2、生成虚拟用户口令认证文件
将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。
首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。
下面使用db_load命令生成虚拟用户口令认证文件。
[root@51ou.com ~]# db_load -T -t hash -f /home/vuser.txt /etc/vsftpd_login.db
-bash: db_load: command not found
###############################
出现没有db_load的提示是因为有些db4的包没有安装,需要安装下列包:
db4-*.rpm
db4-tcl-*.rpm
db4-utils-*.rpm
或者直接: yum -y install db4 db4-tcl db4-utils
db_load命令主要是用来生成db数据库使用的
格式:
db_load -T -t hash -f passwd.txt /etc/vsftpd/user_passwd.db
生成一个hash码型的数据库文件供ftp虚拟用户使用。
##########################
[root@51ou.com ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
3、编辑vsftpd的PAM认证文件
在/etc/pam.d目录下,
[root@51ou.com ~]#vi /etc/pam.d/vsftpd
将里面其他的都注释掉,添加下面这两行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
4、建立本地映射用户并设置宿主目录权限
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
[root@51ou.com ~]#useradd -d /home/vftpsite -s /sbin/nologin vftpuser
[root@51ou.com ~]#chmod 755 /home/vftpsite //网上为700,设置为700后FTP用户无上传权限
5、配置vsftpd.conf(设置虚拟用户配置项)
[root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf
guest_enable=YES #开启虚拟用户
guest_username=vftpuser #FTP虚拟用户对应的系统用户[useradd -d /home/vftpsite -s
/sbin/nologin vftpuser]
pam_service_name=vsftpd #PAM认证文件
6、重启vsftpd服务
[root@51ou.com ~]#service vsftpd restart
7、测试虚拟用户登录FTP
C:\Documents and Settings\Administrator>ftp 192.168.2.12
Connected to 192.168.2.12.
220 (vsFTPd 2.0.5)
User (192.168.2.12:(none)): ftp1
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/vftpsiteConnection closed by remote host
.//在配置vsftpd的时候连接vsftpd出现了500 OOPS: cannot change directory:/home/vftpsite
的错误,vftpsite为登录时使用的本地用户名。
解决办法:
[root@51ou.com ~]# setsebool -P ftp_home_dir on
也有网上说在终端输入命令:
setsebool -P ftpd_disable_trans 1
service vsftpd restart
就OK了!
测试:
C:\Documents and Settings\Administrator>ftp 192.168.2.12
Connected to 192.168.2.12.
220 (vsFTPd 2.0.5)
User (192.168.2.12:(none)): ftp1
331 Please specify the password.
Password:
230 Login successful.
二、虚拟用户高级设置:
1、virtual_use_local_privs参数
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除
、重命名)。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。
2. 建立各个虚拟用户自身的配置文件
[root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf
添加:
user_config_dir=/etc/vsftpd/vsftpd_user_conf
[root@51ou.com ~]#mkdir /etc/vsftpd/vsftpd_user_conf
编辑ftp1的配置文件
[root@51ou.com ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp1
添加:
anon_world_readable_only=NO #开放ftp1的下载权限(只能下载)。注意这个地方千万不能写成YES
,否则ftp1将不能列出文件和目录。
编辑ftp2的配置文件
[root@51ou.com ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp2
添加:
write_enable=YES #开放ftp2的写权限
anon_world_readable_only=NO #开放ftp2的下载权限
anon_upload_enable=YES #开放ftp2的上传权限
anon_mkdir_write_enable=YES #开放ftp2创建目录的权限
anon_other_write_enable=YES #开放ftp2删除和重命名的权限
3、所有虚拟用户使用一般配置
[root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf
write_enable=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=vftpuser
virtual_use_local_privs=NO
pam_service_name=vsftpd
anon_world_readable_only=NO #可以下载
anon_upload_enable=NO(默认值) #不能上传
anon_mkdir_write_enable=NO(默认值) #不能新建文件夹
anon_other_write_enable=NO(默认值) #不能删除和重命名文件
ftpd_banner=Welcome to yoozhu FTP server
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
tcp_wrappers=NO
setproctitle_enable=YES
listen_port=21
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=0
max_per_ip=3
local_max_rate=512000
4、各个虚拟用户使用自身配置
[root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf
write_enable=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=vftpuser
virtual_use_local_privs=NO
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf #设定用户配置文件存放目录
ftpd_banner=Welcome to yoozhu FTP server
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
tcp_wrappers=NO
setproctitle_enable=YES
listen_port=21
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=0
max_per_ip=3
local_max_rate=512000
[root@51ou.com ~]#mkdir /etc/vsftpd/vsftpd_user_conf
编辑ftp1的配置文件
[root@51ou.com ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp1
anon_world_readable_only=NO
编辑ftp2的配置文件
[root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/ftp2
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
(责任编辑:IT)
我们登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。 匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。 本地用户登录:使用系统用户登录,在/etc/passwd中。 虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。 FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。 本文的Linux系统是CentOS 5.3 yum -y install vsftpd 一、建立Vsftpd虚拟用户: 1、添加虚拟用户口令文件安装Vsftpd [root@51ou.com ~]#vi /etc/vsftpd/vftpuser.txt 添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。 ftp1 #用户名 123456 #密码 ftp2 #用户名 123456 #密码 2、生成虚拟用户口令认证文件 将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。 首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。 下面使用db_load命令生成虚拟用户口令认证文件。 [root@51ou.com ~]# db_load -T -t hash -f /home/vuser.txt /etc/vsftpd_login.db -bash: db_load: command not found ############################### 出现没有db_load的提示是因为有些db4的包没有安装,需要安装下列包: db4-*.rpm db4-tcl-*.rpm db4-utils-*.rpm 或者直接: yum -y install db4 db4-tcl db4-utils db_load命令主要是用来生成db数据库使用的 格式: db_load -T -t hash -f passwd.txt /etc/vsftpd/user_passwd.db 生成一个hash码型的数据库文件供ftp虚拟用户使用。 ########################## [root@51ou.com ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db 3、编辑vsftpd的PAM认证文件 在/etc/pam.d目录下, [root@51ou.com ~]#vi /etc/pam.d/vsftpd 将里面其他的都注释掉,添加下面这两行: auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser 4、建立本地映射用户并设置宿主目录权限 所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。 [root@51ou.com ~]#useradd -d /home/vftpsite -s /sbin/nologin vftpuser [root@51ou.com ~]#chmod 755 /home/vftpsite //网上为700,设置为700后FTP用户无上传权限 5、配置vsftpd.conf(设置虚拟用户配置项) [root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf guest_enable=YES #开启虚拟用户 guest_username=vftpuser #FTP虚拟用户对应的系统用户[useradd -d /home/vftpsite -s /sbin/nologin vftpuser] pam_service_name=vsftpd #PAM认证文件 6、重启vsftpd服务 [root@51ou.com ~]#service vsftpd restart 7、测试虚拟用户登录FTP C:\Documents and Settings\Administrator>ftp 192.168.2.12 Connected to 192.168.2.12. 220 (vsFTPd 2.0.5) User (192.168.2.12:(none)): ftp1 331 Please specify the password. Password: 500 OOPS: cannot change directory:/home/vftpsiteConnection closed by remote host .//在配置vsftpd的时候连接vsftpd出现了500 OOPS: cannot change directory:/home/vftpsite 的错误,vftpsite为登录时使用的本地用户名。 解决办法: [root@51ou.com ~]# setsebool -P ftp_home_dir on 也有网上说在终端输入命令: setsebool -P ftpd_disable_trans 1 service vsftpd restart 就OK了! 测试: C:\Documents and Settings\Administrator>ftp 192.168.2.12 Connected to 192.168.2.12. 220 (vsFTPd 2.0.5) User (192.168.2.12:(none)): ftp1 331 Please specify the password. Password: 230 Login successful. 二、虚拟用户高级设置: 1、virtual_use_local_privs参数 当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限; 当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。 当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除 、重命名)。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES, anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO, anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。 2. 建立各个虚拟用户自身的配置文件 [root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf 添加: user_config_dir=/etc/vsftpd/vsftpd_user_conf [root@51ou.com ~]#mkdir /etc/vsftpd/vsftpd_user_conf 编辑ftp1的配置文件 [root@51ou.com ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp1 添加: anon_world_readable_only=NO #开放ftp1的下载权限(只能下载)。注意这个地方千万不能写成YES ,否则ftp1将不能列出文件和目录。 编辑ftp2的配置文件 [root@51ou.com ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp2 添加: write_enable=YES #开放ftp2的写权限 anon_world_readable_only=NO #开放ftp2的下载权限 anon_upload_enable=YES #开放ftp2的上传权限 anon_mkdir_write_enable=YES #开放ftp2创建目录的权限 anon_other_write_enable=YES #开放ftp2删除和重命名的权限 3、所有虚拟用户使用一般配置 [root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf write_enable=YES anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=vftpuser virtual_use_local_privs=NO pam_service_name=vsftpd anon_world_readable_only=NO #可以下载 anon_upload_enable=NO(默认值) #不能上传 anon_mkdir_write_enable=NO(默认值) #不能新建文件夹 anon_other_write_enable=NO(默认值) #不能删除和重命名文件 ftpd_banner=Welcome to yoozhu FTP server xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES tcp_wrappers=NO setproctitle_enable=YES listen_port=21 connect_from_port_20=YES idle_session_timeout=600 data_connection_timeout=120 max_clients=0 max_per_ip=3 local_max_rate=512000 4、各个虚拟用户使用自身配置 [root@51ou.com ~]#vi /etc/vsftpd/vsftpd.conf write_enable=YES anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=vftpuser virtual_use_local_privs=NO pam_service_name=vsftpd user_config_dir=/etc/vsftpd/vsftpd_user_conf #设定用户配置文件存放目录 ftpd_banner=Welcome to yoozhu FTP server xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES tcp_wrappers=NO setproctitle_enable=YES listen_port=21 connect_from_port_20=YES idle_session_timeout=600 data_connection_timeout=120 max_clients=0 max_per_ip=3 local_max_rate=512000 [root@51ou.com ~]#mkdir /etc/vsftpd/vsftpd_user_conf 编辑ftp1的配置文件 [root@51ou.com ~]#vi /etc/vsftpd/vsftpd_user_conf/ftp1 anon_world_readable_only=NO 编辑ftp2的配置文件 [root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/ftp2 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES (责任编辑:IT) |