建立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
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等用户,默认ftp上传路径
    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的写权限)


猜你喜欢

转载自blog.csdn.net/wzlsunice88/article/details/80175444