创建仅具有访问特定文件夹权限的SSH用户


47

我安装了SSH,但是我发现如果我使用原始帐户登录Ubuntu,它具有太多的权限。

我想限制用户只对Ubuntu中的特定文件夹具有权限。如何配置这样的用户?

Answers:


49

这很简单。只需创建一个新用户,并将其主目录设置为您需要他的用户有权访问的主目录(此命令必须sudo在root shell 下或在root shell中运行):

adduser --home /restricted/directory restricted_user

这将创建一个user restricted_user,目录/restricted/directory,然后将设置目录权限,以便用户可以对其进行写入。默认情况下,它无法写入任何其他目录。

如果已经有了目录,则可以运行adduser带有--no-create-home附加选项的命令并手动设置权限(也具有root特权),例如:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

如果您需要使该用户无法访问全球可写目录,则有两种变体。

1)如果要向用户提供交互式shell会话,请考虑按照本手册中的步骤创建chroot监狱/restricted/directory

之后,将以下内容添加到您的sshd_config

Match user restricted_user
  ChrootDirectory /restricted/directory

2)如果您只需要他在他的连接端点和主机之间复制文件,一切将变得更加容易。将这些行添加到您的末尾sshd_config

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem       sftp    internal-sftp

然后Subsystem sftp /usr/lib/openssh/sftp-server通过#在开头放置一个井号()来注释掉。

重新启动SSH服务器后(它不会在重新启动时终止交互式会话,因此即使您配置错误也很安全;此外,在您检查是否仍可以登录之前不会关闭正在运行的会话),一切正常如预期。


1
我试过了,但是看来我仍然可以cd ..并浏览上一级目录。当我在上层目录中使用vi a.txt时,它显示:按enter或command继续,但我无法退出vi
Foolish

1
如果用户仅具有sshfs访问权限,我可以使用选项#2吗?
flickerfly 2013年

1
一切正常,除了我没有写许可。如何设置此受限目录的写许可权。如果我使用chmod 775,则该用户无法登录。
我的名字是

3
您应该Subsystem sftp internal-sftp在该Match块上方的第二个示例中编写该行。否则,ssh将打印出错误并且不会启动。
Tik0

1
扰流板警报:不适用于scp
自行车

5

创建不能在给定目录(例如,上层目录等)中徘徊并且使用受限/精选命令集的受限用户的最简单方法是使用受限Shell。参考:

http://man.he.net/man1/rbash

首先,创建一个名为rbash(以root用户身份运行)的符号链接。

ln -s /bin/bash /bin/rbash

然后只需使用此受限Shell创建普通用户,并将其主目录设置为所需的文件夹:

useradd -s /bin/rbash -d /home/restricted_folder username

即使没有受限外壳程序,如果您明确不将此用户添加到sudoer的列表或任何特殊组中,则默认情况下它将受到限制。

对于受限外壳程序,不允许执行以下操作:

  • 用cd更改目录

  • 设置或取消设置SHELL,PATH,ENV或BASH_ENV的值

  • 指定包含/的命令名称

  • 指定一个包含/的文件名作为。内置命令

  • 指定包含斜杠的文件名作为hash内置命令的-p选项的参数

  • 启动时从外壳环境导入函数定义

  • 启动时从shell环境中解析SHELLOPTS的值

  • 使用>,> |,<>,>&,&>和>>重定向运算符重定向输出

  • 使用exec内置命令将外壳替换为另一个命令

  • 在启用内置命令中添加或删除带有-f和-d选项的内置命令

  • 使用enable buildin命令启用禁用的shell内置程序

  • 在命令内置命令中指定-p选项

  • 使用设置+ r或设置+ o限制关闭受限模式。

这些限制在任何启动文件之后都会强制执行

此外/(可选)将用户限制为只能使用的一组有限的/精选的命令,可以使用以下命令创建对该用户只读的.bash_profile:

PATH=$HOME/bin

并将所有允许的命令符号链接到该用户的〜/ bin文件夹中:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

等等

高温超导


我可以在文件系统上找到任何文件,包括/ root目录,并且我可以读取这些文件。想知道如何进一步限制访问权限,以查看用户文件夹之外的任何内容或捕获任何网络数据包或读取/ var / log内容
16851556,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.