fixed parsing vulnerability rdo
Find a file
2022-02-09 19:48:32 +01:00
.gitignore First Commit 2021-07-13 21:33:12 +02:00
LICENSE First Commit 2021-07-13 21:33:12 +02:00
Makefile Tighten permissions for the config file 2022-02-09 19:48:32 +01:00
rdo.c Add checks for crypt() and getspnam() failure 2022-02-08 21:09:36 +01:00
rdo_sample.conf Add sessions feature 2021-07-15 23:47:27 +02:00
README.md Add whoami version in README.md 2021-07-29 19:10:36 +02:00
sessions.h Move variable declerations to start of file 2021-07-29 17:29:38 +02:00

RootDO AUR

This little "project" aims to be a very slim alternative to both sudo and doas.

Installation

If you are on Arch Linux, you can download the package via the AUR.

If you are using any other linux distro, you can build it yourself by following these instructions:

git clone https://codeberg.org/sw1tchbl4d3/rdo
cd rdo
make
sudo make install

After that, you'll have to configure rdo to allow you to use it. To do this, edit /etc/rdo.conf, and set the username variable to your own.

After that you're good to go!

And to uninstall:

sudo make uninstall

Usage

rdo [command]

The configuration file has the following variables:

username=sw1tchbl4d3
wrong_pw_sleep=1000
session_ttl=5
  • username: The username of the user that is allowed to execute rdo (no multi user or group support (yet)).
  • wrong_pw_sleep: The amount of milliseconds to sleep at a wrong password attempt. Must be a positive integer. Set to 0 to disable.
  • session_ttl: The amount of minutes a session lasts. Must be a positive integer. Set to 0 to disable.

Dependencies

  • libbsd

Benchmarks

The benchmark: Execute whoami (GNU coreutils 8.32) 1000 times.

Program Time
sudo 1.9.7p1 13.62s
opendoas 6.8.1 7.60s
rdo 1.2 2.25s
Baseline 1.43s

Baseline here is how long it took without any wrapper to make it root.

These benchmarks were done on a single core of an Intel i3-3110M Laptop processor, on Artix Linux version 5.13.4-zen2-1-zen.

sudo and opendoas were pulled from the pacman repos, rdo via AUR.

All configs were kept as default, except allow the wheel group on both + enable persist on doas.

Script used:

#!/bin/sh

$1 whoami

current=$(date +%s.%N)
for i in {1..1000}; do
	$1 whoami 2>&1 >/dev/null
done
done=$(date +%s.%N)

echo $done - $current | bc

The script requires bc to be installed, for floating point arithmetics.