搭建sftp服务器及ftp服务器
一.搭建sftp服务器
实现目标:实现两个用户admin和usr的sftp传输,其中admin可以上传下载,usr只可以下载。sftp端口改为22222
sftp是一种安全的文件传送协议,是ssh内含协议,也就是说只要sshd服务器启动了,sftp就可使用,不需要额外安装,它的默认端口和SSH一样为22
1.创建sftp用户组
useradd sftp
2.创建不可登录用户admin及usr并加入sftp组
useradd -g sftp -s /sbin/nologin admin
useradd -g sftp -s /sbin/nologin usr
3.给用户设置密码
passwd admin passwd usr
4.配置sshd_config文件
vim /etc/ssh/sshd_config #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp AllowTcpForwarding no X11Forwarding no Match Group sftp ChrootDirectory /home/sftp/ ForceCommand internal-sftp
其中ChrootDirectory指定的是用户目录,用ChrootDirectory指定的用户目录这一层和上面其他层的拥有着必须为root用户。
5.设置目录权限
#创建目录并修改权限为root用户拥有 mkdir /home/sftp/ chown root /home/sftp/ chmod 755 /home/sftp/ #在用户目录下建立子目录,让sftp中admin的用户可读写文件 我们现在在/home/sftp目录下新建一个data文件夹用于下载和上传: mkdir -p /home/sftp/data #授权data文件夹读写,让子文件夹data属于admin chown admin:sftp /home/sftp/data #设置属主可读可写,其他用户可读 chmod 750 /home/sftp/data
6.关闭selinux
vim /etc/selinux/config SELINUX=disabled setenforce 0
7.修改sftp端口号
sftp与ssh端口一致均为22端口,如果不想用22端口,则可以在sshd_config中进行修改
vim /etc/ssh/sshd_config Port 22222
8.重启sshd服务
systemctl restart sshd
systemctl enable sshd
vim /etc/profile umask 0027
source
/etc/profile
umask值 目录 文件
022 755 644
027 750 640
002 775 664
006 771 660
007 770 660
#创建用户 useradd -G sftp -s /sbin/nologin Citiadm #修改密码 passwd Citiadm xxxxxx #修改目录权限 chown Citiadm:sftp /home/sftp/data/CITI #属主读写,属组可读 chmod -R 770 /home/sftp/data/CITI systemctl restart sshd #改家目录,Citiadm账户使用sftp登录进去之后就是家目录/home/sftp/data/CITI sudo vi /etc/passwd sudo usermod -d /home/sftp/data/CITI -u 1005 Citiadm
#设置新建文件的权限,使新建文件权限为660,gwadm和gwusr都可读可写
umask 007
二.搭建ftp服务器
ftp服务为vsftpd,默认端口为21,改完2121
1.开启FTP服务
yum install -y vsftpd
2.修改配置文件,设定ftp上传家目录,与上方sftp一致
端口设置为2121
vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO local_enable=YES local_root=/home/sftp chroot_local_user=YES listen_port=2121 use_localtime=YES allow_writeable_chroot=YES
3.在/etc/services中修改ftp
vim /etc/services ftp 2121/tcp ftp 2121/udp
4.注释掉仅允许用户的shell为 /etc/shells 文件内的shell命令时,才能够成功
否则ftp登录时会有530 Login incorrect.530 Please login with USER and PASS.报错
vim /etc/pam.d/vsftpd
#注释掉
#auth required pam_shells.so
5.重启vsftpd服务
systemctl restart vsftpd
三.测试
sftp://xx.xx.xx.xx:22222 ftp://xx.xx.xx.xx:2121
2.linux测试
sftp测试
sftp -oPort=22222 admin@xx.xx.xx.xx
ftp测试
#安装ftp yum install ftp -y ftp xx.xx.xx.xx 2121
四.开启日志
vim /etc/vsftpd/vsftpd.conf
#传输日志:记录文件传输活动(上传、下载)的详细信息,如文件名、传输字节数、传输时间等。 xferlog_enable=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES dual_log_enable=YES #协议日志:记录更详细的 FTP 协议交互信息,包括客户端发送的每个命令和服务器的响应。 vsftpd_log_file=/var/log/vsftpd.log
重启
systemctl restart vsftpd
三.需求:再建一个spain账户 要求通过sftp访问且与之前的用户权限隔离
途径:在/etc/ssh/sshd_config中添加多个sftp组
创建用户组及用户
groupadd sftp_spaindata
useradd -g sftp_spaindata -s /sbin/nologin spain
创建目录及授权
mkdir -p /data/spain/data chmod 755 /data/spain/ chmod 750 /data/spain/data chown root:root /data/spain/ chown spain:sftp_spaindata /data/spain/data
添加ssh配置
vim /etc/ssh/sshd_config # 第二个匹配组 Match Group sftp_spaindata ChrootDirectory /data/spain/ ForceCommand internal-sftp AllowUsers spain # 限制只有 spain 能访问 /spaindata
修改用户密码
passwd spain
重启ssh
systemctl restart sshd
验证权限
四.若ftp需求使用不同账户有不同目录的权限
编辑/etc/vsftpd.conf ,添加配置:
vim /etc/vsftpd/vsftpd.conf
#添加配置
user_config_dir=/etc/vsftpd/user_conf
添加配置,需要给spain账户授权/data/spain的权限,具体权限在sftp中已经配置了,此处的配置只是给ftp的访问权限
mkdir /etc/vsftpd/user_conf vim /etc/vsftpd/user_conf/spain local_root=/data/spain
重启ftp
systemctl restart vsftpd
没有特殊配置的用户仍然使用/etc/vsftpd.conf中配置的local_root
浙公网安备 33010602011771号