GithubHelp home page GithubHelp logo

fsquillace / junest Goto Github PK

View Code? Open in Web Editor NEW
2.0K 40.0 108.0 507 KB

The lightweight Arch Linux based distro that runs, without root privileges, on top of any other Linux distro.

License: GNU General Public License v3.0

Shell 100.00%
sandbox arch-linux root-privileges linux-distros linux-os qemu shell archlinux linux

junest's Introduction

Hi there! ๐Ÿ‘‹

fsquillace

I am a passionate developer which love contributing to open source software. I have been working on JuNest and Pearl for quite some time now. It is great to see how these projects evolved over the time and the userbase they have got; certainly beyond what I could expect.

As you know, investing free time on OSS is not always that easy because of many priorities in life. I will keep working on those projects during my spare time but, obviously your sponsorship will help me support the projects in a more sustainable way.

Thanks for you help!

PS: Adding stars to the projects will also help!

fsquillace fsquillace fsquillace

junest's People

Contributors

adamcavendish avatar ayaka14732 avatar cfriesicke avatar cosmojg avatar droidfreak32 avatar escape0707 avatar fsquillace avatar hodapp512 avatar neiser avatar schance995 avatar soraxas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

junest's Issues

Use only the compat proot binaries

Currently, JuJu uses two binaries in order to run the environment with proot.
Using only the compat proot binaries would make the code a bit cleaner.

Deprecate getopt

The main added value of getopt is just the fact that it allows collapsed options (-kv -> -k -v). I am inclined to remove it since I prefer to have JuJu script even more portable.

pacman -Syu hangs at the end

JuJu is really great, I'm using it with Travis-CI as their Ubuntu images are terribly out of date. However, when I try to do a system update (pacman -Syu) the command never seems to complete and just hangs.

Unrelated to the issue: why can't we build a JuJu image in JuJu?

Needs a new name?

Hi-

First off, I just wanted to thank you for making this. JuJu is a super useful tool for allowing users to install packages in a nice sandbox without messing up the rest of the system.

This isn't a technical issue, but I noticed that the project name is basically identical to Canonical's cloud software management tool (which appears to be much older; 2011 vs 2014). You might want to consider switching to another name since, beyond causing confusion, this prevents the two packages from both being installed on the same system (I can't think of a scenario where anyone would want to do this right now, but hey- who knows?).

Cheers,
John Pellman

Decide whether the juju scripts need to be placed in JuJu image

There are two possible choices.

  • JuJu script are placed in JuJu environment during the setup:
    • Pros: The user will always have the most recent up to date master branch
    • Cons: The image itself will not be self-contained
  • JuJu script are placed in JuJu image directly (current behavior)

Add a config file with user mounts --bind

It would be nice to have a config file (probably inside JUJU_HOME or something) with extra user specified paths to bind, so the command goes from juju -p -b /myworkdir mycommand to juju mycommand with /myworkdir automagically mounted on the fakechroot (the same way proot -S does)

Validation test

Create a script in tests/ directory that make a final check of juju:

  • Download the image
  • Install package with pacman using proot
  • Install package with yaourt using proot
  • Access using root user

Add support for DBus service and more

Some essentials services for running properly the application could be handled inside JuJu.
This mostly an investigation issue to understand the feasibility of this feature.

Check if alternatives against the yaourt/makepkg patches can be found

In the previous release of makepkg there was the option --asroot that allowed to build packages directly using root privileges. In the current release makepkg cannot be used with root access anymore for security reasons.

The JuJu uses a patch for yaourt and makepkg scripts that removes the root check of ($EUID == 0)
https://github.com/fsquillace/juju/blob/master/lib/core.sh#L300.
Furthermore, those scripts uses sudo or su depending if sudo is installed or not.

Ideally, it would be nice if we can run smoothly yaourt and makepkg without creating patches on them.

There are two improvements that can be done here:

  • Bypassing sudo and su commands (maybe by intercepting calls for euid and uid?) so that we avoid failures when we run them. The bypass on those commands should work for the entire JuJu session.
  • Mocking the EUID variable . The mock on that variable should not work for the entire JuJu session but should be used only for yaourt/makepkg scripts.

The current behavior for sudo inside juju is the following:

  • As a fakeroot user:

    > sudo ls

    sudo: setresgid() [1419771904, 0, 1419771904] -> [-1, 1419771904, -1]: Operation not permitted

  • As a normal user:

    $> sudo ls
    sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

The current behavior for su inside juju is the following:

  • As a fakeroot user it works well:

    > su -c ls

    bin lib tests

  • As a normal user it requires password:

    $> su -c ls
    Password:

Reference: http://allanmcrae.com/2015/01/replacing-makepkg-asroot/

Wrong fallback to seccomp mode

After a juju session it possible that JuJu tries to fallback to seccomp mode.
The seccomp mode need to be used only when the access to JuJu at the first time fails.

Hard links fail if the host os uses multiple partitions

Since hard links can't go across partitions. I think this could be solved by tarring to symbolic links instead?

I can't seem to solve this with the current tar archive because there doesn't seem to be an option to convert hard links to symbolic links when untarring.

image download fails with Busybox's wget applet

When wget from Busybox is used the download fails with 404, changing the core script not to check for wget and use curl instead worked. If you make the script prefer curl over wget such cases would be avoided.

Second method for installing JuJu

Provide a second method for installing juju based on downloading directly the juju image.
juju image contains the juju script as well.

Fix the spawn of bash for testing die function

On some bash the test act diferently:
test_build_image_juju...OK
test_check_cli...FAIL
test_delete_juju...OK
test_help...OK
test_run_juju_as_fakeroot...OK
test_run_juju_as_root...OK
test_run_juju_as_user...OK
test_version...OK

Building JuJu images in JuJu

As per #65 I think it would be really useful to be able to build JuJu in JuJu. Being able to bootstrap an Arch environment without having the parent is extremely useful. My intention is to completely build this in CI and create packages. pacstrap seemed to die when mounting, or chrooting depending on the distro underneath.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.