当前位置:文档之家› 超详细linux vsftpd配置大全文档

超详细linux vsftpd配置大全文档

FTP服务的配置ftp服务器的软件——vsftpd,其全称是“Very Secure FTP Daemon”。

Vsftpd的配置文件在/etc/vsftpd/目录下1 ftpusers PAM模块 /etc/pam.d/vsftpd 所指定的那个无法登录的用户配置文件。

2 user_list 默认的情况下,写在这个文件里帐号都不允许登录vsftpd,它能否生效与vsftpd.conf中的参数userlist_enable 、userlist_deny有关。

本地用户管理:1)selinux布尔值ftp_home_dir 改为on,setsebool -P ftp_home_dir on2)配置文件vsftpd.conf中的local_enable=YES,即默认设置此时,这些实体用户能可以离开他们默认的目录即/home/~,如果需要将实体用户限制在他们的默认目录下,不允许他们到其他目录需要进行一下设置:Chroot_local_user=NO,(默认此行被注释,即不启动),修改这行下面的参数Chroot_list_enable=YES和chroot_list_file=/etc/vsftpd/chroot_list,然后在/etc/vsftpd/目录下创建chroot_list文件,将需要限制离开默认目录的实体用户的名字写进去。

修改user_list_enable=YES user_deny=YES,则可将不允许登录的用户写入/vsftpd目录下的user_list。

实体用户能上传、下载、删除默认目录下的文件。

修改默认发布目录1)建立发布目录。

mkdir -p /share/doc2)修改发布目录权限、属主和selinux安全上下文。

chmod 775 /sharechown root.ftp /share/docchcon –t public_content_rw_t /share/doc3)修改配置文件vsftpd.conf,加一行anon_root=/share匿名用户相关的配置:能上传文件1) selinux布尔值allow_ftpd_anon_write改为on,setsebool -P allow_ftpd_anon_write on ;2 ) 将pub目录的安全上下文改为public_content_rw_t;3)修改pub的所属用户为root,所属组为ftp,权限为775(上传上的文件的权限所属主和组都是ftp)。

4 ) 修改配置文件vsftpd.conf中的write_enable=YES;5 )修改配置文件vsftpd.conf中的anon_upload_enable=YES,能创建目录前四条想相同,5)修改vsftpd.conf中的anon_mkdir_write_enable=YES。

能下载前四条同上,5)anon_world_readable_only=YES(只要ftp用户在系统中具有读权限,就可以下载文件,即允许anonymous具有下载可读文件的权限)能删除重命名文件前四条同上,5)修改vsftpd.conf中的anon_other_write_enable=YES。

虚拟用户vsftpd中的用户有三种形式。

第一种是匿名,其权限对应系统中名为ftp的用户。

第二种是本地用户,也就是系统中建立的用户,用户名和密码存放在/etc/passwd文件中。

第三种是虚拟用户,一般情况下是不能在系统中登录的。

说说它的优点:首先,虚拟用户是ftp专有用户,使用虚拟用户登录ftp只能访问ftp服务器提供的资源。

大大增强了系统的安全,即这些用户并不在ftp服务器本地存在(不能用这些用户名登录到服务器中,而只能登录到ftp)。

相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。

对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案。

最后,虚拟用户的帐号权限设置更加方便,存储位置也可以灵活多样,便于与其他系统的集成。

实现方式有两种:本地数据文件和数据库服务器。

PAM(plugable authentication module,可插拔认证模块)是一种完成通用认证功能的程序,它可以被其他程序调用,是vsftpd支持的一种认证方式。

当使用PAM时,程序不需要重新编译,只需要通过编辑一个配置文件来决定认证模块如何插入到程序之中。

下面以PAM认证为例,介绍vsftpd虚拟用户的配置方法:步骤如下:1. 建立虚拟用户口令文件;2. 生成vsftpd的认证文件;3. 建立虚拟用户所需的PAM配置文件;4. 创建虚拟用户帐号映射的系统帐号;5. 修改vsftpd.conf配置文件;6. 设置虚拟用户的权限。

1)建立虚拟用户口令文件。

在/etc/vsftpd目录中创建文件users,里面单数行为虚拟帐号名,双数行为上一行的密码,如:user1123user24562) 生成虚拟账户数据库,安装数据库yum install db4-utils,在/etc/vsftpd目录中执行db_load –T -t hash –f userslogin.db 生成本地口令认证文件login.db3)然后编辑/etc/pam.d/virtual文件,内容如下:auth required pam_userdb.so db=/etc/vsftpd/users account required pam_userdb.so db=/etc/vsftpd/users4)建立所有ftp虚拟用户帐号映射的操作系统帐号,并设置该帐号工作目录的权限, useradd -d /home/vftp –s /sbin/login vftp chmod 700 /home/vftp也可以指定为系统中已有的ftp用户,这种情况下,其账户目录必须在/var/ftp目录下。

5) 在vsftpd.conf中,加入guest_enable=YES,guest_username=vftp 两行,修改pam_service_name=virtual,virtual为vsftd与pam进行对接的配置文件。

6)设置虚拟用户的权限在vsftpd.conf中加入使用virtual_use_localprivs=YES配置,其功能是使虚拟用户的权限与操作系统中所对应用户的权限(虚拟用户映射的用户如vftp)的权限一样,这样可以通过设置本地用户权限来决定虚拟用户的权限。

如果不加此参数,虚拟用户能上传文件到自己的家目录/home/vftp,但是不能查看目录中的内容,加上此参数和实体用户差不多。

如果要求多个虚拟用户具有不同的权限,则要在vsftpd.conf中加入一行,指定放置用户配置文件的目录是/etc/vsftpd,user_config_dir=/etc/vsftpd。

接着,在/etc/vsftpd目录下建立文件名为虚拟用户名的配置文件,并根据要求编辑不同的文件。

例如:vim /etc/vsftpd/user1local_root=/home/virtual/user1vim /etc/vsftpd/user2local_root=/home/virtual/user2write_enable=YES #服务器解手与写有关的控制anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESanon_world_readable_only=YES #只用用户在系统中有读权限,就可以下载文件最后,建立虚拟用户访问所需的目录,而且要更改相应的目录权限,和selinux安全上下文为public_content_rw_t,否则虚拟用户不能读写其家目录中文件。

Man ftpd_selinux ftp服务的selinux策略文档。

Ftpd selinux policy documentationAllow ftp servers to read and write files with the public_contentrw_t file type Setsebool –P allow_ftpd_anon_write onAllow ftp setvers to read or write files in the user home directories. Setsebool –P ftp_home_dir onAllow ftp servers to read or write all files on systemSetsebool –P allow_ftpd_full_access onAllow ftp servers to user cifs for public file transfer services.Setsebool –P allow_ftpd_user_cifs onAllow ftp servers to use nfs for public file transfer services.Setsebool –P allow_ftpd_use_nfs on参数:user_sub_tokenThis option is useful is conjunction with virtual users. It is used to automatically generate a home directory for each virtual user, based on a template. For example, if the home directory of the real user specified via guest_username is/home/virtual/$USER,and user_sub_token is set to $USER, then when virtual user fred logs in, he will end up (usually chroot()’ed) in the directory /home/virtual/fred. This option also takes affect if local_root contains user_sub_token.参数local_rootThis option represents a directory which vsftpd will try change into after a local (i.e.即 non-anonymous) login. Failure sliently ignored.。

相关主题