Én ezt a neten megosztott beállítást vettem alapul. Beállítottam még az autologin-t, amit az /etc/X11/xenodm/xenodm-config fájl szerkesztésével lehet:
DisplayManager*autoLogin kikadf
Ez mindjárt okozott is egy kis meglepetést:
- ha kijelentkeztem a wm-ből, nem kaptam login képernyőt, hanem rögtön vissza is léptetett
- leállításnál bezárodott a wm, aztán az alkalmazások, majd mielőtt leállt volna a rendszer egyből vissza is léptetett a wm-be, majd aztán azt is lelőtte az os újra, vagy a xenodm-et lőtte már ki az vitte magával. Elég hülyén nézett ki...
Olvasgatva a xenodm-ről, minden lényeges config és script fájl az /etc/X11/xenodm/ könyvtárban van, működése az alábbi:
1. Elindul a xenodm, ami beolvassa a xenodm-config-ot, az Xservers config fájlt (ilyet tartalmaz: ":0 local /usr/X11R6/bin/X :0 vt05"), és a Xresources config fájlt az X kliens beállításaival.
2. Indul az Xsetup_0 script, ami megjeleníti a login képernyőt. Viszont, ha az autologin engedélyezve van, akkor ez a lépés kimarad!
3. Login után (vagy login képernyőn pötyögés, vagy autologin) indul még root joggal az Xstartup script. Mármint az alapértelmezett beállítások szerint mégsem mert a xenodm_config fájlban ez van:
DisplayManager*startup: /etc/X11/xenodm/Xstartup
DisplayManager*reset: /etc/X11/xenodm/Xreset
...
DisplayManager._0.startup: /etc/X11/xenodm/GiveConsole
DisplayManager._0.reset: /etc/X11/xenodm/TakeConsole
Szóval általánosságban az Xstartup indul, de :0 server esetén a GiveConsole. Ezeknek a feladata az user jogosultságok megadása, az X server egy nologin-os _x11 nevében fut, a wm pedig a bejelentkezett user nevében.
4. Ezután indul az Xsession script az user nevében, ami majd indítja az user ~/.xsession scriptjét, ami majd indítja a wm-et, meg ami még van benne. Vésztartaléknak, ha nincs ~/.xsession, akkor indítja az OpenBSD alapértelmezett fvwm-et. Ha az ~/.xsession script, vagy fwm végzett, az Xsession script is befejezi a munkát és kilép.
5. Az Xsession befejezése (wm-ből kijelentkezés, leállítás, vagy újraindítás) után indul az Xreset script root-ként, vagy :0 X server esetén a TakeConsole script. Ez visszaállítja a jogosultságokat amit az Xstartup/GiveConsole beállított, majd goto 1.
A manual alapján a xenodm két signal-ra reagál, a SIGHUP-ra újraindul az X server, a SIGTERM-re meg kilép. Az autologinos 2. számú probléma amiatt van, hogy mire a xenodm megkapja a SIGTERM signal-t, addigra (mivel közben a wm már leállt és ezért az Xsession script végig ért) működéséből adódóan újraindítja a login folyamatot, ami az autologin miatt gyorsan indítja az Xsession -> ~/.xsession -> wm -et. Ha nem volna autologin, akkor az Xsetup_0 is lefutna és megállna a folyamat a login képernyőnél.
Az 1. számú probléma meg adja magát, az autologin miatt nem fut le az Xsetup_0 script, ami összeállítaná a login képernyőt, hanem egyből az Xsession indul.
Az lenne jó tehát, ha autologin esetén boot után bejelentkezne automatikusan a megadott user, de aztán már nem. Így lehetne kijelentkezni, más user-ként belépni, más wm-et indítani, stb. Az OS leállásakor sem lépne újra be a wm-be, hanem megállna a login képernyőn, ami nem nézne ki olyan hülyén.
Mivel a xenodm beállításai között nem találtam megoldást, első megoldási kísérletem az volt, hogy a GiveConsole script-ben elhelyezek egy sed-es sort, ami a xenodm-config-ban kikommenteli az autologinos sort, majd az OS leállásakor az rc.shutdown script meg visszaállítja. Nem működött, mert a xenodm-config csak olvasási jogosultsággal bír, azt meg nem akartam piszkálni.
A "megoldás" az alábbi lett:
1. xenodm futtatása egyéni config-al:
doas rcctl set xenodm flags -config /etc/X11/xenodm/xenodm-config-custom
2. alapértelmezett xenodm-config másolása xenodm-config-autologin néven, amihez az autologin beállítását adtam hozzá. Majd:
ln -sf xenodm-config-autologin xenodm-config-custom
3. GiveConsole szerkesztése, hogy az alapértelmezett (nincs autologin) configra mutasson a xenodm-config-custom:
cd /etc/X11/xenodm
ln -sf xenodm-config xenodm-config-custom
4. /etc/rc.shutdown (ha nincs, van egy üres példa script az /etc/examples könyvtárban) szerkesztése:
cd /etc/X11/xenodm/
ln -sf xenodm-config-autologin xenodm-config-custom
Nem túl elegáns workaround, de működik.
Aztán jó lett volna a login felületen egy lehetőség session választásra, melyik wm induljon. Szoktam próbálgatni ilyen olyan wm-eket, több kevesebb ideig, többször nekifutva. Erre nem találtam példát a neten, de az általam választott dark clean "téma" xmessage-n alapuló sleep/restart/shotdown bar-ja tök jó ihletett adott.
1. ~/.xsession szerkesztése a wm-ek indítására:
if [ -s /tmp/xenodm-session ]; then
export XENODM_SESSION=$(cat /tmp/xenodm-session)
else
export XENODM_SESSION=LXQt
fi
case $XENODM_SESSION in
LXQt)
exec ck-launch-session /usr/local/bin/startlxqt
;;
Openbox)
exec openbox-session
;;
cwm)
exec cwm
;;
*)
# fallback
exec ck-launch-session /usr/local/bin/startlxqt
;;
esac
2. Létrehoztam az /etc/X11/xenodm/session-list fájlt:
SESSIONLIST="LXQt_30 Openbox_31 cwm_32"
Az elv, hogy a ~/.xsession-nak megfelelő wm név a hozzá "_" -al kapcsolt xmessage gomb kóddal vannak felsorolva a wm-ek. 30-39 között használok gomb kódokat, igazából ezek xmessage exit kódok és az 1-et használja csak gyárilag az xmessage, de kell az Xsetup_0 scriptbe egy elágazáshoz, hogy tudjam mik lehetnek a gombok. Azért a külön konfig fájl, hogy később csak ezt kelljen szerkeszteni, az Xsetup_0 meg generálja majd ez alapján a megfelelő xmessage parancsot.
3. /etc/X11/xenodm/Xsetup_0 szerkesztése:
# session chooser bar
(
# get session list
. /etc/X11/xenodm/session-list
# set default session
if [ ! -s /tmp/xenodm-session ]; then
echo "LXQt" > /tmp/xenodm-session
fi
# make button list
for _session in $SESSIONLIST; do
if [ -z $XBUTTONS ]; then
XBUTTONS="[ ${_session%_*} ]:${_session#*_}"
else
XBUTTONS="$XBUTTONS,[ ${_session%_*} ]:${_session#*_}"
fi
done
# start bar
while true; do
xmessage -geometry +32-32 -buttons "${XBUTTONS}" "Session: $(cat /tmp/xenodm-session)"
CACTION=$?
echo "Session Chooser: code $CACTION"
if [ $CACTION -ge 30 ] && [ $CACTION -le 39 ]; then
echo $SESSIONLIST | sed "s/_$CACTION.*//;s/.* //" > /tmp/xenodm-session
else
echo "Session Chooser: $CACTION is not a button code."
fi
# stop looping if xclock died (killed by GiveConsole)
if [ -z "$(pgrep -U root xclock)" ]; then break; fi
done
) &
A default, vagy kiválasztott wm-et a /tmp/xenodm-session fájlba írja, mert környezeti változóval nem bírtam megoldani, mire az ~/.xsession-hoz ért már elveszett...
Aztán még akartam egy olyat is, hogy a login screen írja ki, hogy milyen rendszer is amiben vagyok, verzió stb. ezt is az xmessage segítségével oldottam meg, egy szimpla gomb, ami kattintásra csak megváltoztatja a gomb feliratát, rövidebb, vagy hosszabb uname kimenetre:
# uname
(
XUNAMES=$(uname -sr)
XUNAMEA=$(uname -a)
XUNAME=$XUNAMES
while true; do
xmessage -geometry +32+2 -buttons "$XUNAME":0 ""
UACTION=$?
echo "Uname bar: code $UACTION"
if [ $UACTION -eq 0 ]; then
if [ "$XUNAME" = "$XUNAMES" ]; then
XUNAME=$XUNAMEA
else
XUNAME=$XUNAMES
fi
else
echo "Uname bar: $UACTION is not a button code."
fi
# stop looping if xclock died (killed by GiveConsole)
if [ -z "$(pgrep -U root xclock)" ]; then break; fi
done
) &
Ez a végeredmény:
Ha valakit érdekel:
- kikadff blogja
- A hozzászóláshoz be kell jelentkezni
- 451 megtekintés
Hozzászólások
Sima terminálos login nem tetszik? Majd abból az X indtása ha kell? Nekem az jönne be minimalistának :)
A login screen szép lett szerintem.
Megkérdezhetem hogy mire használod az OpenBSD-t? Normál user OS vagy munka?
Kösz.
- A hozzászóláshoz be kell jelentkezni
Ismerkedek vele csak, dualbootban van fent egy Manjaro mellett, de azt már egy ideje nem bootoltam :) Egyébként nem IT-s vagyok, csak érdekelnek a nem túl mainstream OS-ek.
Ja, azért xenodm, mert ez jött alapértelmezetten.
- A hozzászóláshoz be kell jelentkezni
csak érdekelnek a nem túl mainstream OS-ek.
Régi szép időkben mikor fiatal voltam és bolond, próbálkoztam én is sokmindennel.
Solaris-t desktopnak, futtattam openVMS-t, a sarokban még mindig itt van a HP visualize masina HP-UX 11.11, meg egy Sun V240 Solaris 10-el.
Anno az egyetemen, volt SunOS "dekstopom", AIX 4.3 asra is forgattam VICE x64 emulator rég volt igaz se volt ...
Fedora 42, Thinkpad x280
- A hozzászóláshoz be kell jelentkezni
AIX 4.3 asra is forgattam VICE x64 emulator rég volt igaz se volt ...
Most már mindenesetre tényleg nem igaz: a 3.4-essel dobták - egy raklap más platform mellett - az AIX támogatását is... :(
- A hozzászóláshoz be kell jelentkezni
Kösz,
- A hozzászóláshoz be kell jelentkezni
De, van konzolos login is, megoldható shellrc-ből, hogy tty-ról bejelentkezve mindjárt startx-szel, vagy xinit-tel induljon el az X, a megfelelő xinitrc-vel, stb., de annak az a buktatója, hogy setuid probléma miatt nem fog menni X-ben a hardveres gyorsítás/DRI. Ez egy kifejezetten OpenBSD-specifikus probléma, más BSD variánsokon, Linuxokon, stb. nem létezik.
Így sajnos OpenBSD-n kvázi kötelező a xenodm-et használni (bár lehet másik, bloatabb login manager is kiváltja), ha tényleg használható X kell. Alapból viszont a xenodm embertelen ocsmányul néz ki, tényleg az a szint, hogy majdnem elhányod magad, de szerencsére teljesen át lehet szabni a kinézetét, kicsit amolyan CSS-szerűen. Nem CSS-ben van, de egy olvasható, beszédes szintaxisú konfigfájl van hozzá.
Az autologinnak viszont erősen ellene vagyok. A user és a rendszer biztonságát szolgálja, hogy be kell jelentkezni, jelszót be kell írni. Igen, kényelmetlen gépelgetni, de a kényelem és a biztonság mindig is egymással ellentétes fogalmak voltak. Tudom, most erre azt mondjátok, hogy az adott usert nem érdekli a biztonság, de erre meg én azt mondom, hogy de, mert ha OpenBSD-t használ, annak pont ez lenne a legfőbb lényege, hogy az egész a biztonsági paranoiára, helyes biztonsági gyakorlatra van rágyúrva. Akinek kényelem kell, annak inkább javaslom valamelyik full DE-s, normibiztos Linuxot, ha BSD-vonalon kell, akkor hellosystem, ami pont hasonló lustaságra van rágyúrva, egy user, nuku login, stb..
És nem, a titkosítás sem oldja meg, mert az csak bootkor kéri be a jelszót (onnantól transzparens, és ha már fut a rendszer, akkor nem véd az ellen, hogy amíg nem vagy gépnél, valaki oda ne üljön matatni), vagy megint bejelentkezés kell hozzá, ha user/home szintű titkosítás. Ezért szokás reflexből is zárolni a rendszert (lockscreen), vagy kijelentkezni, ha az ember nincs gépnél, de a gép be van kapcsolva, a rendszer fut. Sőt, azzal sem szoktam egyetérteni, hogy sok lusta ember beállítja a sudo-t, doas-t, stb.-t, hogy korlátlan ideig, jelszó nélkül lehessen rendszergazdai jogokkal garázdálkodni, az is baromi veszélyes, ha le akar futni valami ártó kód, az is lazán tudja magát futtatni, adva van neki a kényelmes privilégiumszerzés. Azon sem múlik, hogy valaki paranoid-e, meg hogy van-e rejtegetni valója. Ha nincs, akkor is az ember saját gépe, rendszere, a saját vára, főleg manapság, mikor mindenki a useradatokra, megfigyelésre, telemetriára, pishingre, stb. utazik, nem árt használni a beépített biztonsági alapfeature-öket, és helyes gyakorlatot követni. Nem, nem kell olyan messzire elmenni feltétlen, hogy OpenBSD, meg SELinux, extra hardening, de könnyelműnek, túl kényelmesnek sem jó lenni, mert az meg átesés a ló túloldalára.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
de annak az a buktatója, hogy setuid probléma miatt nem fog menni X-ben a hardveres gyorsítás/DRI.
/etc/X11/xenodm/GiveConsole github
Gyanítom, ha ezt reprodukálod az akármilyen más login esetén, nem lesz problémád. A xenodm rém egyszerű, nem egy nagy magic tool, amit nem lehet megkerülni :)
- A hozzászóláshoz be kell jelentkezni
Kösz, ezt ki fogom próbálni, ha legközelebb telepítem. Engem a xenodm irritál, ronda, meg nem kell, Linuxon sem véletlen, hogy nem használok login managert, hanem simán, tty-ból jelentkezek be. Ez egy kicsit kényelmetlen, mert nem csak a jelszót kell beírni bejelentkezéskor, hanem a felhasználói nevet is, de ez megint egyfajta biztonsági funkciónak is felfogható, hogy egy esetleges támadónak nem csak a jelszót kell kitalálnia, hanem a login másik részét is.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Nem tudom, OpenBSD alatt mit lehet, de személy szerint FreeBSD-n azt csináltam, hogy a useremet automatikusan bejelentkeztettem mélykonzolon :), és a ~/.login-ban van, ha a tty a ttyv0, akkor induljon a startx (a megvalósítás pl. itt olvasható). Persze ez csak egyfelhasználós gépen használható megoldás.
- A hozzászóláshoz be kell jelentkezni
A tty0 megkülönböztetése X start-hoz tetszik.
- A hozzászóláshoz be kell jelentkezni
Tetszik a megoldás. Desktop-on most épp nem jó nekem, mert ott van több user, de elmentem a know-how listámba :)
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni