我想设置一组 UNIX 用户,他们只能通过 SSH 访问一个特定的 Python 文件。也就是说,他们不能运行任何其他命令/程序或查看文件结构的任何部分。
我已经通过在登录时运行脚本并禁用键盘中断来实现这一点,但这并不理想,因为用户仍然可以通过 WinSCP 连接并浏览文件结构。我考虑过设置一个将用户限制在某个目录中的监狱,但这似乎有点过头了,而且仍然允许他们访问 shell。最有效/最安全的解决方案是什么?
根据要求编辑更多详细信息: 该脚本需要在服务器上执行,因为它经常连接并更新/读取驻留在服务器上的数据库。用户将通过脚本在服务器上相互交互。我不想要求用户下载/安装除 SSH 客户端之外的任何东西,但我确实想限制对脚本之外的服务器所有部分的访问。
答案1
我的解决方案是按照 Kenneth 的评论进行设置lshell
——非常简单且快捷。
- 奔跑
sudo apt install lshell
去得到lshell
- 创建一个 UNIX 组(例如
sudo groupadd testgroup
) - 将必要的用户添加到您的组(例如
sudo usermod -a -G testgroup username
) - 还将用户添加到
lshell
组(例如sudo usermod -a -G lshell username
) /etc/lshell.conf
使用所需配置进行编辑(见下文)- 设置
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