![创建只能连接到特定目录的用户](https://linux22.com/image/52676/%E5%88%9B%E5%BB%BA%E5%8F%AA%E8%83%BD%E8%BF%9E%E6%8E%A5%E5%88%B0%E7%89%B9%E5%AE%9A%E7%9B%AE%E5%BD%95%E7%9A%84%E7%94%A8%E6%88%B7.png)
我为一些朋友创建了一个 SSH 文件夹。我已经创建了通过 SSH 登录的用户,但他们连接到~
我如何设置他们可以连接到哪个文件夹?
我有一个名为 /usbdrv/ 的目录,它指向我的 USB 驱动器。
PS:他们不能进入父目录。
答案1
设置用户的主目录仅确定他们默认所在的目录。用户可以看到文件系统的其余部分。
如果您希望某个帐户仅限于文件传输并且只能访问特定的目录树,则需要“监禁”该用户。这是OpenSSH 原生支持;例如,如果您将这些朋友(并且只有他们)放入friends
组中:
Match Group friends
ForceCommand internal-sftp
ChrootDirectory %h
#AuthorizedKeysFile /etc/sshd/friends/%u.authorized_keys
将ChrootDirectory
这些用户限制在他们的主目录中。如果它们都具有相同的主目录,那么它们都能够使用相同的 SSH 密钥,这可能不是您想要的。AuthorizedKeysFile
如果您不希望这些用户能够上传他们自己的授权密钥,请取消注释该行。
如果您想从身份验证的角度独立对待这些用户,不希望他们能够操纵自己的密钥,并希望让他们都访问同一目录树,那么您可以设置一个特定的目录:
Match Group friends
ForceCommand internal-sftp
ChrootDirectory /pub
如果您想让这些用户访问文件系统的多个部分,您可以使用绑定挂载创建组合视图。
ForceCommand internal-sftp
限制这些用户只能进行SFTP 访问(例如使用Filezilla 或通过SSHFS)。如果您想允许其他方法(例如 rsync),您需要更高级的配置,例如使用RSSH(阅读chroot指导)。
答案2
除非您专门创建了用户没有主目录,标准目录创建在/home/username
.该目录只是当前 shell 或 ssh 用户~
相应位置的链接。/home/username
例如,cd ~
如果以 root 或指定用户身份执行,该命令会将您发送到不同的位置。
您可以指定用户的创建用户期间的主目录或将其移动到不同的主目录。要更改用户的当前主目录,请以 root 身份执行以下命令:
usermod -m -d /path/to/new/home/dir username
只需确保您对新目录结构拥有正确的所有权和权限即可。
你也可以选择更改默认ssh目录。但您可能想移动主目录,因为恕我直言,这似乎更安全。