Skip to content

Commit 45a4849

Browse files
authored
Create hacker_mode.sh
1 parent 293f843 commit 45a4849

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/bin/bash
2+
3+
# _ _ _ ___ ____ _____
4+
# | | | | __ _ ___| | _____ _ __ / _ \/ ___| |_ _|__ __ _ _ __ ___
5+
# | |_| |/ _` |/ __| |/ / _ \ '__| | | \___ \ | |/ _ \/ _` | '_ ` _ \
6+
# | _ | (_| | (__| < __/ | | |_| |___) | | | __/ (_| | | | | | |
7+
# |_| |_|\__,_|\___|_|\_\___|_| \___/|____/ |_|\___|\__,_|_| |_| |_|
8+
9+
set -euo pipefail
10+
11+
TARGET_CMD="/usr/bin/cage /usr/share/HackerOS/Scripts/HackerOS-Apps/Hacker-Mode"
12+
TTY="tty3"
13+
SWITCH=false
14+
15+
# Sprawdź opcję --switch
16+
if [[ "${1:-}" == "--switch" ]]; then
17+
SWITCH=true
18+
fi
19+
20+
# sprawdź, czy skrypt uruchomiono jako root
21+
if [[ $EUID -ne 0 ]]; then
22+
echo "Ten skrypt musi być uruchomiony jako root (sudo)." >&2
23+
exit 1
24+
fi
25+
26+
# Wykrywanie aktualnego użytkownika
27+
USERNAME=$(whoami)
28+
29+
# sprawdź, czy TTY istnieje
30+
if [[ ! -e "/dev/${TTY}" ]]; then
31+
echo "/dev/${TTY} nie istnieje. Sprawdź poprawność numeru TTY." >&2
32+
exit 2
33+
fi
34+
35+
# sprawdź, czy polecenie istnieje
36+
if [[ ! -x "${TARGET_CMD%% *}" ]]; then
37+
echo "Nie znaleziono wykonywalnego: ${TARGET_CMD%% *}" >&2
38+
exit 3
39+
fi
40+
41+
echo "Uruchamiam polecenie na /dev/${TTY} jako użytkownik ${USERNAME}..."
42+
echo "Polecenie: $TARGET_CMD"
43+
44+
# Komenda do uruchomienia: przekierowujemy stdout/stderr do tty3, setsid -> nowa sesja
45+
# używamy openvt aby przypisać proces do VT numer 3 (nie wymuszamy przełączenia)
46+
# su -l uruchamia polecenie w kontekście użytkownika.
47+
openvt -c 3 -- su -l "$USERNAME" -c "exec >/dev/${TTY} 2>&1; exec setsid ${TARGET_CMD}" &
48+
49+
pid=$!
50+
echo "Proces uruchomiony (PID $pid)."
51+
52+
if $SWITCH; then
53+
echo "Przełączam aktywne VT na /dev/${TTY}..."
54+
# chvt może zwrócić błąd w kontenerach lub gdy brak uprawnień, trzymamy -e off
55+
if ! chvt 3; then
56+
echo "Uwaga: chvt nie powiodło się. Możliwe, że jesteś w środowisku, gdzie chvt nie jest dostępne."
57+
fi
58+
fi
59+
60+
echo "Gotowe."
61+
exit 0

0 commit comments

Comments
 (0)