如何使应用程序阻止自己从命令行启动?
我有一个应该由守护进程启动的二进制文件;但是当有人试图从命令行启动二进制文件时,我应该错误地说“无法从命令行启动”。 尝试使用谷歌搜索,但徒劳无功。
PS。 http://www.daniweb.com/software-development/c/threads/449682/stop-launching-from-command-line 我想检查是否有比链接中提到的更好的方法..
答案 0 :(得分:6)
我不确定是否有防弹答案(如何阻止程序从命令行启动)。你可以考虑
STDIN_FILENO
(即0)不是tty /dev/tty
(它应该失败),请参阅tty(4) 我不确定你是否总是想拒绝从终端开始。对于调试,您肯定希望能够从终端启动。如果从终端开始,我实际上只是警告,而不是退出。
您可能希望在标准路径之外安装程序,可能在某个libexec/
或sbin/
目录中。
答案 1 :(得分:2)
对于记录,使用isatty(3)进行测试仅在您自己编写二进制文件时才有效。如果您试图阻止人们启动第三方二进制文件,则该方法将失败。
一般来说,为了防止人们从命令行启动特定程序,* nix方式是chown
启动它的守护程序所拥有的二进制文件,以及由集团拥有,说no_command_line
。然后chmod 705 binary_executables
,并将所有不允许的人从组no_command_line
中的命令行运行binary_executables。
HTH