仅允许 UNIX 组通过 SSH 访问单个文件

仅允许 UNIX 组通过 SSH 访问单个文件

我想设置一组 UNIX 用户,他们只能通过 SSH 访问一个特定的 Python 文件。也就是说,他们不能运行任何其他命令/程序或查看文件结构的任何部分。

我已经通过在登录时运行脚本并禁用键盘中断来实现这一点,但这并不理想,因为用户仍然可以通过 WinSCP 连接并浏览文件结构。我考虑过设置一个将用户限制在某个目录中的监狱,但这似乎有点过头了,而且仍然允许他们访问 shell。最有效/最安全的解决方案是什么?

根据要求编辑更多详细信息: 该脚本需要在服务器上执行,因为它经常连接并更新/读取驻留在服务器上的数据库。用户将通过脚本在服务器上相互交互。我不想要求用户下载/安装除 SSH 客户端之外的任何东西,但我确实想限制对脚本之外的服务器所有部分的访问。

答案1

我的解决方案是按照 Kenneth 的评论进行设置lshell——非常简单且快捷。

  1. 奔跑sudo apt install lshell去得到lshell
  2. 创建一个 UNIX 组(例如sudo groupadd testgroup
  3. 将必要的用户添加到您的组(例如sudo usermod -a -G testgroup username
  4. 还将用户添加到lshell组(例如sudo usermod -a -G lshell username
  5. /etc/lshell.conf使用所需配置进行编辑(见下文)
  6. 设置lshell为用户的默认 shell(例如chsh -s /usr/bin/lshell username

使用以下配置,testuser只能script.py通过 SSH 登录后才能运行。它们无法连接 SCP/SFTP 或通过 shell 浏览文件结构。

[grp:testgroup]
login_script    : "python /some/path/script.py"
path            : "/some/path/"
forbidden       : ["ls", "echo", "cd"]
scp             : 0
sftp            : 0

相关内容