首页 > 代码库 > vsftp 实现不同用户不同权限配置

vsftp 实现不同用户不同权限配置

先说说主配置文件vsftpd.conf中的配置参数说明:这里的参数只是初步设定的默认参数,具体可在各虚拟用户中配置

anonymous_enable=NO  #不允许匿名访问

local_enable=YES     #设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。

write_enable=YES   #设定可以进行写操作。

local_umask=022        #设定上传后文件的权限掩码,文件644,文件夹755

anon_upload_enable=NO  #禁止匿名用户上传文件。

anon_mkdir_write_enable=NO  #禁止匿名用户建立目录。

dirmessage_enable=YES       #设定开启目录标语功能。

xferlog_enable=YES           #设定开启日志记录功能。

connect_from_port_20=YES    #设定端口20进行数据连接。

chown_uploads=NO   #设定禁止上传文件更改宿主。

xferlog_file=/var/log/vsftpd.log  #设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。

xferlog_std_format=YES   #设定日志使用标准的记录格式。

#idle_session_timeout=600 #设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒。

nopriv_user=www2013 #设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。

async_abor_enable=YES    #设定支持异步传输功能。

ascii_upload_enable=YES
ascii_download_enable=YES     #设定支持ASCII模式的上传和下载功能。

ftpd_banner=This Vsftp server supports virtual users ^_^    #设定Vsftpd的登陆标语。

Banner_file =/…                        #设定Vsftpd的登陆标语的文件。

下面是一个比较扯淡的参数:有下面4种组合

chroot_local_user=YES

chroot_list_enable=NO

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list

参数

取值

取值

取值

取值

chroot_list_enable

YES

YES

NO

NO

chroot_local_user

YES

NO

YES

NO

意义

文件中列出的用户根目录为系统根目录,其它用户根目录为自己主目录。

文件中列出的用户根目录为自己主目录,其它用户根目录为系统根目录。

全部用户根目录都是自己主目录。

全部用户根目录都是系统根目录。

 

 

 

 

 

 

 

 

红色部分是常用到的,它的意思是,所有用户的目录都是共享的ftp目录,不可以切到别的目录,包括上传的时候,只能上传所在目录的文件,不能上传别的目录里的文件。

ls_recurse_enable=NO    #禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。

listen=YES  #开启独立进程vsftpd,不使用超级进程xinetd。设定该Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。

pam_service_name=vsftpd #设定,启用pam认证,并指定认证文件名/etc/pam.d/vsftpd。

userlist_enable=YES    #设定userlist_file中的用户将不得使用FTP。
tcp_wrappers=YES       #设定支持TCP Wrappers。

实际操作过程:环境CENTOS 6.8

目标:实现在同一跟目录下对admins,upload,download三个虚拟用户的不同权限的控制。具体权限控制列表如下:

用户名

权限说明

admins

管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名。

upload

不可以下载,可以上传、新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;

download

只能下载,不能进行其他操作。

 

 

 

 

 

 

 

 

1、安装vsftpd

Yum install vsftpd -y

2、添加虚拟映射用户

Useradd –d /home/ftp –s /sbin/nologin

然后创建虚拟用户和密码

Cat >>vsuser<<eof

admins

123456

upload

123456

download

123456

eof

[root@DHCP-service vsftpd]# cat vsuser

admins

123456

upload

123456

download

123456

然后呢 安装db4,制作vsftp的用户认证文件,因为刚才的虚拟帐号和密码的文本文件无法被系统帐号直接调用,需要创建用于系统认证的db文件

[root@DHCP-service vsftpd]# yum install db4

[root@DHCP-service vsftpd]#db_load -T -t hash -f /etc/vsftpd/vsuser /etc/vsftpd/vsuser.db

接着配置pam.d下的vsftpd,添加认证文件的位置

vim /etc/pam.d/vsftpd   #将文将中原来的内容改为下面的内容(记得先备份呀

auth       sufficient     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsuser

account    sufficient     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsuser

以上针对64位机器

如果是32位的话将lib64改为lib即

auth       sufficient     /lib/security/pam_userdb.so   db=/etc/vsftpd/vsuser

account    sufficient     /lib/security/pam_userdb.so   db=/etc/vsftpd/vsuser

然后就是配置vsftp了:

cd /etc/vsftpd/

[root@DHCP-service vsftpd]# vim vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=NO

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

chown_uploads=NO

xferlog_std_format=YES

chroot_local_user=YES

chroot_list_enable=NO

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

nopriv_user=ftp

async_abor_enable=YES

ascii_upload_enable=YES

ascii_download_enable=YES

ftpd_banner=Welcome to blah FTP service ^_^

ls_recurse_enable=NO

listen=YES

local_root=/home/ftp

guest_enable=YES

guest_username=ftp

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/conf

主配置文件修改完毕,配置各个虚拟用户的权限文件

首先mkdir conf

注意:这个文件夹下的文件名一定要与我们刚开始创建的3个虚拟用户名相对应

Cd conf/中去

Cat >>admins<<eof

write_enable=YES

download_enable=YES

eof

然后是upload用户

Cat >>upload<<eof

virtual_use_local_privs=NO

anon_world_readable_only=NO

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

eof

最后是download用户

Echo “anon_world_readable_only=NO” >> download

然后就是启动vsftpd服务

[root@DHCP-service conf]# /etc/init.d/vsftpd restart

下载windows上的ftp客户端软件fileZilla安装测试

经过测试完成预期目标。^_^

 

vsftp 实现不同用户不同权限配置