centos7安装ftp
程序员文章站
2022-05-27 22:14:31
1、服务器初始化检查 检查selinux,firewall,iptables是否开启 1、查看selinux的运行状态 1、临时关闭selinux 2、永久关闭selinux 将SELINUX=enforcing改为SELINUX=disabled,保存后退出,_reboot重启服务器后生效_ 2、 ......
1、服务器初始化检查
检查selinux,firewall,iptables是否开启
1、查看selinux的运行状态
[root@zeq ~] getenforce disabled 我的现在是关闭状态
[root@zeq ~] /usr/sbin/sestatus selinux status: disabled 我的现在是关闭状态
1、临时关闭selinux
[root@zeq ~] setenforce 0
2、永久关闭selinux
将selinux=enforcing改为selinux=disabled,保存后退出,reboot重启服务器后生效
[root@zeq ~] vim /etc/selinux/config # this file controls the state of selinux on the system. # selinux= can take one of these three values: # enforcing - selinux security policy is enforced. # permissive - selinux prints warnings instead of enforcing. # disabled - no selinux policy is loaded. selinux=enforcing # selinuxtype= can take one of three two values: # targeted - targeted processes are protected, # minimum - modification of targeted policy. only selected processes are protected. # mls - multi level security protection. selinuxtype=targeted
2、查看firewalld的运行状态
[root@zeq ~] systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) active: inactive (dead) 我现在是关闭状态 docs: man:firewalld(1)
1、关闭firewalld
[root@zeq ~] systemctl stop firewalld
3、安装vsftp
[root@zeq ~] yum install vsftp -y
4、启动vsftp服务并加入开机自启
[root@zeq ~] systemctl start vsftpd [root@zeq ~] systemctl enable vsftpd
5、修改vsftp配置文件
1、备份配置文件
[root@zeq ~] cp /etc/vsftp/vsftp.conf /etc/vsftp/vsftp.conf.bak
2、修改配置文件内容
[root@zeq ~] vim /etc/vsftp/vsftp.conf 清空原有内容插入下面的内容 anonymous_enable=no write_enable=yes chroot_local_user=yes chroot_list_enable=yes use_localtime=yes local_enable=yes allow_writeable_chroot=yes xferlog_enable=yes local_umask=022 pam_service_name=vsftpd use_localtime=yes listen_port=21 chroot_local_user=yes idle_session_timeout=120 data_connection_timeout=120 guest_enable=yes guest_username=ftpuser user_config_dir=/etc/vsftpd/vuser_conf virtual_use_local_privs=yes pasv_min_port=10060 pasv_max_port=10090 accept_timeout=5 connect_timeout=1
6、创建宿主用户
1、创建用户 ftpuser 指定 /home/vsftpd
目录
[root@zeq ~] useradd -g root -m -d /home/vsftpd -s /sbin/nologin ftpuser
2、设置用户 ftpuser 的密码
[root@zeq ~] passwd ftpuser
3、把 /home/vsftpd 的所有权给ftpuser.root
[root@zeq ~] chown -r ftpuser.root /home/vsftpd
7、建立虚拟用户文件
[root@zeq ~] vim /etc/vsftpd/vuser_passwd 第一、三行用户,第二、四行密码 ftp1 12345678 ftp2 12345678
8、生成虚拟用户数据文件并授权
[root@zeq ~] db_load -t -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db [root@zeq ~] chmod 600 /etc/vsftpd/vuser_passwd.db
9、创建用户配置
[root@zeq ~] mkdir /etc/vsftpd/vuser_conf # 建立虚拟用户个人vsftp的配置文件 [root@zeq ~] cd /etc/vsftpd/vuser_conf # 进入目录 [root@zeq vuser_conf] touch ftp1 ftp2 [root@zeq vuser_conf] vim ftp1 ftp2第一行改为ftp2其他内容不变 local_root=/home/vsftpd/ftp1 write_enable=yes anon_world_readable_only=no anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes
10、创建用户目录
[root@zeq ~] mkdir -p /home/vsftpd/ftp1 [root@zeq ~] mkdir -p /home/vsftpd/ftp2
11、重启vsftp服务
[root@zeq ~] systemctl restart vsftp
12、生成虚拟用户的pam文件
[root@zeq ~] cd /etc/pam.d/ && cp vsftpd vsftpd.bak [root@zeq ~] vim /etc/pam.d/vsftpd 添加两行内容,原有内容注销 #%pam-1.0 auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd #session optional pam_keyinit.so force revoke #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required pam_shells.so #auth include password-auth #account include password-auth #session required pam_loginuid.so #session include password-auth
13、客户端测试
1、首先每次更改配置需要重启vsftpd服务。
2、上面每个配置文件中的内容最好是手动键入
3、客户端windows打开cmd到后台进行连接,网页和资源管理器里面都会有缓存也看不到报错。
4、服务器tail -f /var/log/secure查看日志(也可以tail -f /var/log/messages,这个看不出什么,前者更精准)
5、客户端报错示例(没有读到/etc/vsftpd/chroot_list这个文件,所以我们新建这个文件就行,记得重启服务)。
6、如果虚拟用户登录到自己的宿主目录后,不能上传文件的话,服务器端需要在宿主目录里面再新建一个文件夹,给这文件夹777权限,就可以了(直接把宿主目录设置777就会登录不了)
7、新增用户的话,需要在/etc/vsftpd/vsuser.passwd里面追加用户(删除就是删除用户),记得使用db_load重新生成vsuser.passwd文件即可,vuser_confi里面新建一个新建账户的权限文件,宿主目录记得新建存储文件。
8、建议使用ftp工具和cmd验证
9、修改完配置或者用户信息以后一定要重启服务和重新生成vsuser.passwd(重复第八步操作)
14、ftp登陆验证
ftp 192.168.1.238 ftp命令+你服务器的ip 如果没有ftp命令yum安装即可 连接到 192.168.1.238. 220 (vsftpd 3.0.2) 200 always in utf8 mode. 用户(192.168.1.238:(none)): ftp1 331 please specify the password. 密码: 230 login successful.
15、ftp命令详解
ftp> ascii # 设定以ascii方式传送文件(缺省值) ftp> bell # 每完成一次文件传送,报警提示. ftp> binary # 设定以二进制方式传送文件. ftp> bye # 终止主机ftp进程,并退出ftp管理方式. ftp> case # 当为on时,用mget命令拷贝的文件名到本地机器中,全部转换为小写字母. ftp> cd # 同unix的cd命令. ftp> cdup # 返回上一级目录. ftp> chmod # 改变远端主机的文件权限. ftp> close # 终止远端的ftp进程,返回到ftp命令状态, 所有的宏定义都被删除. ftp> delete # 删除远端主机中的文件. ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中. ftp> help [command] # 输出命令的解释. ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的home目录. ftp> ls [remote-directory] [local-file] # 同dir. ftp> macdef # 定义宏命令. ftp> mdelete [remote-files] # 删除一批文件. ftp> mget [remote-files] # 从远端主机接收一批文件至本地主机. ftp> mkdir directory-name # 在远端主机中建立目录. ftp> mput local-files # 将本地主机中一批文件传送至远端主机. ftp> open host [port] # 重新建立一个新的连接. ftp> prompt # 交互提示模式. ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中. ftp> pwd # 列出当前远端主机目录. ftp> quit # 同bye. ftp> recv remote-file [local-file] # 同get. ftp> rename [from] [to] # 改变远端主机中的文件名. ftp> rmdir directory-name # 删除远端主机中的目录. ftp> send local-file [remote-file] # 同put. ftp> status # 显示当前ftp的状态. ftp> system # 显示远端主机系统类型. ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机. ftp> ? [command] # 同help. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 ftp> ! # 从 ftp 子系统退出到外壳。