禁止下载专有软件,但允许执行

我正在运行一个服务器上的专有软件,我的用户可以通过SSH执行。 但是,我想禁止使用SSH从我的服务器上下载该软件(例如包含可执行文件的目录等)。

这怎么可能? 有没有可能? 如果没有,有什么样的字节码保护机制像游戏用许可证密钥?

你需要使用sudo机制。

  1. 创build一个拥有软件“foo-user”的特殊用户
  2. 安装软件并将文件的所有者更改为“foo-user”,删除组和其他用户的权限( chmod go-rwx
  3. 将用户添加到将能够运行软件的/etc/sudoers
     用户(ALL)=(foo-user)/path/到/软件 
  4. 要么指示用户使用sudo -u foo-user /path/to/software来运行它,要么为它们准备.desktop文件。

缺点是foo-user需要能够访问user主目录,以便user能够编辑他/她自己的文件。 如果您有多个需要访问软件的用户,则可能是个问题。

另外,如果有问题的软件具有任何高级文件pipe理function,则可以使用它将自己的文件从受限制的文件夹中复制出来。 umask应该防止它,但是然后编辑文件会更成问题。

对于GUI应用程序,您可以使用kdesudogksudo

在chroot监狱中运行shell,并使软件(在监狱外运行)通过端口/套接字/任何东西访问。

通过作为用户和程序之间的input/输出中介的代理来运行软件。 这样用户就无法访问字节码,从而将其复制(如用户未知的答案中所述)。

您可以在不设置r位的情况下将文件的x位设置为一个文件,只要该文件适合可以读取该文件的用户。 这将允许用户在不能读取的情况下执行文件,但在执行时仍然可以通过/proc/ filesystem获取文件的内容。

你会为你工作吗? 为您的用户设置一个受限制的shell,以便他们只能执行所需的软件,并禁用其他所有内容,包括普通shell命令和sftp / scp。 所有禁止的命令也会被logging下来,所以如果有人试图复制某些东西,他很快就会被抓到。

我会说一个很好的EULA。 任何真正想要得到你的代码的人都会想出一个办法。 所以有一个很好的许可协议。