用户只能使用 scp 访问一个目录

用户只能使用 scp 访问一个目录

我想为我的 Ubuntu 服务器创建一个用户。我将使用此用户将一些文件从服务器复制到我的本地计算机。因此权限应该非常有限。此用户只能访问/一些/路径目录并读取文件。仅此而已。

为了实现这一点,我创建了一个用户:

sudo useradd scp_user -M -d /some/path
sudo groupadd scp_group
sudo usermod scp_user -g scp_group
sudo usermod scp_user -s /bin/false  # disable ssh login
sudo chown -R scp_user:scp_group /some/path

在我的 ssh 配置文件中:

Match Group scp_group
    ChrootDirectory %h
    #ForceCommand scp 
    AllowTcpForwarding no

但出现错误:

scp scp_user@IP:/some/path/test.zip test.zip
scp_user@IP's password:
Could not chdir to home directory /some/path: No such file or directory
/bin/false: No such file or directory

你能告诉我我遗漏了哪一步吗?

答案1

您的问题存在各种缺陷,正如其他人指出的那样:

  • ChrootDirectory您的用户监禁在他的主目录中
  • 在该目录中,没有/bin/false可执行文件(也没有/bin/scp其本身所需的文件scp)。

您可以:

  • scp二进制文件及其所需的动态加载库复制到 chroot (用户主目录)
  • 将用户 shell 改回/bin/bash/bin/sh
  • 将二进制bash文件sh及其所需的动态加载库复制至 chroot(用户主目录)
  • (这太糟糕了……)

或者直接使用sftp

  • 指定Subsystem sftp internal-sftp(并可能ForceCommand internal-sftp)在sshd_config
  • 重启sshd服务器

您可能还会遇到一些权限问题(请阅读服务器日志中的错误!)。

相关内容