无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 17699|回复: 61
打印 上一主题 下一主题

chenall 请帮忙,关于购买空间

  [复制链接]
跳转到指定楼层
1#
发表于 2018-3-3 16:47:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想购买一个 vps 之类的空间,安装 Linux,目的只有一个,在其上只开发一个基于 cling 的软件。

我的想法是,让所有的人都能访问,随时检验开发的结果。就是说,给大家开放 shell 权限,让大家可以登录服务器,执行命令行操作。

我不希望让人执行非法操作,比如,用这个 shell 命令行来干违法的事情。

只是一个初步的想法,还没仔细考虑,我不知道是否可行。

chenall 比较有经验,请问你有什么建议和忠告吗?

其他人也可以谈谈。什么都可以谈,比如,在哪里购买空间?安装什么版本的操作系统?如何采取安全措施?等等。
推荐
 楼主| 发表于 2018-3-4 20:03:12 | 只看该作者
本帖最后由 不点 于 2018-3-5 00:07 编辑

编译完成了。

目前先这样运行它:

~/inst/bin/cling  -include  stdlib.h

【更新】不需要手动增加命令行参数 -include stdlib.h 了。直接执行不带参数的 ~/inst/bin/cling 即可。

然后敲入 ls 回车,就可体验 shell 的味道了。更多体验的方法,以后再详述。

目前只是概念证明性质的,还不是正式的发布。

以下是几个测试的语句:



  1. deb@debian64:~$ ~/inst/bin/cling -include stdlib.h

  2. ****************** CLING ******************
  3. * Type C++ code and press enter to run it *
  4. *             Type .q to exit             *
  5. *******************************************
  6. [cling]$ ls
  7. a.out     clone.sh.sav  dash_new  node-v9.6.1-linux-x64  obj_old  src       src.diff.gz   src_old  src.tar.gz  wetty   公共  视频  文档  音乐
  8. clone.sh  dash          inst      obj                    obj.old  src.diff  src.diff.old  src.old  ttt         yash.c  模板  图片  下载  桌面
  9. [cling]$ system
  10. sh: 1: system: not found
  11. (int (*)(const char *)) Function @0x7f4cbbad0450
  12. [cling]$ system("ls");
  13. a.out     clone.sh.sav  dash_new  node-v9.6.1-linux-x64  obj_old  src       src.diff.gz   src_old  src.tar.gz  wetty   公共  视频  文档  音乐
  14. clone.sh  dash          inst      obj                    obj.old  src.diff  src.diff.old  src.old  ttt         yash.c  模板  图片  下载  桌面
  15. [cling]$ if (
  16. [cling]$ ?   ls
  17. [cling]$ ?   );
  18. a.out     clone.sh.sav  dash_new  node-v9.6.1-linux-x64  obj_old  src       src.diff.gz   src_old  src.tar.gz  wetty   公共  视频  文档  音乐
  19. clone.sh  dash          inst      obj                    obj.old  src.diff  src.diff.old  src.old  ttt         yash.c  模板  图片  下载  桌面
  20. [cling]$ printf("hello!\n");
  21. hello!
  22. [cling]$
复制代码



简单解释一下。

默认时,命令行首先当作 shell 命令来对待,失败时再进行 C++ 的处理。但具有下面这些特征的行,不进行 shell 的解释,而直接当作 C++ 代码来处理:

1、以 “#” 开头的行
2、以 “)”、“]”、“}” 开头的行
3、以 “(”、“[”、“{” 结尾的行
4、以 “\”(反斜杠)、“,”(逗号)、“;”(分号)、“//”(双斜杠)结尾的行

不再为 shell 单独设计控制结构(if,for,while 等),而是直接纳入 C++ 语言控制结构(if,switch,for,while 等)来统一管理。

(这只是个初步的草案,随着开发的逐步深入,以后可能还会有增删)。

评分

参与人数 1无忧币 +5 收起 理由
不知 + 5 赞一个!

查看全部评分

回复

使用道具 举报

3#
 楼主| 发表于 2018-3-3 18:01:19 | 只看该作者
wintoflash 发表于 2018-3-3 17:10
VPS上装这种东西吗
https://github.com/nickola/web-console

没错,概念上就是如此。不过,可选的软件挺多的,除了 web-console 以外,还有 wetty,ttyd 等等,一大堆。

准备试试,哪个好,就用哪个。

回复

使用道具 举报

4#
 楼主| 发表于 2018-3-3 21:38:43 | 只看该作者
wintoflash 发表于 2018-3-3 20:49
http://45.77.210.168/
可以试试。
不要做违法的事。

这个空间有 20G,够用了,不错。gcc 等开发工具没安装。

我肯定不会做违法的事。可问题是如何让别人做不成违法的事?

必须做到防患于未然。你得设法保护好。我们也可以讨论如何保护。

另外,你说 “不太稳定”,是指啥?容易宕机?容易网络断线连不上?

回复

使用道具 举报

5#
 楼主| 发表于 2018-3-3 21:51:53 | 只看该作者
需要安装的开发工具:

gcc,g++
make
automake
autoconf
cmake

现在先讨论如何防护,这是第一位的。如果没法防护,那就后患无穷,没法用。


回复

使用道具 举报

6#
发表于 2018-3-3 22:02:06 | 只看该作者
本帖最后由 slore 于 2018-3-3 22:24 编辑

docker+git 就行了。

只提供配置文件和脚本,或者修改的代码(git clone下载下载极小数据),其他都是本地按你提供的信息(OS,工具,环境)创建相同的Linux系统,
使用者都是操作自己的虚拟LINUX系统,就没有什么安全性的问题,而且还和你的环境一模一样,且此系统镜像可以保存,撤销,回滚,销毁等。。。
如果你使用20MB~100MB左右的LINUX系统源的话,也可以直接导出镜像img,给被人使用。

当然没用过docker的话,首次使用,由于国内网络的特性,首次使用会遇到些困难。

发布者提供dockerfile文件:

dev_build\dockerfile:
  1. FROM centos:6.8
  2. # 将Dockerfile上下文中的nginx.repo复制到容器中的yum源位置
  3. COPY ./nginx.repo /etc/yum.repos.d/nginx.repo
  4. RUN yum makecache
  5. # 安装nginx
  6. RUN yum install -y nginx
  7. # 修改nginx首页信息
  8. RUN echo "home page of container niginx server" > /usr/share/nginx/html/index.html
  9. # 暴露80端口
  10. EXPOSE 80
复制代码



使用者:

1.构建镜像
D:\dev_build>docker build -t "my/nginx"

2. 运行容器
# 查看刚才构建的镜像
docker images my/nginx
#启动容器(含端口映射)
docker run -d -p 8080:80 --name my-nginx-server my/nginx nginx -g "daemon off;"

3.使用
访问本机8080端口,将访问容器系统的80端口,连接到nginx服务。
0.0.0.0:8080
回复

使用道具 举报

7#
 楼主| 发表于 2018-3-3 22:29:58 | 只看该作者
看到 wintoflash 已经安装好了开发工具。接下来请安装 cling。我也可以执行安装,但不如你自己在本机上安装得更好。

请注意 cling 要在普通用户的目录下安装,而不是以 root 身份安装。

cling 的主页:https://root.cern.ch/cling

cling 的安装指导:https://root.cern.ch/cling-build-instructions

请下载这个安装脚本:https://raw.github.com/karies/cling-all-in-one/master/clone.sh

在普通用户的主目录( $HOME )下,执行

bash clone.sh

就开始自动下载、编译、安装。安装过程会很漫长,要持续几个小时(4个小时,甚至更多)。

如果你不是在本机上操作,而是在远程操作电脑(肯定是这样,因为是 VPS 啊),最好这样来安装:

nohup ./clone.sh &

这样,它就不会在屏幕输出很长的信息了,也节约你的网络流量。此时你可以执行

exit

注销用户。

等待几个小时以后,再进去看看,它应该安装好了。

回复

使用道具 举报

8#
 楼主| 发表于 2018-3-3 22:48:33 | 只看该作者
断线,连不上了。空间不稳定?
回复

使用道具 举报

9#
 楼主| 发表于 2018-3-3 23:03:58 | 只看该作者
还需要安装 python,才能执行 clone.sh。

你只需把 python 安装好,我自己可以安装 cling。

我直接安装我修改好了的 cling,否则,用原版的,还得打补丁,再运行,很耗时。

所以你就不必安装 cling 了。

回复

使用道具 举报

10#
 楼主| 发表于 2018-3-3 23:11:39 | 只看该作者
本帖最后由 不点 于 2018-3-3 23:12 编辑

你已经安装好了 cling。不过,我需要在用户目录下安装 cling 源代码。前面说了,是我修改后的源码。

需要你把 python 安装好。剩下的事,我来做。

安装 python3 应该是可以的。

回复

使用道具 举报

11#
 楼主| 发表于 2018-3-3 23:21:49 | 只看该作者
wintoflash 发表于 2018-3-3 22:58
刚才ttyd崩掉了,无法再启动。重启了一下。

安全起见,屏蔽掉了su sudo visudo。

屏蔽掉 su,sudo,visudo 确实不错。

但我觉得,还有别的安全问题。

我们不怕谁把这个系统破坏掉,我们真正应该防范的是网络犯罪。

登录这台机器,然后攻击别的机器。

你开个用户,让我能访问网络,因为我需要下载、编译。

给普通用户,就不需要有网络访问权了。

就是说,他登入这台 VPS 是可以的,但禁止他用这台 VPS 访问互联网。

这能够做到吗?

待到我下载完所有的东西,我也就不需要特殊用户账号了。

那时候,就可以删除特殊用户账号了。

回复

使用道具 举报

12#
 楼主| 发表于 2018-3-4 07:12:26 | 只看该作者
本帖最后由 不点 于 2018-3-4 07:34 编辑

昨晚 wintoflash 刚刚离线,ttyd 就崩溃了。直到现在都无法访问。

ttyd 本来是很稳定的,没这么容易崩溃。我猜 wintoflash 犯了个低级错误,可能忘了在 ttyd 之前加上 nohup:

nohup ttyd -p 80 bash &

这样,当你 logout 的时候,ttyd 进程不会被自动 kill 掉。否则,如果只是

ttyd -p 80 bash &

那么当你执行 exit 退出登录时,ttyd 就会被自动 kill 掉。




目前我正在研究如何让登入 VPS 的用户无法从 VPS 向 Internet 发起网络连接。

以下是初步的想法。

1、开放进入 VPS 的连接,因为 VPS 是服务器,如果不开放,就没法为大家服务。
2、禁止公共用户(user)从 VPS 向外部的 Internet 发起网络连接。如此一来,公共用户无法借助 VPS 发出网络攻击,也无法干那些容易遭到监管部门封杀的事情(大家都懂什么意思)。
3、为 cling 的开发者建立一个特殊账户(比如就叫 cling),这个账户也是个普通账户,不在管理员用户组里面。开发者可以从 user 的账户使用 su 命令切换到 cling 账户,这样就具有了 /home/cling 目录的读写权限。公共账户 user 无法写入 /home/cling 目录,是只读权限。公共账户可以运行 /home/cling 里面的程序,这样可以体验修改版 cling 的效果。
4、在 VPS 上开放一个 FTP 服务,目的是让 cling 用户可以上载文件到 /home/cling 之下。禁止公共账户 user 上载文件。

如此一来,基本的安全就有保障了。我感觉上述第 2 条最难实现(如果只禁止某个用户访问 Internet 的话)。

通过防火墙的设置,应该可以让 VPS 上所有的用户都无法从 VPS 向外界 Internet 发起网络连接(即使是 root 账户也不能访问 Internet)。这样,第 2 条也就实现了。


【补充】

1、强调一下,cling 用户也不需要访问 Internet。cling 用户只需要能够上载文件到 cling 用户的主目录便可(开个 FTP 之类的服务便可)。

2、root 账户有时候需要访问 Internet,执行维护任务。此时应该先暂时关闭 ttyd 服务,从而禁止了所有用户的登录,让任何用户无法 “作案”。关闭 ttyd 以后,修改防火墙设置,允许从 VPS 向外部 Internet 发起网络连接。待到 root 用户执行完下载、安装等维护工作以后,再次修改防火墙设置,禁止 Internet 访问。此时,再启动 ttyd 服务,接受用户登录。我感觉这样已经非常严谨了,差不多算是 “滴水不漏” 吧。

回复

使用道具 举报

13#
 楼主| 发表于 2018-3-4 10:36:19 | 只看该作者
wintoflash 发表于 2018-3-4 09:24
现在用的是Vultr的VPS,机房位于美国西雅图。
系统是Ubuntu 17.10 x64,配置如下
CPU: 1 vCore

好的,这个配置很棒,绝对够用。

等我下载编译好之后,你就可以把它断网了。你现在就该研究断网的方法了。

ftp 服务器还得装上,方便我以后上载文件。

还得增加一个不同于公共 user 的新账户,可以叫做 cish,因为我改造 cling 之后,新的项目就准备起这个名字。

这是因为 csh 的名字早已被占用,只好起个新的名字。cish 的含义是 C-indeed shell(“确实是 C 语言风格的 shell”),而不是 C-alike shell(“像 C 语言的 shell”)。



回复

使用道具 举报

14#
 楼主| 发表于 2018-3-4 11:29:16 | 只看该作者
本帖最后由 不点 于 2018-3-4 11:43 编辑

ttyd 又崩溃了。感觉这 ttyd 不稳定。实在不行的话,可以换成 wetty,我试过,不错。

装个 FTP 服务器,否则我还得麻烦你把补丁上传。

另外,导致 ttyd 崩溃的,是不是 screen 命令?换成 nohup 试试。


回复

使用道具 举报

15#
 楼主| 发表于 2018-3-4 12:42:06 | 只看该作者
本帖最后由 不点 于 2018-3-8 21:39 编辑

请把补丁 src.diff.gz 放在 VPS 上。

你不用打补丁,可以由我去执行打补丁,以及执行编译命令。



src.diff.gz

15.03 KB, 下载次数: 1, 下载积分: 无忧币 -2

cling 的补丁

src.diff.gz

16.05 KB, 下载次数: 0, 下载积分: 无忧币 -2

2018-3-8 更新的补丁

回复

使用道具 举报

16#
 楼主| 发表于 2018-3-4 13:45:06 | 只看该作者
wintoflash 发表于 2018-3-4 13:31
补丁已经放上去了。我把root密码给你?

不需要 root 密码。千万不要给任何人 root 密码。root 密码应该很长、很牢固才行。

普通用户即可编译,也可安装。它会安装在用户自己的主目录下。

回复

使用道具 举报

17#
 楼主| 发表于 2018-3-4 13:50:58 | 只看该作者
wetty 还没安装好吧?现在无法访问。
回复

使用道具 举报

18#
 楼主| 发表于 2018-3-4 14:45:37 | 只看该作者
已经在后台执行编译了。估计需要 4 小时才能编译完。即,大约晚上 7 点左右。
回复

使用道具 举报

19#
 楼主| 发表于 2018-3-4 15:35:23 | 只看该作者
编译出现错误:

内存耗光了

请 wintoflash 退出一些软件,然后再编译。

在编译时,只需

cd  ~/obj
make

即可接着上次的编译继续编译。
回复

使用道具 举报

20#
 楼主| 发表于 2018-3-4 15:45:34 | 只看该作者
不要紧,没事了,已经在继续编译了。
回复

使用道具 举报

21#
 楼主| 发表于 2018-3-4 15:51:28 | 只看该作者
幸亏有 1G 内存。如果再少一点,估计就不能编译了。

回复

使用道具 举报

22#
 楼主| 发表于 2018-3-4 16:00:14 | 只看该作者
编译进行了 80 分钟,编译了 30%。

粗略估计,还需要 3 个小时。大约在 7 点左右吧。

回复

使用道具 举报

23#
 楼主| 发表于 2018-3-4 17:19:04 | 只看该作者
在进行到 57% 时,又遇到内存用光的错误。反复试验了几次,都过不去。我索性把我本地编译好的 .o 文件用 rcp 命令拷贝到 VPS 相应的目录下,它认了,也继续编译了。

目前编译了 2 小时 20 分,编译进度 60%。
回复

使用道具 举报

24#
 楼主| 发表于 2018-3-4 18:52:59 | 只看该作者
本帖最后由 不点 于 2018-3-4 18:58 编辑

编译出错太多,都是内存用光,需要用 rcp 拷贝本地 .o 到 VPS。

顺便说,我在本地也是使用虚拟机。虚拟机内存 2G,编译过程很顺利。这说明 1G 内存不够用,2G 内存就够了。

目前进行到 80%,预计 8 点编译完。
回复

使用道具 举报

25#
 楼主| 发表于 2018-3-5 08:06:28 | 只看该作者
本帖最后由 不点 于 2018-3-5 08:16 编辑

wintoflash 可以 “封网” 了。我已经不需要网络了。以后如果有补丁,我可以用 rcp 命令传进去。

正如前面所说,wintoflash 还可以为开发者专门创建一个用户,把项目移到开发者账户下,免得公共账号能够随便写入项目空间。


回复

使用道具 举报

26#
 楼主| 发表于 2018-3-6 17:55:15 | 只看该作者
本帖最后由 不点 于 2018-5-6 15:22 编辑

好的,前面是 “概念证明” 的编译,所采用的 shell 解释器是 system 函数。现在已经脱离 system 函数了,改用 execvp 函数。

因此,初步的 “命令执行器” 功能已经实现,也可算是一个初步的、正式的 shell 吧,跨越了一小步。

不过,此时的 shell 只能执行外部命令,还没有内部命令。

接下来会逐步添加 exit 以及 cd 等内部命令。

以后的讨论挪到 Linux 讨论区,请移步:

cish 开发构想
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=404876


回复

使用道具 举报

27#
发表于 2018-3-6 19:29:03 | 只看该作者
嘿,大师的工作很有趣,跟随大师的步骤,去linux区去瞧瞧看。
回复

使用道具 举报

28#
 楼主| 发表于 2018-3-7 19:18:25 | 只看该作者
wintoflash 发表于 2018-3-7 17:16
这周比较忙,周末再研究wetty。
按用户断网没查到相关做法,不知道谁可以提供方法。

网络方面,我很贫穷。

如果不能按用户断网,那就 “统统地” 断了(前提是不影响你的正常使用)。前面说过,平时是断网的,当需要维护系统时,再临时放开。

回复

使用道具 举报

29#
发表于 2018-3-7 21:20:15 | 只看该作者
不点 发表于 2018-3-4 18:52
编译出错太多,都是内存用光,需要用 rcp 拷贝本地 .o 到 VPS。

顺便说,我在本地也是使用虚拟机。虚拟 ...

内存不够,开swap啊
回复

使用道具 举报

30#
 楼主| 发表于 2018-3-7 21:32:53 | 只看该作者
2011aaa 发表于 2018-3-7 21:20
内存不够,开swap啊

这个不懂的说。要是能解决,太好了。你可以教会 wintoflash,让他增加虚拟内存。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-28 07:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表