Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.
Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).
Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.
Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
lsusb: Bus 008 Device 030: ID 1050:0116 Yubico.com
dmesg
[25846.452294] usb 8-2: new full speed USB device using uhci_hcd and address 31 [25846.615643] usb 8-2: New USB device found, idVendor=1050, idProduct=0116 [25846.615652] usb 8-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [25846.615660] usb 8-2: Product: Yubikey NEO OTP+U2F+CCID [25846.615665] usb 8-2: Manufacturer: Yubico [25846.615670] usb 8-2: SerialNumber: 0003675889 [25846.615890] usb 8-2: configuration #1 chosen from 1 choice [25846.623854] input: Yubico Yubikey NEO OTP+U2F+CCID as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input40 [25846.624169] generic-usb 0003:1050:0116.0039: input,hidraw0: USB HID v1.10 Keyboard [Yubico Yubikey NEO OTP+U2F+CCID] on usb-0000:00:1d.2-2/input0 [25846.629204] generic-usb 0003:1050:0116.003A: hiddev0,hidraw1: USB HID v1.10 Device [Yubico Yubikey NEO OTP+U2F+CCID] on usb-0000:00:1d.2-2/input1
Pro zprovoznění přihlašování - openssh klíč je schovaný v tokenu:
1. Instalace balíčků
Debian Sqeeze nebo Jessie:
gnupg2, gnupg-agent, pinentry-gtk2, pinentry-curses, gpgsm, pcscd, libccid, gpgv, yubikey-personalization
Neinstalovat openct a opensc.
CentOS 6 nebo CentOS 7:
gnupg2, gnupg2-smime, pinentry-gtk, pinentry, pcsc-lite, ccid, ykpers
Neinstalovat openct a opensc.
2 Skript pro přístup obyčeného uživatele pro Yubiko Neo pro Debian Sqeeze a CentOS 6.
V Debianu Jessie nebo CentOS 7 není potřeba
Skript /etc/udev/rules.d/100-yubikeys.rules v Debian Sqeeze:
ACTION!="add|remove", GOTO="yubico_end" # Udev rules for letting the console user access the Yubikey USB # device node, needed for challenge/response to work correctly. # idVendor and idProduct are from "lsusb" or "dmesg" # Yubico Yubikey II #ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111|0114|0116|0401|0403|0405|0407|0410", OWNER="petr", MODE="0600" ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111|0114|0116|0401|0403|0405|0407|0410" RUN+="udev-acl --action=$env{ACTION} --device=$env{DEVNAME}" # New rules - now I can push-pull Yubiko token from USB port # Just works! # Sometimes, better never start gpg-agent this way. #ACTION=="remove", ENV{ID_VENDOR_ID}="1050", ENV{SUBSYSTEM}=="usb", RUN+="/opt/token/yubiko-stop"
#ACTION=="add", ENV{ID_VENDOR_ID}="1050", ENV{SUBSYSTEM}=="usb", RUN+="/bin/su petr -c '/opt/token/yubiko-start'" LABEL="yubico_end"
3. Změna módu Yubikey NEO
Aby se hlásil jako "[Yubico Yubikey NEO OTP+U2F+CCID]", přihlásit se to terminálu/konzole jako root, připojit token a vložit příkaz:
root@HPPC:~# ykpersonalize -m82
Pro uskutečnění změn je potřeba token odpojit z USB portu, odhlásit se z grafického prostředí a znovu se přihlásit. Nebo tuto změnu provést v nejmenovaném OS. Adresa ke stažení: https://www.yubico.com/support/downloads/
4. Zkontrolovat, jestli neběží seahorse, gnome-keyring ("GPG Password Agent" a "SSH Key Agent"), zkontrolovat, jestli běží pcscd:
petr@debian-jessie:~$ gpg --card-status
gpg: pcsc_list_readers failed: unknown PC/SC error code (0x8010002e) gpg: čtečka karet není dostupná gpg: OpenPGp karta není dostupná: obecná chyba
4.1 Debian Sqeeze, CentOS 6
gconf-editor -> /apps/gnome-keyring/daemon-components -> zrušit pkcs11, ssh, secrets
4.2 CentOS 7
Pro prostředí Gnome3: gnome-session-properties -> zrušit Agent hesel GPG, Agent klíčů SSH
Pro prostředí Mate: Musí se odstranit spouštění gnome-keyring-daemon. Jako root v terminálu:
mv /usr/bin/gnome-keyring-daemon /usr/bin/gnome-keyring-daemon.orig
touch /usr/bin/gnome-keyring-daemon
chmod +x /usr/bin/gnome-keyring-daemon
Soubor /usr/bin/gnome-keyring-daemon bude obsahovat:
#!/bin/sh
exit 0
4.3 Debian Jessie
petr@mypc:~$ mkdir ~/.config/autostart petr@mypc:~$ cp /etc/xdg/autostart/gnome-keyring-gpg.desktop ~/.config/autostart/ petr@mypc:~$ echo 'Hidden=true' >> ~/.config/autostart/gnome-keyring-gpg.desktop petr@mypc:~$ cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ petr@mypc:~$ echo 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.deskto
4.4 Odhlásit se z grafického prostředí, vytáhnout token z USB portu, přihlásit, vložit token, a zkusit znovu:
petr@debian-jessie:~$ gpg --card-status
can't connect to `/home/petr/.gnupg/S.gpg-agent': Adresář nebo soubor neexistuje Výše uvedená hláška nejspíše znamená, že neběží gpg-agent, což v tuto chvíli nevadí. Application ID ...: K2580501131108092705055281910604 Version ..........: 2.0 Manufacturer .....: unknown Serial number ....: 15441218 Name of cardholder: Petr Pokorny Language prefs ...: [není nastaven] Sex ..............: muž URL of public key : Login data .......: pavel Signature PIN ....: vyžadováno Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 2 Signature key ....: 0F23 95CD A41F F9BH AD81 3VB7 258J 4518 087J 12II created ....: 2015-10-07 17:00:38 Encryption key....: 123B 2895 22CD ABB7 E221 2A24 18AB B084 7ASC ASD0 created ....: 2015-10-07 17:01:26 Authentication key: A3B8 FR5C 51AF 127A 12A6 12H3 D5KN V1A5 NV54 A41A created ....: 2015-10-07 17:02:09 General key info..: [none]
5. --enable-ssh-support, use-agent
Po instalaci balíčku gnupg-agent se vytvoří soubor /etc/X11/Xsession.d/90gpg-agent, který automaticky spustí gpg-agent při přihlášení do grafického prostředí. Bohužel bez volby "--enable-ssh-support".
5.1 --enable-ssh-support
Vytvořit soubor ~/.gnupg/gpg-agent.conf (pokud neexistuje) s řádkem:
enable-ssh-support
5.2 use-agent
Vytvořit soubor ~/.gnupg/gpg.conf (pokud neexistuje) s řádkem:
use-agent
6. Vytvořit soubor ~/.bashrc (pokud neexistuje) a přidat níže uvedené řádky
# Smart card K30 and Yubiko Neo - GnuPG -> openssh login GPG_TTY=$(tty) export GPG_TTY if [ -f "${HOME}/.gpg-agent-info" ]; then . "${HOME}/.gpg-agent-info" export GPG_AGENT_INFO export SSH_AUTH_SOCK export SSH_AGENT_PID fi alias sshg='gpg-agent --enable-ssh-support --daemon --use-standard-socket ssh' alias sshh='echo UPDATESTARTUPTTY | gpg-connect-agent; ssh'
7. Spuštění gpg-agent
7.1 Debian Sqeeze
Tento bod (7.1.x) platí pro Debian Sqeeze.
7.1.1 Během práce na mém PC nebudu nikdy token vytahovat.
Pro přihlašování v grafickém prostředí i terminálu (tty x) je nutné použít bod 7.1.2.
Jednou jej zasunu do USB portu a používám pro přihlašování/openssh, elektronickému podepisování dokumentů atd. Pokud token vytáhnu z USB portu, musím se odhlásit z grafického prostředí, znovu přihlásit a zasunout token do USB portu.
Tento bod platí pro grafické prostředí.
Pro přihlašování v terminálu (tty x) je nutné použít bod 7.1.2.
Pokud nefunguje - není vidět v "htop" "gpg-agent --enable-ssh-support ...", upravit soubor /etc/X11/Xsession.d/90gpg-agent, aby vypadal nějak takto:
: ${GNUPGHOME=$HOME/.gnupg} GPGAGENT=/usr/bin/gpg-agent PID_FILE="$GNUPGHOME/gpg-agent-info-$(hostname)" if grep -qs '^:space:*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" && test -x $GPGAGENT && { test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null; }; then if [ -r "$PID_FILE" ]; then . "$PID_FILE" fi # Invoking gpg-agent with no arguments exits successfully if the agent # is already running as pointed by $GPG_AGENT_INFO if ! $GPGAGENT 2>/dev/null; then # old #STARTUP="$GPGAGENT --daemon --sh --write-env-file=$PID_FILE $STARTUP" # new for openssh support and when I kill gpg-agent, I will not see "defunc" in htop STARTUP="$GPGAGENT --daemon --enable-ssh-support --display :0 --sh --write-env-file=$PID_FILE" fi fi
7.1.2 Během práce na mém PC budu token často vytahovat nebo se chci přihlašovat i přes terminál (tty x)
Kvůli bezpečnosti - chodím na oběd, záchod, jsem paranoik a každou chvíli čekám URNU. Nechce se mi odhlašovat a znovu přihlašovat do grafického prostředí jen proto, že jsem vytáhnul token (i přesto, že je možné token nastavit/použít pro přihlašování). Aplikace, které vyžadují gpg-agent (jako seahorse) budu spouštět extra skriptem.
V tom případě se nesmí gpg-agent spouštět při přihlašování do grafického prostředí, nýbrž "ručně" nebo přes udev.
Soubor /etc/X11/Xsession.d/90gpg-agent bude vypadat nějak takto:
: ${GNUPGHOME=$HOME/.gnupg} GPGAGENT=/usr/bin/gpg-agent PID_FILE="$GNUPGHOME/gpg-agent-info-$(hostname)" if grep -qs '^:space:*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" && test -x $GPGAGENT && { test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null; }; then if [ -r "$PID_FILE" ]; then . "$PID_FILE" fi # Invoking gpg-agent with no arguments exits successfully if the agent # is already running as pointed by $GPG_AGENT_INFO if ! $GPGAGENT 2>/dev/null; then # old #STARTUP="$GPGAGENT --daemon --sh --write-env-file=$PID_FILE $STARTUP" # new, why start gpg-agent? echo "Hellow world" >/dev/null fi fi
Spouštění gpg-agent přes udev.
Obsah souboru udev je v bodě 2, stačí odkomentovat řádky začínající na #ACTION=="remove" a #ACTION=="add".
Skripty jsou uvedeny níže.
Problém ve skriptu přes udev je v tom, že:
- Při spuštění (strčím token do USB) gpg-agent vyžaduje nastavit proměnnou, na kterém displeji/tty se má spustit pinentry (dialog pro zadání hesla tokenu).
- Při ukončení (vytáhnu token z USB) je někdy potřeba ukončit proces gpg-agent, scdaemon a restartovat pcscd.
Je ovšem možné i tyto skripty spouštět "ručně".
Soubor /opt/token/yubiko-start spouštěný přes udev - viz výše:
#!/bin/bash #exit 0 killall gpg-agent 2>/dev/null #killall scdaemon 2>/dev/null # Varianta 1 # Funguje jen v grafickem prostredi, ne v terminalu (--display :0) # Prihlasuje se prikazem: # petr@HPPC:~$ ssh vzdaleny@IP-adresa exec /usr/bin/gpg-agent --enable-ssh-support --daemon --display :0 --use-standard-socket --sh --write-env-file "${HOME}/.gpg-agent-info" # Varianta 2 # Funguje v terminalu (tty) i v grafickem prostredi # Prihlasuje se prikazem: # petr@HPPC:~$ sshh vzdaleny@IP-adresa # do souboru ~/.bashrc pridat radek s alias: # alias sshh='echo UPDATESTARTUPTTY | gpg-connect-agent; ssh' # Po pridani radku provest v terminalu: # petr@HPPC:~$ source ~/.bashrc #exec /usr/bin/gpg-agent --enable-ssh-support --daemon --use-standard-socket --sh --write-env-file "${HOME}/.gpg-agent-info" gpg --card-status gpg-connect-agent learn /bye SSH_AUTH_SOCK="/home/petr/.gnupg/S.gpg-agent.ssh" export SSH_AUTH_SOCK echo UPDATESTARTUPTTY | gpg-connect-agent gpg-connect-agent /bye
Soubor /opt/token/yubiko-stop spouštěný přes udev - viz výše:
#!/bin/bash #exit 0 killall gpg-agent killall scdaemon /etc/init.d/pcscd stop killall pcscd /etc/init.d/pcscd start
7.2 Debian Jessie
Tento bod (7.2.x) platí pro Debian Jessie.
GnuPG (gpg-agent) nemá žádný problém s vytáhnutím a opětovném zastrčením tokenu do USB portu.
Pro grafické prostředí není třeba provádět jakékoliv úpravy.
Pro použití v terminálu (tty x) platí bod 7.1.2.
7.3 CentOS 6
Tento bod (7.3.x) platí pro CentOS 6 a grafický správce přihlášení KDM (K Display Manager).
7.3.1 Během práce na mém PC nebudu nikdy token vytahovat a přihlašuji se z grafického prostředí.
Pro přihlašování v grafickém prostředí i terminálu (tty x) je nutné použít bod 7.3.2.
Jednou jej zasunu do USB portu a používám pro přihlašování/openssh, elektronickému podepisování dokumentů atd. Pokud token vytáhnu z USB portu, musím se odhlásit z grafického prostředí, znovu přihlásit a zasunout token do USB portu.
Pokud nefunguje - není vidět v "htop" "gpg-agent --enable-ssh-support ...", upravit soubor /etc/KDE/env/gpg-agent-startup.sh, aby vypadal nějak takto:
#!/bin/sh GPG_AGENT=/usr/bin/gpg-agent ## Run gpg-agent only if not already running, and available if [ -x "${GPG_AGENT}" ] ; then # check validity of GPG_SOCKET (in case of session crash) GPG_AGENT_INFO_FILE=${HOME}/.gpg-agent-info if [ -f "${GPG_AGENT_INFO_FILE}" ]; then GPG_AGENT_PID=`cat ${GPG_AGENT_INFO_FILE} | cut -f2 -d:` GPG_PID_NAME=`ps -p ${GPG_AGENT_PID} -o comm=` if [ ! "x${GPG_PID_NAME}" = "xgpg-agent" ]; then rm -f "${GPG_AGENT_INFO_FILE}" 2>&1 >/dev/null else GPG_SOCKET=`cat "${GPG_AGENT_INFO_FILE}" | cut -f1 -d: | cut -f2 -d=` if ! test -S "${GPG_SOCKET}" -a -O "${GPG_SOCKET}" ; then rm -f "${GPG_AGENT_INFO_FILE}" 2>&1 >/dev/null fi fi unset GPG_AGENT_PID GPG_SOCKET GPG_PID_NAME fi if [ -f "${GPG_AGENT_INFO_FILE}" ]; then eval "$(cat \"${GPG_AGENT_INFO_FILE}\")" eval "$(cut -d= -f 1 < \"${GPG_AGENT_INFO_FILE}\" | xargs echo export)" export GPG_TTY=$(tty) else # old #eval "$(${GPG_AGENT} -s --daemon --write-env-file ${GPG_OPTIONS})" # new eval "$(${GPG_AGENT} -s --enable-ssh-support --display :0 --daemon --write-env-file ${GPG_OPTIONS})" fi fi
7.3.2 Během práce na mém PC budu token často vytahovat nebo se chci přihlašovat i přes terminál (tty x)
V tom případě se nesmí gpg-agent spouštět při přihlašování do grafického prostředí, nýbrž "ručně" nebo přes udev.
Smazat soubor /etc/KDE/env/gpg-agent-startup.sh nebo jej upravit nějak takto:
#!/bin/sh exit 0 GPG_AGENT=/usr/bin/gpg-agent ## Run gpg-agent only if not already running, and available ## pokracovani zbytku souboru ############################# #############################
Spouštění gpg-agent přes udev.
Obsah souboru udev je v bodě 2, stačí odkomentovat řádky začínající na #ACTION=="remove" a #ACTION=="add".
Skripty jsou uvedeny níže.
Problém ve skriptu přes udev je v tom, že:
- Při spuštění (strčím token do USB) gpg-agent vyžaduje nastavit proměnnou, na kterém displeji/tty se má spustit pinentry (dialog pro zadání hesla tokenu).
- Při ukončení (vytáhnu token z USB) je někdy potřeba ukončit proces gpg-agent, scdaemon a restartovat pcscd.
Je ovšem možné i tyto skripty spouštět "ručně".
Soubor /opt/token/yubiko-start spouštěný přes udev - viz výše:
#!/bin/bash #exit 0 killall gpg-agent 2>/dev/null #killall scdaemon 2>/dev/null # Varianta 1 # Funguje jen v grafickem prostredi, ne v terminalu (--display :0) # Prihlasuje se prikazem: # petr@HPPC:~$ ssh vzdaleny@IP-adresa exec /usr/bin/gpg-agent --enable-ssh-support --daemon --display :0 --use-standard-socket --sh --write-env-file "${HOME}/.gpg-agent-info" # Varianta 2 # Funguje v terminalu (tty) i v grafickem prostredi # Prihlasuje se prikazem: # petr@HPPC:~$ sshh vzdaleny@IP-adresa # do souboru ~/.bashrc pridat radek s alias: # alias sshh='echo UPDATESTARTUPTTY | gpg-connect-agent; ssh' # Po pridani radku provest v terminalu: # petr@HPPC:~$ source ~/.bashrc #exec /usr/bin/gpg-agent --enable-ssh-support --daemon --use-standard-socket --sh --write-env-file "${HOME}/.gpg-agent-info" gpg --card-status gpg-connect-agent learn /bye SSH_AUTH_SOCK="/home/petr/.gnupg/S.gpg-agent.ssh" export SSH_AUTH_SOCK echo UPDATESTARTUPTTY | gpg-connect-agent gpg-connect-agent /bye
Soubor /opt/token/yubiko-stop spouštěný přes udev - viz výše:
#!/bin/bash #exit 0 killall gpg-agent killall scdaemon /etc/init.d/pcscd stop killall pcscd /etc/init.d/pcscd start
7.4 CentOS 7
Tento bod (7.4) platí pro CentOS 7.
GnuPG (gpg-agent) nemá žádný problém s vytáhnutím a opětovném zastrčením tokenu do USB portu.
Pro grafické prostředí není třeba provádět jakékoliv úpravy.
Pro použití v terminálu (tty x) platí bod 7.3.2.
8. Vygenerovat klíče a přenést je do tokenu
9. gpgkey2ssh
Pomocí příkazu gpgkey2ssh muj-gpg-klic >tecka-ssh-authorized_keys-na-vzdalenem-PC převést na open-ssh formát veřejného klíče a ten přenést do authorized_keys do PC, kam se chci přihlašovat.
10. Přihlášení na vzdálený počítač
10.1 gpg-agent není automaticky spuštěn při přihlášení
Přihlášení je možné v grafickém prostředí i terminálu (tty x).
petr@HP:~$ gpg-agent --enable-ssh-support --daemon --use-standard-socket ssh vzdaleny@IP-adresa
Nebo pomocí alias:
petr@HPPC:~$ sshg vzdaleny@IP-adresa
10.2 gpg-agent je automaticky spuštěn při přihlášení do grafického prostředí
Přihlášení je možné pouze v grafickém prostředí.
petr@HPPC:~$ ssh vzdaleny@IP-adresa
10.3 gpg-agent je automaticky spuštěn přes udev při vložení tokenu po přihlášení do grafického prostředí
Přihlášení je možné pouze v grafickém prostředí.
Varianta 1 v souboru /opt/token/yubiko-start (bod 7.1.2 nebo 7.3.2, spuštění přes udev).
petr@HPPC:~$ ssh vzdaleny@IP-adresa
10.4 gpg-agent je automaticky spuštěn přes udev při vložení tokenu po přihlášení
Přihlášení je možné v grafickém prostředí i terminálu (tty x).
Varianta 2 v souboru /opt/token/yubiko-start (bod 7.1.2 nebo 7.3.2, spuštění přes udev).
petr@HPPC:~$ echo UPDATESTARTUPTTY | gpg-connect-agent; ssh vzdaleny@IP-adresa
Spouštění přes alias v ~/.bashrc:
petr@HPPC:~$ sshh vzdaleny@IP-adresa
Prostě je to brnkačka...
Dokument vytvořil: 00000, 13.10.2015 23:11 | Poslední úprava: 00000, 26.11.2015 10:13 | Historie změn | Zobrazeno: 1320×
Tiskni Sdílej: