fix session pid, add uninstall sh file
This commit is contained in:
parent
c0f8085da8
commit
f36e111773
6 changed files with 41 additions and 35 deletions
|
@ -1,10 +1,12 @@
|
||||||
pkgbase = crab
|
pkgbase = crab
|
||||||
pkgdesc = A rusty permission authentication system
|
pkgdesc = A rusty permission authentication system
|
||||||
pkgver = 0.0.1
|
pkgver = 0.0.2
|
||||||
pkgrel = 1
|
pkgrel = 1
|
||||||
url = https://g.tylerm.dev/tylermurphy534/crab.git
|
url = https://g.tylerm.dev/tylermurphy534/crab.git
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
license = GPL
|
arch = i686
|
||||||
|
license = GPL3
|
||||||
|
makedepends = cargo
|
||||||
source = git+https://g.tylerm.dev/tylermurphy534/crab.git
|
source = git+https://g.tylerm.dev/tylermurphy534/crab.git
|
||||||
md5sums = SKIP
|
md5sums = SKIP
|
||||||
|
|
||||||
|
|
|
@ -5,38 +5,24 @@
|
||||||
|
|
||||||
# Maintainer: Tyler Murphy <tylermurphy534@gmail.com>
|
# Maintainer: Tyler Murphy <tylermurphy534@gmail.com>
|
||||||
pkgname=crab
|
pkgname=crab
|
||||||
pkgver=0.0.1
|
pkgver=0.0.2
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
epoch=
|
|
||||||
pkgdesc="A rusty permission authentication system"
|
pkgdesc="A rusty permission authentication system"
|
||||||
arch=(x86_64)
|
arch=('x86_64' 'i686')
|
||||||
url="https://g.tylerm.dev/tylermurphy534/crab.git"
|
url="https://g.tylerm.dev/tylermurphy534/crab.git"
|
||||||
license=('GPL')
|
license=('GPL3')
|
||||||
groups=()
|
makedepends=('cargo')
|
||||||
depends=()
|
|
||||||
makedepends=()
|
|
||||||
checkdepends=()
|
|
||||||
optdepends=()
|
|
||||||
provides=()
|
|
||||||
conflicts=()
|
|
||||||
replaces=()
|
|
||||||
backup=()
|
|
||||||
options=()
|
|
||||||
install=
|
|
||||||
changelog=
|
|
||||||
source=("git+$url")
|
source=("git+$url")
|
||||||
noextract=()
|
|
||||||
md5sums=('SKIP')
|
md5sums=('SKIP')
|
||||||
validpgpkeys=()
|
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd crab
|
cd crab
|
||||||
cargo build --release
|
cargo build --release
|
||||||
}
|
}
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
cd crab
|
cd crab
|
||||||
install -D --mode=6755 --owner=root --group=root ./target/release/crab ${pkgdir}/usr/bin/crab
|
install -D --mode=6755 --owner=root --group=root ./target/release/crab ${pkgdir}/usr/bin/crab
|
||||||
install -D --mode=660 --owner=root --group=root pam ${pkgdir}/etc/pam.d/crab
|
install -D --mode=660 --owner=root --group=root pam ${pkgdir}/etc/pam.d/crab
|
||||||
install -D --mode=664 --owner=root --group=root conf ${pkgdir}/usr/share/crab/crab.conf
|
install -D --mode=660 --owner=root --group=root conf ${pkgdir}/usr/share/crab/crab.conf
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,12 @@ if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Copy executable to bin
|
# Copy executable to bin
|
||||||
cp ./target/release/crab /bin/crab
|
cp ./target/release/crab /usr/bin/crab
|
||||||
chown root:root /bin/crab
|
chown root:root /bin/crab
|
||||||
chmod 6755 /bin/crab
|
chmod 6755 /bin/crab
|
||||||
|
|
||||||
# Set up config files
|
# Set up config files
|
||||||
cp pam /etc/pam.d/crab
|
cp pam /etc/pam.d/crab
|
||||||
cp -n conf /etc/crab.conf
|
mkdir /usr/share/crab
|
||||||
chmod 660 /etc/crab.conf
|
cp conf /usr/share/crab/crab.conf
|
||||||
|
chmod 660 /usr/share/crab/crab.conf
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
# **Crab**
|
# **Crab**
|
||||||
`Crab`, a.k.a `Cool Rust Authentication Binary` is a rusty replacement for sudo and doas on Linux systems
|
`Crab`, a.k.a `Cool Rust Authentication Binary` is a rusty replacement for sudo or doas on Linux systems.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
### From Source
|
### From Source
|
||||||
First run `cargo install --release` to compile the binary.
|
First run `cargo install --release` to compile the binary.
|
||||||
Then run `install.sh` as the root user to install files.
|
Then run `install.sh` as root to install crab.
|
||||||
|
|
||||||
### Arch Based Systems
|
### Arch Based Systems
|
||||||
If you are on arch-linux, the pakage is avaliable on the AUR as `crab-git`.
|
If you are on arch-linux, crab is avaliable on the AUR as `crab`.
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
Crab supports multiple users and persistence. Each line of the config is the username, then `true` of `false` if the crab authentication persists, seperated by a space.
|
Crab supports multiple users with persistence. Each line of the config is the username, then `true` of `false` if the crab authentication persists.
|
||||||
|
|
||||||
For Example
|
For Example
|
||||||
```
|
```
|
||||||
|
|
|
@ -17,11 +17,13 @@ const ERROR_AUTH_FAILED: u8 = 5;
|
||||||
const ERROR_RUN_ROOT: u8 = 6;
|
const ERROR_RUN_ROOT: u8 = 6;
|
||||||
const SUCCESS: u8 = 0;
|
const SUCCESS: u8 = 0;
|
||||||
|
|
||||||
|
const PERSIST_TIME: u64 = 60 * 3;
|
||||||
|
|
||||||
|
|
||||||
fn main() -> ExitCode {
|
fn main() -> ExitCode {
|
||||||
let args: Vec<String> = env::args().collect();
|
let args: Vec<String> = env::args().collect();
|
||||||
if args.len() < 2 {
|
if args.len() < 2 {
|
||||||
eprintln!("Invalid argument count.");
|
println!("usage: crab command [args]");
|
||||||
return ExitCode::from(ERROR_ARGS);
|
return ExitCode::from(ERROR_ARGS);
|
||||||
}
|
}
|
||||||
let config = match config("/etc/crab.conf") {
|
let config = match config("/etc/crab.conf") {
|
||||||
|
@ -135,7 +137,7 @@ fn get_terminal_process() -> Option<i32> {
|
||||||
Ok(data) => data,
|
Ok(data) => data,
|
||||||
Err(_) => return None
|
Err(_) => return None
|
||||||
};
|
};
|
||||||
Some(stat.tty_nr)
|
Some(stat.session)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_file_root_only(id: &i32) -> bool {
|
fn is_file_root_only(id: &i32) -> bool {
|
||||||
|
@ -181,7 +183,6 @@ fn write_terminal_config(id: &i32, data: &str) -> Result<(), Box<dyn std::error:
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn get_persist(user: &str) -> bool {
|
fn get_persist(user: &str) -> bool {
|
||||||
let json = match get_terminal_config() {
|
let json = match get_terminal_config() {
|
||||||
Some(data) => data,
|
Some(data) => data,
|
||||||
|
@ -191,7 +192,7 @@ fn get_persist(user: &str) -> bool {
|
||||||
Some(data) => data,
|
Some(data) => data,
|
||||||
None => return false
|
None => return false
|
||||||
};
|
};
|
||||||
return now() - timestamp < 60 * 3;
|
return now() - timestamp < PERSIST_TIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_persist(user: &str) {
|
fn set_persist(user: &str) {
|
||||||
|
|
16
uninstall.sh
Normal file
16
uninstall.sh
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
|
echo "Please run this as root"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Delete crab files
|
||||||
|
rm /usr/bin/crab
|
||||||
|
chown root:root /bin/crab
|
||||||
|
chmod 6755 /bin/crab
|
||||||
|
|
||||||
|
# Set up config files
|
||||||
|
cp pam /etc/pam.d/crab
|
||||||
|
cp -n conf /etc/crab.conf
|
||||||
|
chmod 660 /etc/crab.conf
|
Loading…
Reference in a new issue