V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
a174871
V2EX  ›  程序员

[求开源项目] 有一台 Linux 的 ecs,请问能否把他变成一个可以多个用户练习 shell 命令的服务器

  •  
  •   a174871 · 2020-04-28 17:44:57 +08:00 · 2679 次点击
    这是一个创建于 1700 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问有没有这样的开源项目?最好支持用户退出数据还原,用户登入创建新的环境,只要命令行就可以。

    19 条回复    2020-04-29 09:21:46 +08:00
    a174871
        1
    a174871  
    OP
       2020-04-28 17:46:55 +08:00
    或者诸位大佬有其他的解决方案也行,不然我就得手动批量添加用户了
    noli
        2
    noli  
       2020-04-28 17:48:39 +08:00
    FreeBSD Jail
    Yourshell
        3
    Yourshell  
       2020-04-28 17:53:30 +08:00
    chroot 啊
    arist
        4
    arist  
       2020-04-28 17:57:08 +08:00   ❤️ 1
    这个是我们开发机上创建用户的脚本,我简化了一下,使用很简单, ./add_user.sh username
    可以创建一个用户,只能在自己的目录下玩耍。

    add_user.sh
    #!/bin/bash
    # Script to add a user to Linux system

    function generate_pass() {
    MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    LENGTH=$1
    while [ "${n:=1}" -le "$LENGTH" ]
    do
    PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
    let n+=1
    done
    echo "$PASS"
    }

    username=$1

    if [ -z $username ];then
    echo "username is empty"
    exit 1
    fi

    password=$(generate_pass 6)

    if [ $(id -u) -eq 0 ]; then
    egrep "^$username" /etc/passwd >/dev/null
    if [ $? -eq 0 ]; then
    echo "$username exists!"
    exit 1
    else
    pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
    useradd -m -p $pass $username
    # record
    time=$(date "+%Y-%m-%d-%H-%M-%S")
    echo "create username $username with password $password at $time" >> user_account.txt
    [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
    fi
    else
    echo "Only root may add a user to the system"
    exit 2
    fi
    nguoidiqua
        5
    nguoidiqua  
       2020-04-28 18:09:44 +08:00
    有这样的项目,就是用户可以即使申请一个虚机练练手,只有几个小时的有效期,具体几个小时用户可以自己选,有多种发行版可选。

    但是名字叫什么忘记了,可以自己搜索看看。
    conn4575
        6
    conn4575  
       2020-04-28 18:13:05 +08:00 via Android
    docker ?
    cdlnls
        7
    cdlnls  
       2020-04-28 18:14:27 +08:00 via iPhone
    记得有一个基于 docker 的项目,它有一个 web 界面,可以临时创建各种系统的容器
    libook
        8
    libook  
       2020-04-28 18:16:22 +08:00
    可以尝试容器技术,比如 Docker 或 Podman,可以在一台机器上同时运行多个隔离的环境,而且如果想重置一个实例到未使用状态也非常方便。
    cdlnls
        9
    cdlnls  
       2020-04-28 18:18:55 +08:00 via iPhone
    xiri
        10
    xiri  
       2020-04-28 18:27:04 +08:00 via Android
    chroot
    nguoidiqua
        11
    nguoidiqua  
       2020-04-28 18:36:36 +08:00   ❤️ 1
    9 楼发的 instant box 就是我说那个项目,不过他链接给错了。

    另外,参考实验楼网站的方案也可以,限制比较多但安全。
    cloverzrg2
        12
    cloverzrg2  
       2020-04-28 18:57:27 +08:00
    docker
    NeilWang
        13
    NeilWang  
       2020-04-28 20:34:23 +08:00 via Android
    @cdlnls play with docker,网站也在 github 开源了
    a174871
        14
    a174871  
    OP
       2020-04-28 21:59:50 +08:00
    @cdlnls 您好,链接似乎有问题,谢谢您
    a174871
        15
    a174871  
    OP
       2020-04-28 22:00:36 +08:00
    @nguoidiqua 是的是的,最高预期就是实验楼那种,可是不知道自动判题有没有好的方案
    flyhelan
        16
    flyhelan  
       2020-04-29 04:06:53 +08:00
    @nguoidiqua 叫实验楼。
    musi
        17
    musi  
       2020-04-29 08:10:07 +08:00 via iPhone   ❤️ 1
    阿里云好像自带这个功能,不需要买 ecs
    huntcool001
        18
    huntcool001  
       2020-04-29 08:55:00 +08:00   ❤️ 1
    阿里云有"云命令行" 可以免费用, 练习 shell 命令足够了.
    phpsir
        19
    phpsir  
       2020-04-29 09:21:46 +08:00   ❤️ 1
    直接给大家 root 好了,弄坏了 云重装就是了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3538 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:44 · PVG 18:44 · LAX 02:44 · JFK 05:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.