Heavily work-in-progress rewrite of OpenBSD's `doas` in Rust Largely based on [Ted Unangst](https://flak.tedunangst.com/post/doas)'s work. ## About the project `dosu` is *not* an official OpenBSD project/port! Even though I have done my due dilligence to ensure quality code, there are likely still things I've missed. So far, this is a one-person development project with no peer review, in the earliest stages of development. Please be careful when using `dosu`. ## Building and installing To download and build `dosu`: ```sh :$ git clone https://github.com/orvij/dosu :$ cd dosu :$ cargo build --release ## If you want to play around with dosu before installing, ## you need to change ownership to root and setuid :# chown root:bin target/release/dosu :# chmod 4555 target/release/dosu ``` To install `dosu`: ```sh ## Basic install script to make dosu setuid, and install to the correct path ## Proper "make install" script is WIP, and current script is non-portable :$ ./install :$ ./install /usr/local/bin ``` Running `dosu` is should be very familiar to anyone using `doas`: ```sh :$ dosu ls :$ dosu -s :$ dosu -C /etc/doas.conf :$ dosu du -a :$ dosu -h ``` ## Porting to non-OpenBSD systems Much like the work in [OpenDoas](https://github.com/Duncaen/OpenDoas), the long-term goal of this project is to be portable across as many systems as possible. Currently, only OpenBSD is supported. The next OS targets are (in no particular order): - NetBSD - DragonflyBSD - FreeBSD - Linux - Windows? - MacOS? - Phone OSes? If you have an operating system you would like `dosu` to support, please file an issue or submit some code, and it will get added to the list. ## Removing reliance on unsafe `dosu` needs to interact with the operating system, since it's basically just glue code around a few system calls. There are a number of places where calling a C FFI is unavoidable, in the main code and dependencies. It is a long-term goal to remove as much `unsafe` as possible. Who knows, maybe one day all system calls will be in Rust 😉 ## Credits A huge thank you to Ted Unangst and the OpenBSD devs for the high-quality code and documentation. Really helped in porting, and likely saved countless hours in debugging. A similar sized gesture of gratitude to the Rust devs for making the coding experience so great, the [libc](https://github.com/rust-lang/libc) and [nix](https://github.com/nix-rust/nix) devs for their work on C FFI interfaces, the [nom](https://github.com/Geal/nom) devs for their parser work, and Josh Triplett and Joshua Nelson for helping debug documentation builds. ## Bugs `dosu` is still very much a work-in-progress, and likely has bugs. While I've done my best to ensure high-quality code, bugs are almost certainly present. If you find something, please open an issue and/or submit a fix.