单例模式

保证一个类,只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。

1、单例的应用场景

  • 在多个线程之间,只初始化一次socket资源
  • 连接数据库时,不需要每次都创建连接,因为连接也比较耗时间
  • 在整个程序空间使用全局变量,共享资源
  • 大规模系统中,通过节省对象创建的时间,达到性能的要求

2、搭建 ftp 服务器的步骤

  • 首先查看是否已经安装了 vsftp

    [Nsos5.1 ~]# rpm -q vsftpd
    package vsftpd is not installed
    
  • 通过 yum 安装 vsftpd

    yum install -y vsftpd
    
  • 查看安装文件内容

    /etc/logrotate.d/vsftpd.            vsftpd的日志文件 
    /etc/pam.d/vsftpd                    PAM认证文件 
    /etc/rc.d/init.d/vsftpd              启动脚本 
    /etc/vsftpd                          vsftpd的配置文件存放的目录 
    /etc/vsftpd/ftpusers                禁止使用vsftpd的用户列表文件 
    /etc/vsftpd/user_list                禁止或允许使用vsftpd的用户列表文件 
    /etc/vsftpd/vsftpd.conf              主配置文件 
    /etc/vsftpd/vsftpd_conf_migrate.sh  vsftpd操作的一些变量和设置 
    /usr/sbin/vsftpd                    vsftpd的主程序 
    其他一些说明文档和手册文件略! 
    /var/ftp                            匿名用户主目录 
    
    /var/ftp/pub                        匿名用户的下载目录
    
  • 开启 vsftpd 服务

    [root@localhost ~]# service vsftpd start
    Starting vsftpd for vsftpd:                                [  OK  ]
    
  • 创建一个直接登录系统用户来登录 ftp (用户具有 上传 创建 下载 切换目录)

    #useradd -s /sbin/nologin grass 
    #passwd grass
    

经过上面的步骤,已经可以用匿名用户登陆了

匿名用户的登录名:ftp(anonymous) 密码空 ,登录的目录为 /var/ftp 用匿名用户登录的时候默认是只有下载的权限,没有上传,创建和删除的权限

  • 修改配置文件 vsftpd.conf

      开启匿名用户的上传、创建、删除权限

    vim /etc/vsftpd/vsftpd.conf

    anon_upload_enable=YES 上传
    anon_mkdir_write_enable=YES 创建
    anon_other_write_enable=YES 删除

    service vsftpd restart


  禁止匿名用户的登录

#vim  /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
#anon_upload_enable=YES      上传 
#anon_mkdir_write_enable=YES    创建  
#anon_other_write_enable=YES    删除 
#service vsftpd restart 

  限制系统用户锁定在家目录(意思就是只能访问 ftp 服务器给出的目录)

chroot_list_enable=YES 

chroot_list_file=/etc/vsftpd/chroot_list  限制其他系统用户,把需要限制的用户加入/etc/vsftpd/chroot_list中即可 

#touch /etc/vsftpd/chroot_list 
#cut -d: -f 1 /etc/passwd >>/etc/vsftpd/chroot_list 将本地用户都加入到chroot_list

  限制重要系统用户不能登录 ftp

#cat /etc/vsftpd/ftpusers  默认已经添加了系统中一些比较重要的用户 
#echo "grass" >>/etc/vsftpd/ftpusers  此时 grass 不能登录ftp

  利用 ftp 用户策略允许登录 ftp 的系统用户

/etc/vsftpd/user_list 只有在这个文件中的用户才能登录系统
#vim /etc/vsftpd/vsftpd.conf 
#在userlist_enable=YES 的后面添加 
userlist_deny=NO 
userlist_file=/etc/vsftpd/user_list

  设置登录ftp目标ip地址:用iptables设置

此处略。。。

  搭建支持 SSL 加密传输的 vsftpd

#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem    生成证书 
#vim /etc/vsftpd/vsftpd.conf 
ssl_enable=YES 
allow_anon_ssl=NO 
force_local_data_ssl=YES 
force_local_logins_ssl=YES 
ssl_tlsv1=YES 
ssl_sslv2=YES 
ssl_sslv3=YES 
rsa_cert_file=/etc/vsftpd/vsftpd.pem
下面是ssl参数一些定义,根据自己需求去修改:
ssl_enable=yes/no            //是否启用 SSL,默认为no
allow_anon_ssl=yes/no        //是否允许匿名用户使用SSL,默认为no
rsa_cert_file=/path/to/file      //rsa证书的位置
dsa_cert_file=/path/to/file      //dsa证书的位置
force_local_logins_ssl=yes/no    //非匿名用户登陆时是否加密,默认为yes
force_local_data_ssl=yes/no    //非匿名用户传输数据时是否加密,默认为yes
force_anon_logins_ssl=yes/no    //匿名用户登录时是否加密,默认为no
force_anon_data_ssl=yes/no    //匿名用户数据传输时是否加密,默认为no
ssl_sslv2=yes/no              //是否激活sslv2加密,默认no
ssl_sslv3=yes/no                //是否激活sslv3加密,默认no
ssl_tlsv1=yes/no                //是否激活tls v1加密,默认yes
ssl_ciphers=加密方法            //默认是DES-CBC3-SHA

3、遇到的问题

问题1:没有路由?

关闭服务器端的iptables

问题2:500 OOPS: cannot change directory:/home/ShuaiGrass Login failed

关闭 selinux,selinux 没有允许连接 ftp。
 
修改 selinux 配置文件需要重启机器:修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可

问题3:530 Permission denied. Login failed

查看该用户是否在userlist,ftpuser中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值