我正在运行一个服务器上的专有软件,我的用户可以通过 SSH 执行这些软件。但是,我想禁止使用 SSH 从我的服务器下载该软件(例如包含可执行文件的目录等)。
这怎么可能?有可能吗?如果不可能,是否有某种字节码保护机制,就像游戏对许可证密钥所做的那样?
答案1
您需要使用该sudo
机制。
- 创建拥有软件“foo-user”的特殊用户
- 安装软件并将文件所有者更改为“foo-user”,删除组和其他用户对这些文件的权限(
chmod go-rwx
) /etc/sudoers
添加能够运行该软件的用户:用户(全部)=(foo-用户)/path/to/software
- 指导用户如何使用
sudo -u foo-user /path/to/software
它,或者.desktop
为他们准备文件。
缺点是用户foo-user
需要能够访问user
主目录才能user
编辑自己的文件。如果有多个用户需要访问软件,这可能会成为一个问题。
此外,如果相关软件具有任何高级文件管理功能,则可以使用它将其自己的文件从受限文件夹中复制出来。umask
应该可以阻止它,但编辑文件会更加麻烦。
对于 GUI 应用程序,您可以使用kdesudo
或gksudo
。
答案2
在 chroot jail 中运行 shell,并使软件(在 jail 外运行)可通过端口/套接字/其他方式访问。
答案3
通过代理运行软件,代理充当用户和程序之间的输入/输出中介。这样,用户就无法访问字节码,因此无法复制它(如用户 unknown 的回答中所述)。
答案4
会外壳对你有用吗?为用户设置受限 shell,以便他们只能执行你想要的软件,并禁用一切包括普通的 shell 命令和 sftp/scp。此外,所有被禁止的命令都将被记录,因此如果有人试图复制某些内容,他/她很快就会被抓住。