欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ubuntu创建sftp和ftp服务器及相应的用户管理

程序员文章站 2022-06-13 22:25:43
...

一、sftp服务器

进入root模式(下面的操作默认都是在root用户下)

#安装openssh-server
apt-get install -y openssh-server

创建sftp的组和用户

#创建sftp-users组
groupadd sftp-users
#创建sftp用户目录alice
mkdir /home/alice
#创建sftp用户alice,并且绑定其主目录为刚才创建的目录
useradd -d /home/alice alice
#设置用户alice的密码
passwd alice
#输入两次密码
#将用户alice添加到组sftp-users中,并且设置不能telnet
#注:-a参数表示append,linux在创建用户时会默认创建一个和用户同名的组
#加上-a参数表示alice不退出原来的名为alice的组的情况下,加入sftp-users组中
usermod -a -G sftp-users -s /bin/false alice

创建ssh用户组及用户管理

#创建ssh-users组
groupadd ssh-users
#将当前的ubuntu系统管理员加入到ssh-users组中
usermod -a -G ssh-users admin
#创建sftp的根目录并修改相应权限(将admin改为管理员名字)
mkdir /home/sftp_root
mkdir /home/sftp_root/shared
chown admin:sftp-users /home/sftp_root/shared
chmod 770 /home/sftp_root/shared
#修改ssh的配置文件
vi /etc/ssh/sshd_config
#在文件末尾添加下面内容:
AllowGroups ssh-users sftp-users

Match Group sftp-users

ChrootDirectory /home/sftp_root

AllowTcpForwarding no

X11Forwarding no

ForceCommand internal-sftp
#之后保存退出
#重启系统
reboot now

查看状态及测试:

service --status-all
#显示列表中如果有一行为:[+] ssh,证明服务开启


#在另一台ubuntu上输入:
sftp aaa@qq.com
#输入密码即可登录成功

登录成功如下图

ubuntu创建sftp和ftp服务器及相应的用户管理

上传和下载文件

在服务器的shared文件夹下创建alice.test文件

使用get命令下载到当前目录

ubuntu创建sftp和ftp服务器及相应的用户管理

使用put命令上传

先在本地文件夹创建put.test文件,如下图:

ubuntu创建sftp和ftp服务器及相应的用户管理

其中,lls是显示客户端当前文件夹下的内容,ls是显示服务器所在文件夹下的内容,上图可以看到客户端当前文件夹下有alice.test和put.test两个文件,而服务器的shared文件夹下只有alice.test文件,现在将put.test上传,成功以后再ls查看服务器目录,看到多了一个put.test文件,说明上传成功。

二、ftp服务器

安装vsftpd

apt-get install vsftpd

修改vsftpd配置文件

#先备份
cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
#修改文件
vi /etc/vsftpd.conf

#具体配置如下

listen=NO
listen_ipv6=YES

#禁止匿名访问
anonymous_enable=NO

#设定可以进行写操作
write_enable=YES

#设定上传后文件的权限掩码
local_umask=022

#禁止匿名用户上传
anon_upload_enable=NO

#禁止匿名用户建立目录
anon_mkdir_write_enable=NO

#设定开启目录标语功能
dirmessage_enable=YES

#使用本地时间
use_localtime=YES

#设定开启日志记录功能。
xferlog_enable=YES

#设定端口20进行数据连接
connect_from_port_20=YES

#设定禁止上传文件更改宿主
chown_uploads=NO

#设定vsftpd的服务日志保存路径,该文件默认不存在,必须要手动touch出来
#必须注意给与该用户对日志的写入权限,否则服务将启动失败
xferlog_file=/var/log/vsftpd.log

#设定日志使用标准的记录格式
xferlog_std_format=YES

#设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
nopriv_user=vsftpd

#设定支持异步传输功能
async_abor_enable=YES

#设定支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES

#设定Vsftpd的登陆标语
ftpd_banner=Welcome to blah FTP service.

#使用本地用户
chroot_local_user=YES

#开启用户名单
chroot_list_enable=YES

#指定用户目录列表文件
chroot_list_file=/etc/vsftpd.chroot_list

#禁用“ls -R”命令
ls_recurse_enable=NO

#一个安全选项
secure_chroot_dir=/var/run/vsftpd/empty

#pam相关
pam_service_name=ftp

#加密相关
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

#utf-8编码
utf8_filesystem=YES

ftp用户的创建管理(和之前sftp的用户组管理类似)

创建ftp-users组,创建用户adam,并将adam归入ftp-users组中

#创建ftp-users组
groupadd ftp-users
#创建ftp用户目录adam
mkdir /home/adam
#创建ftp用户adam,并且绑定其主目录为刚才创建的目录
useradd -d /home/adam adam
#设置用户adam的密码
passwd adam
#输入两次密码
#将用户adam添加到组ftp-users中,并且设置不能telnet
usermod -a -G ftp-users -s /sbin/nologin adam

上传和下载测试

在服务器的/home/adam文件夹下创建get.test文件,在客户端/home/adam文件夹下创建put.test文件

首先是使用ftp连接服务器(在客户端上操作)

ubuntu创建sftp和ftp服务器及相应的用户管理

测试下载文件,ls查看服务器文件夹下有get.test文件,使用get命令下载,退出ftp查看本地文件夹,发现多出来一个get.test文件,下载成功

ubuntu创建sftp和ftp服务器及相应的用户管理

测试上传文件,

ubuntu创建sftp和ftp服务器及相应的用户管理

注:如果在上传或下载过程中出现错误,十有八九是文件权限的问题,尤其是上传,sftp和ftp的上传都需要对服务器的文件夹写权限,需要查看对应文件夹的权限,最简单粗暴的方法就是将服务器上传的目的文件夹的权限修改为777:

chmod 777 -R /home/username

这样一般就可以了。

 

参考文档:

Ubuntu搭建SFtp服务器

我见过最好的vsftpd配置教程

linux中ftp提示--553 Could not create file

ubuntu 使用vsftpd 创建FTP服务(用户名密码登录,限制列出目录)