给sftp创建新用户、默认打开和限制在某个目录
一、环境:
CentOS 6.8
使用 FileZilla 进行 sftp 连接
二、背景
给外包的工作人员提供我司服务器的某一目录的访问(包括读写)权限,方便他们部署代码文件。
之所以是某一目录的访问,是因为 SFTP 的用户登录后,默认是能看到整个系统的文件目录,这样很不安全。
题外话:如果是针对 ftp 的用户权限管理,推荐使用 vsftpd,可通过 yum 直接安装。
三、正文
1、创建新用户
adduser sftpuser1
useradd 和 adduser 的区别
useradd 只会添加一个用户,并没有创建它的主目录,除了添加一个新用户之外什么都没有。这个用户甚至不能登录,因为没有密码。所以这里选择 adduser。
2、设置该用户密码
passwd sftpuser1
回车后再输入密码即可
3、禁止该用户登录 SSH
因为我们只想该用户使用 SFTP,并不需要该用户能登录 SSH,威胁安全。
usermod -s /bin/false sftpuser1
将sftpuser1的 shell 改成 /bin/false。
4、修改该用户的家目录
usermod -d /data/wwwroot/user1/ sftpuser1
这样每次用户访问服务器都会默认打开/data/wwwroot/user1/,但还是可以跳出这个访问其它目录,需要进行下面一步的操作。
5、设置 sshd_config:
打开sshd_config文件
vi /etc/ssh/sshd_config
找到 Subsystem sftp 这一行,修改成:
Subsystem sftp internal-sftp
UsePAM yes
Match user sftpuser1
ForceCommand internal-sftp
ChrootDirectory /data/wwwroot/user1/
将上面的 sftpuser1 和 /data/wwwroot/user1/ 替换成你需要的。
多个用户请重复配置这三行:
Match user sftpuser2
ForceCommand internal-sftp
ChrootDirectory /data/wwwroot/user2/
这样可以为不同的用户设置不同的限制目录。
6、重新启动 sshd 服务:
/etc/init.d/sshd restart
现在用 SFTP 软件使用sftpuser1用户登录,就可以发现目录已经被限定、锁死在/data/wwwroot/user1/了。
四、可能遇到的问题
1、修改sshd_config文件后重启 sshd,报错:Directive 'UseDNS' is not allowed within a Match block
语法错误,原因未知,只需要把两段配置的位置互调就不报错了。
修改前:
Subsystem sftp internal-sftp
UsePAM yes
Match user sftpuser1
ForceCommand internal-sftp
ChrootDirectory /data/wwwroot/user1/
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes
修改后:
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes
Subsystem sftp internal-sftp
UsePAM yes
Match user sftpuser1
ForceCommand internal-sftp
ChrootDirectory /data/wwwroot/user1/
注:当你出现这个错误的时候,sftp 肯定是连不上了。如果你习惯用 FileZilla 去修改配置文件,那么此时你得不情愿的切换到
shell,去用 vi/vim 去修改它了。
2、新用户通过 sftp 访问时,权限不全,只能读不能写
我试着用 root 账号去把该用户的家目录权限改成 777,但是会出现该用户 sftp 登陆不了的情况。(报错:Server unexpectedly closed network connection)
google 了原因如下:
给新用户的家目录的权限设定有两个要点:
1、由 ChrootDirectory 指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是 root
2、由 ChrootDirectory 指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限(最大权限 755)
如果违反了上面的两条要求,那么就会出现新用户访问不了 sftp
的情况。
所以/data/wwwroot/user1/及上级的所有目录属主一定要是
root,并且组权限和公共权限不能有写入权限,如果一定需要有写入权限,那们可以在/data/wwwroot/user1/下建立 777 权限的文件夹。
mkdir /data/wwwroot/user1/upload
chown -R sftpuser1:root /data/wwwroot/user1/upload
这样sftpuser1用户就可以在/data/wwwroot/user1/upload里随意读写文件了。
给sftp创建新用户、默认打开和限制在某个目录的更多相关文章
- Ubuntu创建新用户并增加管理员权限
1.Ubuntu中的root帐号默认是被禁用了的,所以登陆的时候没有这个账号 打开终端开启root账户 sudo passwd -u root sudo passwd root 设置root密码,输入 ...
- mysql5.6创建新用户并给授权指定的数据库权限
一.环境: CentOS 6.8 mysql 5.6 二.背景 给外包的工作人员提供我司某台服务器的 mysql 中某个数据库的访问权限. 之所以要做限制,是防止他们对我司其他的数据库非法进行操作. ...
- ubuntu创建新用户
ubuntu和windows一样,可以任意创建或者删除新的用户,windows下比较简单,ubuntu下需要使用命令,不过操作起来不是很繁琐,所以我尽量写的详细一些. 如何创建ubuntu新用户? ...
- Ubuntu创建新用户并设置权限
打开终端开启root账户 sudo passwd -u root 设置root密码,输入两次 sudo passwd root 切换root账号 su - 或 su root 退出root账户使用ex ...
- Ubuntu创建新用户并增加管理员权限(授权有问题)
转自:Ubuntu创建新用户并增加管理员权限 $是普通管员,#是系统管理员,在Ubuntu下,root用户默认是没有密码的,因此也就无法使用(据说是为了安全).想用root的话,得给root用户设置一 ...
- Linux下如何创建新用户
Linux下如何创建新用户 Linux系统中,只有root用户有创建其他用户的权限.创建过程如下: useradd -d /home/newuser newuser(设定了该用户的主目录和用户名) ...
- linux私有ftp搭建与创建新用户
一.私有ftp搭建 以后补充 1. 搭建 2.修改配置文件 二.创建新用户 在linux搭建好私有ftp后,默认存放目录是 /var/ftp/ 我们有时候需要给外部公司之类的用,但又不想让他们直接在 ...
- TestCase--网站创建新用户管理模块
对于web测试,用户权限管理模块是必测的一个点,所以今天就来总结一下创建新用户管理模块的测试用例 参考图如下: 测试用例设计如下: 一.功能测试 1. 什么都不输入,单击“立即提交”,页面是否有提示 ...
- [转帖]postgres 创建新用户并授权-- 非常好的
postgres 创建新用户并授权 https://blog.csdn.net/XuHang666/article/details/81506297 原作者总结的挺好的 可以用来学习一下. grant ...
随机推荐
- Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现
(一)集合框架: Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(实现接口的类).所有抽象出来的数据结构和操作(算法)统称为集合框架. 程序员在具体应用的时候,不必考虑数据结构和 ...
- ASP.NET自定义处理程序
要创建自定义处理程序,可以创建一个实现IHttpHandler接口的类. 该类有两个重要的参数:IsResuable属性和ProcessRequest方法.如果处理程序实例可以在不同的请求中重用,Is ...
- 1094:零起点学算法01——第一个程序Hello World!
Description 题目很简单 输出"Hello World!"(不含引号),并换行. Input 没有输入 Output 输出"Hello World!" ...
- ios 视频拼接/合成
上面的图说明的是这个混合的过程,下面放代码: - (void)mergeAndExportVideos:(NSArray*)videosPathArray withOutPath:(NSString* ...
- Eclipse 中 Java 项目中 .settings 文件夹作用
今天工作时,因对 .settings 文件夹误操作,耗时 6 个多小时,才了解到原因就出在 .settings 文件夹.经查阅资料,对 .settings 做如下整理: 就如setting这个名字,就 ...
- 记录一个NPE问题
昨天在做公司项目时,我在一处地方加了一个逻辑校验,之后测了下发现在方法调用深处有一处NPE,来源于另一个同事的代码. 其实NPE本应该是个Java编程中老掉牙的问题,但我觉得这一处错误还是比较典型的, ...
- 《Effective C#》读书笔记-1.C# 语言习惯-1.使用属性而不是可访问的数据成员
思维导图: 大纲: 1.使用属性而不是可访问的数据成员 属性 指定不同的访问权限 隐式属性降低了声明属性的工作量 允许将数据成员作为公共接口的一部分暴露 ...
- C语言学习的第一章
首先,学习编写程序要先知道什么是程序,我们为什么要写程序? 程序就是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合.程序里有很多算法,算法是解决问题的具体方法和步骤,就像我们想要得 ...
- 微信公众号、H5、APP三者各有什么优势?
昨天给大家分享了一个现在很热的H5,众所周知,当下H5手机网站.微信公众号.APP这三种载体都越来越火了,而且三者都有各自的一些优势和劣势. HTML5(H5) H5之所以能引发如此广泛的效应,根本在 ...
- bzoj4514 [Sdoi2016]数字配对
Description 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对 ...