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_local_user |
YES |
NO |
YES |
NO |
chroot_list_enable |
YES |
YES |
NO |
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/ftp123 –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
allow_writeable_chroot=YES #centos 7需要添加
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=ftp123
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/ftp123
guest_enable=YES
guest_username=ftp123
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安装测试
经过测试完成预期目标 ^_^