「掌握技巧!Linux SFTP如何限定用户访问目录?」 (linux sftp 限定目录)

掌握技巧!Linux SFTP如何限定用户访问目录?

在 Linux 上,SFTP 协议是一种在 SSH 协议基础上运行的文件传输协议。它可以提供一种安全的传输方式,即使在不安全的网络环境下也可以使用。SFTP 通常用于从远程服务器传输文件,它比传统的 FTP 更加安全,因为 SFTP 会在传输数据的时候加密内容。然而,有时候我们需要限定用户(如匿名用户)只能在特定目录下工作,以防止他们访问不必要的文件或文件夹。本文将介绍如何限制用户只能访问某个特定的目录,以提高安全性。

为什么要限制用户访问目录?

在 Linux 中,SFTP 服务会默认地允许所有用户在服务器问和浏览文件和文件夹。这对于许多用户来说是一个问题,尤其是对于匿名或未经授权的用户。如果服务器上的任何用户都可以随意访问服务器上的任何文件或目录,那么这将对服务器的安全性构成威胁。特别是当你面临一个公共云环境时,这种威胁就更加严重了。因此,为了确保服务器的安全性,你需要限制用户在服务器问的目录。

如何限制用户访问某个特定目录?

Linux SFTP 服务器配置文件通常位于 /etc/ssh/sshd_config 中。要限制用户在 SFTP 服务器问某个特定目录,你需要打开此文件,并添加一些配置选项。

让我们假设你的服务器是一个 Ubuntu 系统,并且你已经安装了 OpenSSH 服务器。你可以按照以下步骤来限制用户访问服务器上的特定目录。

之一步:在终端中以管理员身份登录服务器。你可以使用以下命令登录:

$ ssh root@

第二步:打开 /etc/ssh/sshd_config 文件,并找到 Subsystem sftp 段落。该段落在文件中的位置可能会有所不同,但通常位于文件的末尾。找到 Subsystem sftp 段落后,添加以下配置信息:

Subsystem sftp internal-sftp

Match Group sftpusers

ChrootDirectory /var/sftp/%u

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

以下是配置信息的详细说明:

– Subsystem sftp internal-sftp:将 SFTP 子系统重定向到内部 sftp 二进制文件。

– Match Group sftpusers:将这些设置应用于名为 sftpusers 的用户组。如果还没有这样一个用户组,可以使用以下命令来创建它:sudo groupadd sftpusers。

– ChrootDirectory /var/sftp/%u:此选项指定根目录的路径。在本例中,根目录被设置为 /var/sftp/ 目录下的用户登录名(%u),也就是每个用户在其中具有指定的目录。例如,如果一个用户的登录名为 alice,则她的根目录为 /var/sftp/alice。如果该目录不存在,则在指定的路径下创建一个目录,并将其设置为该用户的根目录。

– X11Forwarding no:禁用用户对 X11 屏幕的访问。

– AllowTcpForwarding no:禁用对 TCP 传输的访问。

– ForceCommand internal-sftp:限制用户对服务器的访问。如果用户尝试执行进一步的指令,那么这个选项将强制使用 SFTP。

第三步:在 /var/sftp/ 目录下,创建用于存储用户文件的目录。例如,如果你想要让 alice 用户只能访问 /var/sftp/alice 目录,请执行以下命令:

$ sudo mkdir /var/sftp/alice

第四步:将你想要限制访问的文件和目录的所有者更改为 SFTP 用户。例如,如果你将 alice 用户添加到了 sftpusers 用户组中,则可以像下面这样进行更改:

$ sudo chown alice:sftpusers /var/sftp/alice

第五步:设置适当的文件权限,以确保用户不能访问你不希望他们访问的文件。例如,如果你想要 alice 用户只能读取和写入自己的文件,但不能查看其他用户的文件,请使用以下命令:

$ sudo chmod 700 /var/sftp/alice

现在,当 alice 用户登录到 SFTP 服务器上时,她将被限制为仅访问 /var/sftp/alice 目录中的文件和文件夹。

相关问题拓展阅读:

  • 系统之家Linux如何关闭scp和sftp命令怎么办
  • linux配置sftp
  • Linux(RH)如何禁止某些用户使用SFTP

系统之家Linux如何关闭scp和sftp命令怎么办

你好,方法如下:

禁止scp和sftp命令

  系统:centos 5.x

 告唯物 1.先禁止scp

  rpm -qa|grep openssh-*

  yum remove openssh-clients -y

  删除了openssh-clients后,再执行scp,就会报下面的错误:

  -bash: scp: command not found

  2.禁止sftp

  vi /etc/ssh/sshd_config

  Subsystem sftp /usr/libexec/openssh/sftp-server

  把这行注释了,如下:

  #Subsystem sftp /usr/libexec/openssh/sftp-server

  退出保存后,重启sshd:

  service sshd restart

  山兄以上就是linux系统中禁止scp和sftp命令的方法了。有需要或者是有兴趣的袜液用户,可以在自己的电脑上尝试操作一下。

Linux上设置用户通过SFTP访问目录的权限的方法

sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。租稿

1.查看openssh软件版本,想sftp服务用户只能访问特定的文件目录,版本需要4.8以上

# rpm -qa | grep openssh

openssh-server-5.3p1-81.el6_3.x86_64

openssh-5.3p1-81.el6_3.x86_64

openssh-clients-5.3p1-81.el6_3.x86_64

2.新增用户,限制用户只能通过sftp访问

# useradd -m -d /opt/ftp/dave -s /in/nologin dave

3.限制用户通过sftp登录进来时只能进入主目录,修改/etc/ssh/sshd_config文件

# vim /etc/ssh/sshd_config

#Subsystem sftp /usr/libexec/openssh/sftp-server

Subsystem sftp internal-sftp

Match User dave

ChrootDirectory /opt/ftp/dave

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

重启ssh

4.测试访问

:test# sftp -oPort=22

Connecting to 10.1.6.175…

‘s password:

Read from remote host 10.1.6.175: Connection reset by peer

Couldn’t read packet: Connection reset by peer

发现连接不上,查看日志

# tail /var/log/messages

Jan 6 11:41:41 localhost sshd: fatal: bad ownership or modes for chroot directory “/opt/ftp/dave”

Jan 6 11:41:41 localhost sshd: pam_unix(sshd:session): session closed for user dave

解决方法:

目录权限设置上要遵循2点:

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属闹瞎主和属组必须是root;

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限更大设置只能是755。

linux配置sftp

|

查看openssh的版本,使用ssh -V 命令 来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级。

|

1、滚昌创建sftp用行岩户组

2、创建ftp用户

3、创建yanqi家目录并指定

注释:给大带扒家目录更改属主并授权家目录属主必须是root,权限可以是755或者750

4、创建可写目录

5、编辑配置文件/etc/ssh/sshd_config

6、验证

注释:文件只能删除至/opt/data/file目录下,可以上传和删除。

Linux(RH)如何禁止某些用户使用SFTP

可以用sshd的配置项:DenyUsers,AllowUsers, DenyGroups,AllowGroups

举个例子:

把你希望禁止使用使用sftp服务的雹兄用户都加入某个组比如xyz

然后在/etc/ssh/sshd_config设置

DenyGroups xyz

这样所有属于xyz的用户就没有登录ssh的权限了,源乎袭自然也没有使用sftp的权限了。

注意仅仅在sshd_config禁止掉sftp-server是不够的,因为只要用户顷迹还能通过

ssh登录就可以用其他user space 的工具如scp上传下载文件,效果其实跟sftp是一样的。

Linux系统可以通过sshd的配置项,禁止某些用户sftp登陆,方法如下:

1、打开sshd的配置文件

vi/etc/ssh/sshd_config

2、修改该配置文件,增加或修改如下行

# 禁止用户user1登陆,多个用户空格分隔

DenyUsers user1

# 禁止用户组group1的所皮液有用户登录,多个空格分隔

DenyGroups group1

3、保存配置后,重启sshd

/etc/rc.d/init.d/sshd restart

#完成上面的配置后,就可以禁止用户或用户组的用户进行SFTP登录

4、配置完毕后,在其它linux机器上使用燃镇物如下命令进行测试

# 使用ssh测试

# ssh 

‘s 旅告password:

Permission denied, please try again.

# 使用sftp测试

# sftp 

‘s password:

Permission denied, please try again.

#Permission denied 授权被拒绝,已经实现禁用该用户使用sftp

印象里 sshd 的访问,需要给用户加入 ssh 组。如果没有加入 ssh 组,用户是无法登陆没饥 ssh 的。当然这要看系统的具体行尘设计。

一般服务器专用的 Linux 系统都是这么设计的。你把用户移出 ssh 组就行了。

其实还有一个办法就是,ftp 单独使用自己的用户列表,而不是使用系统用户列表。但这样会降低用户 ID 的系统集成度。但 ftp 用户没有这个主机系统的 ID ,他们也就没有办法访问档察禅任何 ftp 之外的东西了。

linux sftp 限定目录的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux sftp 限定目录,「掌握技巧!Linux SFTP如何限定用户访问目录?」,系统之家Linux如何关闭scp和sftp命令怎么办,linux配置sftp,Linux(RH)如何禁止某些用户使用SFTP的信息别忘了在本站进行查找喔。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《「掌握技巧!Linux SFTP如何限定用户访问目录?」 (linux sftp 限定目录)》
文章链接:https://zhuji.vsping.com/24602.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。