2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

创建一个只有权访问特定文件夹的SSH用户。

我安装了SSH,但我发现如果用我原来的账号登录Ubuntu,它的权限太多。

我想约束该用户在Ubuntu中只能拥有特定文件夹的权限。如何配置这样的用户?

答案 (2)

53
53
53
2010-06-06 12:49:32 +0000

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

adduser --home /restricted/directory restricted_user

这样就会创建一个用户restricted_user,目录/restricted/directory,然后就会设置该目录的权限,这样用户就可以写到该目录。默认情况下,它不会有写入任何其他目录的能力。

如果你已经有了这个目录,你可以运行adduser命令,并附加--no-create-home选项,然后手动设置权限(也是用root权限),比如。

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

如果你需要让这个用户连世界上可写的目录都无法访问,有两种变体:

1) 如果你想给用户提供一个交互式的shell会话,那么可以考虑按照本手册来创建chroot jail(在你的/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服务器后(它不会在重启时杀死交互式会话,所以即使你配置错误也是安全的;而且,在你检查你仍然能够登录之前,不会关闭正在运行的会话),一切都应该按照预期工作。

5
5
5
2017-11-04 02:03:42 +0000

最简单的方法是创建受限用户,使其不能离开给定的目录(例如,到上层目录等),并有一组有限的/选定的命令可以使用,就是使用受限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的列表中,或者任何特殊的组,那么它将被默认限制。

有了Restricted Shell,以下操作将被禁止或不执行。 builtin命令

  • 指定一个包含斜线的文件名作为hash builtin命令的-p选项的参数

  • 在启动时从shell环境中导入函数定义

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

  • 使用"/“、”/“、”/“、”/“、”/“、”&“重定向输出。

-使用exec builtin命令用另一个命令替换shell

-使用enable builtin命令的-f和-d选项添加或删除builtin命令

-使用enable builtin命令启用禁用的shell builtins

-指定命令builtin命令的-p选项

-使用set +r或set +o restricted关闭限制模式。

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

此外,为了限制用户使用一组有限的/选定的命令,你可以创建一个.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

等。

HTH