zoukankan      html  css  js  c++  java
  • 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安装测试

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

  • 相关阅读:
    经典傻逼题
    谈谈Spring的IoC之注解扫描
    吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(1)
    吴裕雄 python 神经网络——TensorFlow 实现LeNet-5模型处理MNIST手写数据集
    吴裕雄 python 神经网络——TensorFlow 花瓣识别2
    吴裕雄 python 神经网络——TensorFlow训练神经网络:花瓣识别
    吴裕雄 python 神经网络——TensorFlow训练神经网络:卷积层、池化层样例
    吴裕雄 python 神经网络——TensorFlow训练神经网络:MNIST最佳实践
    吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用滑动平均
    吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用隐藏层
  • 原文地址:https://www.cnblogs.com/ldl1137/p/7102694.html
Copyright © 2011-2022 走看看