1 个不稳定版本
0.2.0 | 2021年3月30日 |
---|---|
0.1.0 |
|
0.0.0 |
|
#1977 in 命令行工具
每月下载量:27
45KB
1K SLoC
carapace
在线评判器的代码运行器。
carapace
会启动一个不受信任的程序,并测量该程序消耗的时间和内存。
carapace
设计用于安全计算。它可以利用 Linux 命名空间子系统、资源限制、cgroups、seccomp-bpf 和 chroot 来限制程序。
安装
通过 cargo
cargo install carapace
从源码安装
cargo install --path .
安装到 /usr/local/bin/carapace
./install.sh
用法
carapace 0.2.0
Nugine <Nugine@163.com>
USAGE:
carapace [FLAGS] [OPTIONS] <bin> [--] [args]...
ARGS:
<bin>
<args>...
FLAGS:
--seccomp-forbid-ipc
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-e, --env <env>...
-c, --chroot <path>
--uid <uid>
--gid <gid>
--stdin <path>
--stdout <path>
--stderr <path>
--stdin-fd <fd>
--stdout-fd <fd>
--stderr-fd <fd>
-t, --real-time-limit <milliseconds>
--rlimit-cpu <seconds>
--rlimit-as <bytes>
--rlimit-data <bytes>
--rlimit-fsize <bytes>
--cg-limit-memory <bytes>
--cg-limit-max-pids <count>
--bindmount-rw <bindmount>...
-b, --bindmount-ro <bindmount>...
--mount-proc=<path>
--mount-tmpfs=<path>
--priority <prio>
--report <path>
--report-fd <fd>
示例
最小的不受信任的 shell
mkdir untrusted-workspace
sudo carapace \
--uid `id -u` --gid `id -g` \
-c untrusted-workspace \
-b /bin /lib /lib64 \
-t 60000 \
--cg-limit-memory 256000000 \
-- /bin/sh
以当前用户身份运行,chroot 到不受信任的工作空间,并挂载必要的依赖。
时间限制:60s。内存限制:256MB。
hello-world.c
#include <stdio.h>
int main(){
printf("Hello, World!\n");
return 0;
}
mkdir workspace
gcc hello-world.c -o workspace/hello
sudo carapace \
--uid `id -u` --gid `id -g` \
-c workspace \
-b /lib /lib64 \
-t 1000 \
--cg-limit-memory 512000 \
-- ./hello
以当前用户身份运行,chroot 到工作空间,并挂载必要的依赖。
时间限制:1s。内存限制:512KB。
输出
Hello, World!
{"code":0,"signal":0,"real_time":1,"sys_time":0,"user_time":0,"memory":248}
实际时间:1ms。系统时间:0ms。用户时间:0ms。
内存:248 KiB。
依赖项
~9–18MB
~207K SLoC