在CentOS 7 下搭建FTP服务器

By YuanKang

不走弯路,在CentOS 7 下搭建FTP服务器

  • 在搭建前,先说一下中途错误时怎样改错

: userdel -r ftpuser (删除用户)
: usermod -d/c/s ftpuser(修改用户参数)
: groupdel groupName (删除用户组)
: rm -r fileName (删除文件)
: yum -y remove vsftpd (卸载vsftpd,但是卸载时会有自己创建的文件残留,需要手动找到删除)

  • 安装vfftpd

: yum -y insatll vsftpd

  • 修改vsftpd配置文件

: cd /etc/vsftpd
: vi vsftpd.conf

  • 点击 i 开始编辑 ,编辑结束按Esc,然后:wq (保存并退出),:q(退出)
#不允许匿名  
anonymous_enable=NO       
#在/etc/passwd下的用户以实体方式登录到vsftpd主机    
local_enable=YES  
#具有写(上传)的权限  
write_enable=YES  
#允许ASCII格式上传  
ascii_upload_enable=YES  
#允许ASCII格式下载  
ascii_download_enable=YES  
#所有用户不能切换到其他目录  
chroot_local_user=YES  
#在list文件内的用户,不能切换到其他目录  
chroot_local_list=YES  
#list文件地址  
chroot_list_file=/etc/vsftpd/chroot_list  
#使用了chroot_list,必须添加  
allow_writeable_chroot=YES  
#pam安全认证
pam_service_name=vsftpd
#使用userlist管理ftp用户
userlist_enable=YES
#是否允许tcp嵌套
tcp_wrappers=YES
#ftp的访问根目录  
local_root=/opt/ftp
  • 创建访问目录

: cd /opt
: mkdir ftp

  • 添加用户(此时添加的是linux的用户)
  • 添加用户的参数: -d /data/ftp:设置用户的主目录,-s /sbin/nologin:设置用户不能进行系统登录,但是可以登录ftp等内部程序.

: useradd -d /home/ftpuser -s /sbin/nologin ftpuser

  • 查看shells是否有 /sbin/nologin,没有的话就在里面添加

:vi /etc/shells

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
  • 设置密码

: passwd ftpuser

  • 设置访问目录的属主为ftpuser

: chown -R ftpuser /opt/ftp

  • 修改访问目录的权限 (此处的权限根据需求使用不同的权限775或755,具体含义可自行百度)

: chmod 775 /opt/ftp

  • 关闭SELinux限制(SELinux是Linux内部安全系统)

: getsebool -a | grep ftp

  • 此时会看到打印出的ftp限制
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
  • 修改 ftpd_full_access参数

: setsebool -P ftpd_full_access on

  • 添加防火墙白名单

: firewall-cmd --permanent --zone=public --add-service=ftp
: firewall-cmd --reload

  • 创建虚拟用户信息文件

: cd /etc/vsftpd/
: touch vuser_passwd
: vi vuser_passwd

#添加用户信息(注意:奇数行是用户名,偶数行是密码,记得换行)  
ftpuser  
123456  
  • 生成虚拟用户文件

: db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
: chmod 600 /etc/vsftpd/vuser_passwd.db

  • 编辑pam认证文件

: vi /etc/pam.d/vsftpd

  • 计算机为64位,添加下面两行
#%PAM-1.0
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

# 加入下面两行
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
  • 创建chroot_list,添加用户名

: cd /etc/vsftpd
: touch chroot_list
: vi chroot_list

ftpuser
  • 重启服务

: systemctl restart vsftpd.service(重启服务)
: systemctl status vsftpd.service (查看状态)
: systemctl stop vsftpd.service(关闭服务)

疑难点和错误解析

  • 在vsftpd.conf文件里配置了chroot_local_list=YES时,即使没有需要切换的用户,也必须创建chroot_list文件,否则用户登录认证会失败。

: cd /etc/vsftpd
: touch chroot_list

  • 用户允许在ftp内切换目录时,在 /etc/vsftp/chroot_list 添加具体的用户名,如果不允许某 用户切换目录,则从chroot_list里删除该用户。

: vi /etc/vsftpd/chroot_list

  • 注意:有时候用户在无法认证的话,查看用户的shell登录方式

:cat /etc/passwd

[root@localhost vsftpd]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ftpadmin:x:1000:1000::/home/ftpadmin:/sbin/nologin
ftpuser:x:1001:1001::/home/ftpuser:/sbin/nologin
sftpuser:x:1002:1003::/opt/ftp:/bin/bash
  • 最后一栏/bin/bash或/sbin/nologin的位置就是用户shell登录方式,查看shell文件是否包含对应的登录方式 。ftp登录时会

:vi /etc/shells

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
  • 若还是不行,尝试修改shell登录方式

: usermod -s /bin/bash ftpuser

  • 重启服务看能否登录
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值