简介
- Linux系统下的文件自动备份到Windows下
- FTP(文件传输协议)全称是:Very Secure FTP Server。 Vsftpd是linux类操作系统上运行的ftp服务器软件。
- vsftp提供三种登陆方式:1.匿名登录 2.本地用户登录 3.虚拟用户登录
- vsftpd的特点:1.较高的安全性需求 2.带宽的限制 3.创建支持虚拟用户 4.支持IPV6 5.中等偏上的性能 6.可分配虚拟IP 7.高速
- Ftp会话时采用了两种通道:
- 控制通道:与Ftp服务器进行沟通的通道,链接Ftp发送ftp指令都是通过控制通道来完成的。
- 数据通道:数据通道和Ftp服务器进行文件传输或则列表的通道
linux服务器上安装ftp服务端软件
yum install vsftpd -y
修改/etc/vsftpd/vsftpd.conf
这里主要设置拒绝匿名登录和锁定用户到自家目录
# 拒绝匿名登录
anonymous_enable=NO
# 锁定用户到自家目录
chroot_local_user=YES
更多ftp设置参考
http://zserver.blog.51cto.com/370152/157203/
一些重要参数:
anonymous_enable=yes/no 是否允许匿名用户访问 anon_upload_enable=yes/no 是否允许匿名用户上传文件 anon_mkdir_write_enable=yes/no 是否允许匿名用户创建目录 anon_other_write_enable=yes/no 匿名用户和虚拟用户是否拥有删除权限 local_enable=yes/no 否允许本地用户登陆 write_enable=yes/no 设置全局是否可写 anon_root=/var 指定匿名用户目录 chroot_local_user=yes 锁定所有用户到自家目录 chroot_list_enable=yes/no 锁定列表中的用户到自家目录,需要配合下一参数使用 chroot_list_file=/etc/vsftpd/chroot_list 定存储被锁定用户的列表文件位置 chown_uploads=yes/no 匿名用户上传所有者指定功能需要与下一参数配合使用 chown_username=用户名 指定匿名用户上传文件的所有者 max_clients=300 最大连接数为300 anon_max_rate=30000 匿名用户和虚拟用户限速为30K/S local_max_rate=30000 本地用户限速为30K/S max_per_ip=10 每个IP最大连接数 listen_port=22 更改监听端口
下面来进行具体的配置,实现如下要求:
允许匿名用户登陆,匿名用户限速为60K/S,只允许下载。监听端口为22,最大连接数为10。新建用户ftp1,限速为200K/S,允许上传下载删除新建文件夹。
进入目录/etc/vsftpd,用vi编辑器打开vsftpd.conf主配置文件:
以下为新添加的选项
anon_max_rate=60000
anon_upload_enable=no
anon_other_write_enable=no
anon_mkdir_write_enable=no
max_clients=10
local_max_rate=200000
重启vsftp服务:
systemctl restart vsftpd
添加用户ftp1,设置登录脚本为 /sbin/nologin:
useradd ftp1 -s /sbin/nologin
passwd ftp1
vsftp默认目录为:/var/ftp,为方便测试,在/var/ftp新建一个文件,命名为”testLocal”,在”/var/ftp/pub”新建一个文件,命名为”testAnon”。
由于使用root用户新建文件,文件的所有者为root,所以需要把文件的权限设置为644其他,用户才能读取该文件
设置/var/ftp/pub权限为777,表示所有用户均有读写权限.
重启ftp服务
systemctl restart vsftpd
设置防火墙
这里ftp采用的是Port模式,只需要打开监听端口21和数据端口20
防火墙放行20和21端口
[root@linux ~]# systemctl start firewalld
[root@linux ~]# firewall-cmd --zone=public --add-port=20/tcp --permanent
success
[root@linux ~]# firewall-cmd --zone=public --add-port=21/tcp --permanent
success
重启刷新防火墙规则
systemctl restart firewalld
linux系统为ftp添加一个用户
并将用户家目录设置为ftp默认目录 通过-d参数设置,最后设置密码。
useradd ftpuser -d /var/ftp/pub -s /sbin/nologin
设置ftpuser 用户密码,运行命令:”passwd ftpuser ” ; 输入两次密码,匹配成功后,就设置好了ftpuser 用户的密码了。
passwd ftpuser
- /var/ftp/pub 是ftp用户的家目录,可以自己来定义
- /sbin/nologin 这是用户登录SHELL ,这个也是可以定义的,/sbin/nologin 表示不能登录系统;系统虚拟帐号(也被称为伪用户)一般都是这么设置。比如我们把ftp用户的/sbin/nologin 改为 /bin/bash ,这样ftp用户通过本地或者远程工具ssh或telnet以真实用户身份登录到系统。这样做对系统来说是不安全的;如果您认为一个用户没有太大的必要登录到系统,就可以只给他FTP帐号的权限,也就是说只给他FTP的权限,而不要把他的SHELL设置成 /bin/bash 等
到这一步,linux段的ftp服务就算安装完成了。
问题
问题1
[root@redmine data_backup]#useradd ftpredmine -d /var/ftp/pub -s/sbin/nologin
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件
不用管,继续创建密码即可
问题2
ftp报错 550 Failed to open file
- 方法一
# setsebool -P ftpd_disable_trans 1
Boolean ftpd_disable_trans is not defined
报错执行 setsebool -P tftp_home_dir 1
查看getsebool -a |grep tftp_home 结果如下:
tftp_home_dir –> on
#systemctl restart vsftpd
- 方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
# Allow root to run any commands anywhere
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 sudo – ,即可获得root权限进行操作。
- 方法三:修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
tommy0:33:tommy:/data/webroot:/bin/bash
ftp登陆报错530 Login incorrect. Login failed.
- cat /etc/passwd,查看你登陆的账户主目录和登陆shell对应的是什么,我的是/sbin/nologin
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- 查看cat /etc/shells是否有你用户的主目录和登陆shell,没有进行添加,保存,退出。