mirror of
https://github.com/google/sandboxed-api.git
synced 2024-03-22 13:11:30 +08:00
54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
# libarchive Sandboxed API
|
|
|
|
Sandboxed version of the [libarchive](https://www.libarchive.org/) minitar [example](https://github.com/libarchive/libarchive/blob/master/examples/minitar/minitar.c) using [Sandboxed API](https://github.com/google/sandboxed-api).
|
|
|
|
## Build
|
|
|
|
First, run `git submodule update --init --recursive` to update submodules.
|
|
After this, run the following commands:
|
|
|
|
`mkdir -p build && cd build`
|
|
|
|
`cmake .. -G Ninja`
|
|
|
|
`cmake --build .`
|
|
|
|
|
|
The example binary file can be found at `build/examples/sapi_minitar` and the unit tests at `build/test/sapi_minitar_test`.
|
|
|
|
## Patches
|
|
TODO
|
|
|
|
## Examples
|
|
|
|
In this project, the minitar example is sandboxed.
|
|
The code is found in the **examples** directory and is structured as follows:
|
|
- **sapi_minitar_main.cc** - ***main*** function of the minitar tool. This is mostly similar to the original example.
|
|
- **sapi_minitar.h** and **sapi_minitar.cc** - The two main functions (***create*** and ***extract***) and also other helper functions.
|
|
- **sandbox.h** - Custom security policies, depending on the whether the user creates or extracts an archive.
|
|
|
|
|
|
On top of that, unit tests can be found in the **test/minitar_test.cc** file.
|
|
|
|
## Usage
|
|
|
|
The unit tests can be executed with `./build/test/sapi_minitar_test`.
|
|
|
|
The **sapi_minitar** command line tool can be used in the same way as the original example. It is also similar to the [tar](https://man7.org/linux/man-pages/man1/tar.1.html) command, only with fewer options:
|
|
|
|
`./build/examples/sapi_minitar -[options] [-f file] [files]`
|
|
|
|
The available options are:
|
|
- *c* - Create archive.
|
|
- *x* - Extract archive.
|
|
- *t* - Extract archive but only print entries.
|
|
- *p* - Preserve.
|
|
- *v* - Verbose.
|
|
- *j* or *y* - Compress with BZIP2.
|
|
- *Z* - Default compression.
|
|
- *z* - Compress with GZIP.
|
|
|
|
If no compression method is chosen (in the case of archive creation) the files will only be archived.
|
|
|
|
|