建立vsftpd权限控制

允许三种认证模式登录ftp服务:匿名、本地用户模式、虚拟用户模式。
虚拟用户模式是一种最安全的模式,本章采用此种模式。
实现的具体需求:
一种需求:
用户beijing可以上传文件到beijing,tianjin,shanghai等7个城市的目录,但不能下载
用户beijing外,其他用户tianjin,shanghai等只能上传文件到tianjin,shanghai等各自的目录,不能上传文件到其他城市的目录,但可以看到北京目录的内容。都不能下载
另外一种需求:
用户beijing可以上传文件到beijing,tianjin,shanghai等7个城市的目录,可以下载
用户beijing外,其他用户tianjin,shanghai等只能上传文件到tianjin,shanghai等各自的目录,不能上传文件到其他城市的目录,但可以下载北京目录的内容;只能看到除了北京和自己目录下的文件,不能下载

实现思路:
先用vsftpd进行权限控制,然后通过虚拟用户和本地用户具有相同的权限,对文件夹的权限进行设置。来达到同一用户访问不同文件夹具有不同权限的目的。


1. 安装
    yum install vsftpd
2  配置文件
   mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.confbak
   grep -v "#" /etc/vsftpd/vsftpd.confbak > /etc/vsftpd/vsftpd.conf
3  检查是否采用了seclinux
   getsebool -a | grep ftp
   如果采用了seclinux进行设置

   setsebool -P ftpd_full_access=on

 有的linux可能跟上面不同,需要根据查找的结果进行设置。用如下的命令

setsebool -P allow_ftpd_full_access=on
4  进行用户和密码配置
  cd /etc/vsftpd
  vim vuser.list
  第一行用户名,第二行密码
  db_load -T -t hash -f vuser.list vuser.db
  chmod 600 vuser.db
5 创建beijing、tianjin、shanghai,virtual等用户,默认ftp上传路径

    useradd -d /data/meiziftp -s /sbin/nologin virtual

注意:如果不使用各个用户的权限,上传文件的属性就是virtual

    useradd -d /data/meiziftp -s /sbin/nologin beijing
  ls -ld /data/meiziftp
  chmod -Rf 755 /data/meiziftp
  ls -ld /data/meiziftp
  mkdir  /data/meiziftp/beijing
  chown beijing:beijing  /data/meiziftp/beijing
  为了让其他帐号能够看到beijing目录的内容,对beijing目录权限进行如下设置
  chmod 705 /data/meiziftp/beijing

 useradd -d /data/meiziftp/tianjin -s /sbin/nologin tianjin
为了让beijing用户能够上传文件到tianjin目录,进行如下设置:
chgrp beijing tianjin
chmod 770 tianjin
同理其他用户如shanghai参照上面设置。

 

6 配置pam认证
  vim /etc/pam.d/vsftpd.vu
内容如下:
auth    required pam_userdb.so  db=/etc/vsftpd/vuser
account required pam_userdb.so  db=/etc/vsftpd/vuser
7 修改配置文件
 vim /etc/vsftpd/vsftpd.conf
内容如下:
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
#allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
#不能下载
download_enable=NO

pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir
chroot_list_enable=YES 是否启用用户禁锢在家目录文件
chroot_list_file=/etc/vsftpd/chroot_list 指定禁锢文件,文件中的用户将被禁锢
chroot_local_user=YES 是否允许所有系统用户禁锢在家目录

编辑文件vi /etc/vsftpd/chroot_list,加入用户
beijing
shanghai
tianjin

注释:
chroot_local_user=YES是否将所有用户锁定在主目录,YES为启用,NO禁用.(包括注释掉也为禁用)。
chroot_list_enable=NO是否启动锁定用户的名单,YES为启用,NO禁用(包括注释掉也为禁用)。


chroot_local_user=YES和chroot_list_enable=NO一起使用表示禁止所有用户切换到上级目录。


8  设置各个用户的权限

 mkdir /etc/vsftpd/vusers_dir
 cd /etc/vsftpd/vusers_dir/
 vim beijing
需要根据各个用户的权限进行配置如beijing设置如下:

local_root=/data/meiziftp
guest_username=beijing
virtual_use_local_privs=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

其他用户参照上述设置

注释:
local_root=/data/meiziftp表示使用本地用户登录到ftp时的默认目录
virtual_use_local_privs=YES 虚拟用户和本地用户有相同的权限
anon_umask表示文件上传的默认掩码。计算方式是777减去anon_umask就是上传文件的权限。如果我们设置的是133,也就是说上传后文件的权限是644。
即上传的文件对所属用户来说只有读写权限,没有执行权限。

一定记得把后面的//注释去掉,同时空格清干净, 我在这里卡半天

9 重启服务
service vsftpd restart
chkconfig vsftpd on

10 具体操作可参见如下连接 https://www.ilanni.com/?p=5341

 

11  相关参数说明:

在vsftpd.conf内,主要两个配置项相关,运行man vsftpd.conf可以看到:
file_open_mode
              The permissions with which uploaded files  are  created.  Umasks
              are applied on top of this value. You may wish to change to 0777
              if you want uploaded files to be executable.

              Default: 0666

local_umask
              The  value  that the umask for file creation is set to for local
              users. NOTE! If you want to specify octal values,  remember  the
              "0"  prefix  otherwise  the  value  will be treated as a base 10
              integer!

              Default: 077
需要上传后的文件权限为755,则应该这么配置:
file_open_mode=0755
local_unmask=022 (这个配置表示从file_open_mode赋予的权限中去掉22,即owner group和others的写权限)

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

allow_writeable_chroot=YES

如果有用对用户做更精细的的全新控制,可以把相关的参数设置到各个用户目录里面/etc/vsftpd/users_dir/,比如allow_writeable_chroot=YES可以设置到各个用户目录中。

12 用本地用户做认证进行简单的ftp传输,配置如下:

 

#anonymous_enable=NO
anonymous_enable=NO
#guest_enable=YES   虚拟用户使用
#guest_username=virtual   虚拟用户
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
#pam_service_name=vsftpd.vu   虚拟用户使用
pam_service_name=vsftpd      
userlist_enable=YES
tcp_wrappers=YES
#user_config_dir=/etc/vsftpd/vusers_dir
chroot_list_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

 

使用命令
useradd -d /data/meiziftp -s /sbin/nologin xxxx

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值