Linux 配置SFTP,配置用户访问权限
之前我服务器是使用的Windows Server 2003,这段时间由于访问量变大我还是机智的换成Linux了,在搭建FTP的时候看到网上都是推荐vsftpd,不过我不推荐这个家伙,看官且看下文。
我推荐使用SSH自带的SFTP,SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。SFTP使用加密传输认证信息和传输的数据,所以使用SFTP是非常安全的。SFTP之于FTP可以理解为Https之于Http,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
本文最终的效果:在Linux下建立sftp-users用户组,在该组下建多个用户,禁止该组所有用户ssh远程登录服务器,但是允许该组所有用户登录sftp,并只能访问自己的目录及子目录中的文件。
本文以admin用户为例,下面出现的admin均指该用户或者该用户目录。
安装ssh和openssh-sftp-server
其实Linux发行版基本都是安装了OpenSSH的,不过我们这里还是确认一下是否安装,
一般我们需要安装openssh-server、openssh-sftp-server,所以我们检查是否安装了SSH。
Ubuntu检查是否安装了OpenSSH
dpkg --get-selections | grep openssh
1
CentOS检查是否安装了OpenSSH
# 以yum方式安装的:
yum list installed openssh
# 以rpm包安装的:
rpm -qa | grep openssh
# 以deb包安装的:
dpkg -l | grep openssh
1
2
3
4
5
6
7
8
如果已经三个包都安装了,那么你的命令行该是如下:
openssh-server installed
openssh-sftp-server installed
...
1
2
3
哪个没有打印就是没有安装,安装即可。
Ubuntu 安装,依次执行以下命令,install后面只写没有安装的包名即可
sudo apt-get update
sudo apt-get install openssh-client openssh-server openssh-sftp-server
1
2
CentOS 安装,install后面只写没有安装的包名即可
sudo yum install openssh-client openssh-server openssh-sftp-server
1
如果都是安装的,我们需要保证OpenSSH的版本不得低于4.8,因为我们要用ChrootDirectory配置用户访问目录,所以检查下SSH的版本,执行命令ssh -V会打印出如下版本信息:
OpenSSH_6.6.1 Ubuntu-2ubuntu2, OpenSSL 1.0.1f...
1
如果SSH的版本低于4.8,需要升级。
Ubuntu升级SSH
sudo apt-get update
sudo apt-get install openssh-server
1
2
CentOS升级SSH
sudo yum update -y openssh-server
1
建立用户组和用户
我们要建立一个专门管理sftp用户的用户组,方便我们管理权限。
1、建立一个名为sftp-users的sftp用户组
sudo groupadd sftp-users
1
2、在该组建立几个需要登录sftp的用户
新建用户名为admin的用户:
sudo useradd -g sftp-users -m admin
1
修改admin的密码:
passwd admin
1
然后连续两次输入你要给该用户设置的密码即可。
3、如果该用户已存在,但是不在sftp-users组中,可以移动用户到改组
usermod –g sftp_users admin
1
配置ssh和权限
1、打开/etc/ssh/sshd_config文件
2、修改X11Forwarding值为no
原来可能是:
X11Forwarding yes
1
现在修改为:
X11Forwarding no
1
如果X11Forwarding不存在,就在文件最后添加上面的代码。
3、修改Subsystem sftp为internal-sftp
Subsystem sftp /usr/libexec/openssh/sftp-server
# 或者
Subsystem sftp /usr/lib/openssh/sftp-server
1
2
3
现在修改为:
Subsystem sftp internal-sftp
1
4、在文件末尾增加内容
Match Group sftp-users
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
1
2
3
4
Match Group sftp-users这一行是指定以下的子行配置是匹配sftp-users用户组的。
ChrootDirectory %h该行指定Match Group行指定的用户组验证后用于chroot环境的路径,也就是默认的用户目录,比如/home/admin。
ForceCommand internal-sftp该行强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令。
这里要特别注意,因为ChrootDirectory %h模式,所以我们等下要设置sftp-users中的所有用户的用户目录权限为root拥有,否则sftp-users组中的用户无法用sftp登录。
修改sftp-users用户组用户目录权限
上面说了,因为使用了ChrootDirectory %h,现在来修改权限。
1、修改权限为root用户拥有
chown root /home/admin
1
2、修改权限为root可读写执行,其它用户可读
chmod 755 /home/admin
1
3、重启ssh,登录sftp
sudo service ssh restart
1
现在就可以使用sftp登录了,但是我们发现,我们不能上传文件,那是因为登录后默认是用户目录,比如/home/admin,但是该目录是root用户拥有,因此我们还要修改权限。
4、在用户目录下建立子目录,让sftp-users中的用户可读写文件
我们现在在/home/admin目录下新建一个upload文件夹:
cd /home/admin/
mkdir upload
1
2
5、授权upload文件夹读写
让子文件夹upload属于admin
chown admin /home/admin/upload
1
让子文件夹upload被admin读写
chmod 755 /home/admin/upload
1
重启ssh,登录sftp
现在全部都配置完了,如果在上面第三步没有重启ssh的话,现在重启后既可以登录使用了。
sudo service ssh restart
1
centos7.x的系统如果执行上面这个命令提示不存在,执行:
sudo systemctl restart sshd
---------------------
作者:严振杰
来源:CSDN
原文:https://blog.csdn.net/yanzhenjie1003/article/details/70184221
版权声明:本文为博主原创文章,转载请附上博文链接!
Linux 配置SFTP,配置用户访问权限的更多相关文章
- Linux设置SFTP服务用户目录权限
我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务 ...
- Linux - 设置SFTP服务用户目录权限
我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 创建新用户www ...
- Linux Centos 通过虚拟用户访问FTP的配置
Linux Centos 通过虚拟用户访问FTP的配置 实验需求: 让下面4个虚拟用户使用系统用户ftpvu的权限来连接到Linux FTP服务器,并确保都锁定在 自己的虚拟用户目录,不能切换到其他目 ...
- 管理员技术(五): 配置文档的访问权限、 配置附加权限、绑定到LDAP验证服务、配置LDAP家目录漫游
一.配置文档的访问权限 问题: 本例要求将文件 /etc/fstab 拷贝为 /var/tmp/fstab,并调整文件 /var/tmp/fstab的权限,满足以下要求: 1> 此文件的拥有者 ...
- Linux 下指定端口开放访问权限
Linux 下指定端口开放访问权限 作者:Grey 原文地址: 博客园:Linux 下指定端口开放访问权限 CSDN:Linux 下指定端口开放访问权限 环境 CentOS 系和 Debian 系的防 ...
- Linux分配给该用户没有权限登陆
Linux分配给该用户没有权限登陆 sudo visudo username ALL=(ALL) NOPASSWD:ALL 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- Windows安装MongoDB 4.0并赋予用户访问权限
第一部分 Windows安装MongoDB-4.0 第一步:下载MongoDB:https://www.mongodb.com/download-center?jmp=nav#community 我目 ...
- [App Store Connect帮助]三、管理 App 和版本(8)编辑 App 的用户访问权限
对于具有“App 管理”.“客户支持”.“开发者”.“营销”或“销售”职能的特定人员(均不具有“访问报告”职能),您可以限制其在 App Store Connect 帐户中对 App 的访问权限. 必 ...
- 【linux相识相知】用户及权限管理
linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管 ...
随机推荐
- Python gensim库word2vec 基本用法
ip install gensim安装好库后,即可导入使用: 1.训练模型定义 from gensim.models import Word2Vec model = Word2Vec(senten ...
- 三星S4 i9508 4.4.2 root 教程
现在有很多一键root的软件,但是各怀鬼胎,最好不用. 最近玩腻了三方的rom,刷回了官方的rom,顿时更稳定了,以外的是这个版本的导航被切了,拍手叫好啊.输入法引入了搜狗的云输入,更方便了,官方的输 ...
- [svc]rsync简单部署
安装rsync服务端-backup服务器 yum install rsync -y useradd rsync -s /sbin/nologin -M chown -R rsync.rsync /da ...
- lua -- 系统提示框
-- -- Author: chentong -- Date: 2014-3-24 -- 系统提示: -- 先做个简单的,在中上位置出现提示,逐渐消失,如果有新提示,则直接删除旧提示. -- 规则: ...
- Goldengate:ERROR 180 encountered commit SCN that is not greater than the highest SCN already processed
How to recover from Extract ERROR 180 encountered commit SCN that is not greater than the highest SC ...
- [firefox] Scrapbook Plus的改进版Scrapbook X
我在两年前的博文<Firefox上一些我用于知识管理的扩展> 里面提到过我在用Scrapbook Plus这个Firefox扩展, 用它来撷取网页构建自己的知识库(可以加标注.可以搜索.可 ...
- 【GMT43智能液晶模块】例程二:串口通信实验
实验原理: GMT43智能液晶模块的串口包括USB_UART(CH340),TTL,RS-232,RS-485/ RS-422等四部分,USB_UART部分通过CH340芯片与STM32F429的US ...
- js调用winform程序(带参数)
我们会发现,我们点击迅雷下载的时候 网页可以调用应用程序,而且连接会传入迅雷,这个是怎么做到的呢? 原理: 先注册表中添加软件的具体信息,然后通过 href 可以直接调用 1.写入注册表信息,注册, ...
- Java知多少(70)面向字节流的应用
文件输入输出流 文件输入输出流 FileInputStream 和 FileOutputStream 负责完成对本地磁盘文件的顺序输入输出操作. [例 10-5]通过程序创建一个文件,从键盘输入字符, ...
- r 随机数
R软件一个显著的优点是它提供了丰富的随机数发生器,比SAS.Matlab方面很多,比Excel更不知方便到哪里去了.这无疑为统计学.工程学以及寿险精算学提供了很大的方便,比如我们要产生200个服从正态 ...