aboutsummarylogtreecommitdiffstats
path: root/README.md
blob: 875102e2581fb5fe7fb21a3f0f081489c4adb182 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Syca

[![AUR](https://img.shields.io/aur/version/syca?logo=arch-linux&label=AUR&cacheSeconds=5)](https://aur.archlinux.org/packages/syca)
[![License](https://img.shields.io/badge/license-GPLv3-brightgreen)]()
[![Language](https://img.shields.io/badge/language-Ruby-red)]()

A minimal **sudo-like privilege elevation tool for Linux**, written in **Ruby,** **Python + C**  
with **PAM authentication** and **system-wide secure password caching**.

Syca acts as a clean, lightweight alternative to sudo/doas while keeping strict  
security boundaries. Authentication is performed via PAM, and a secure C setuid helper  
executes privileged commands safely.

---

## ✨ Features

- **πŸ”’ Authentication Cache**

Syca stores authentication securely using a root-owned state file accessed
through the setuid helper. Once authenticated, you won’t be prompted again until
the cache expires. 

**Syca will remove Sudo and Base-Devel on installation.**

- πŸ” **PAM-based password authentication**
- πŸ•’ **System-wide privilege cache** (shared across all terminals)
- πŸ‘₯ User must be added to **group wheel** to be authorized.
- βš™οΈ **Execute commands as root:**
```bash
syca <command>
```


- ⏱ **Temporary root access** via privilege cache:
- Enable root access for a limited time:
```bash
syca --enable <minutes>
```

- Disable the temporary root access manually:
```bash
syca --disable
```
- Check the current status of the root access cache:
```bash
syca --status
```

## πŸš€ Usage

Run any command as root via Syca:

Update system packages
```bash
syca pacman -Syu
```
Restart a system service
```bash
syca systemctl restart NetworkManager
```

Edit a root-owned file
```bash
syca vim /etc/hosts
```

---

### **Installation from AUR**

## πŸ“¦ Installation

### From the AUR

Install directly using an AUR helper;

```bash
yay -S syca
```
```bash
paru -S syca
```
```bash
ame ins syca
```

### Manual Installation

Clone the repository and build the package manually:

```bash
git clone https://github.com/0xraincandy/syca.git
cd syca
makepkg -si
```

### **Known Bugs**
- When changing user using su, then the password wont get accepted.