Robimy klucz GPG

Co jakiś czas mam potrzebę coś zaszyfrować, a potem odszyfrować. Posługuję się programem gpg. Nie wdając się w technikalia:

gpg --gen-key

uruchomi prosty kreatorek do generowania plików kluczy. Na trzy pierwsze pytania: rodzaj klucza, rozmiar klucza i czas przedawnienia nie odpowiadam, wciskając enter i pozostawiając ustawienia domyślne, czyli RSA and RSA, 2048, 0. Następnie podaję swoje imię i nazwisko (w zasadzie można wpisać cokolwiek). Tutaj radzę unikać polskich znaków, gdyż nigdy nie wiadomo jakie locale się trafi na jakiej maszynie i prędzej czy później będziemy oglądać krzaczki. Dalej podaję email (prawdziwy, lub nie). Potem gpg prosi o krótki komentarz do klucza, którego nie wpisuję i naciskam enter.

Teraz zaczyna się magia. 🙂 Powinniśmy dać komputerowi coś do roboty, by uzbierał sobie dużą ilość losowych danych, na których gpg będzie mógł pracować. Ja akurat miałem Pythona do skompilowania, ale może to być cokolwiek. Po kilku minutach nasz błyszczący klucz prywatny oraz publiczny znajdzie się w katalogu ~/.gnupg. Dobra… ale jeżeli mam więcej niż jeden komputer? Nie mogę wygenerować nowego klucza, podpisać się na nim tym samym imieniem oraz nazwiskiem oraz oczekiwać, że będzie identyczny.

Gpg przewiduje eskport oraz import kluczy. Eksport klucza publicznego i prywatnego:

gpg -a --export > publiczny.asc
gpg -a --export-secret-keys > prywatny.asc

Pliki te należy przenieść na drugi komputer w bezpieczny sposób, na przykład przez scp. Importujemy je tak:

gpg --import publiczny.asc
gpg --import prywatny.asc

Od teraz mamy identyczne klucze na dwóch różnych komputerach. Możemy się upewnić, że są na miejscu za pomocą:

gpg --list-keys
Zaszufladkowano do kategorii $polecenia | Otagowano , , | Możliwość komentowania Robimy klucz GPG została wyłączona

Nie ma Pythona 2

Szukając Pythona do ściągnięcia ze strony Python.org trafiłem na ciekawostkę:

A gdzie 2? 🙁

nie ma Pythona 2. Jeżeli się trochę przeklikać, trafimy oczywiście na wersję 2.7.14 oraz wszystkie wcześniejsze, ale nie są w żaden sposób wyeksponowane. Jako, że zegar tyka coraz mocniej, nie ma się czemu dziwić, ale zaczynałem na Pythona 2.2 i jakoś jednak jest dziwnie. 🙂 To jak jakby po latach się zorientować, że nie można już kupić Windowsa 2000, albo gumy do żucia Turbo.

Zaszufladkowano do kategorii stdout | Otagowano , | Możliwość komentowania Nie ma Pythona 2 została wyłączona

dnf makecache

Fedora, podobnie zresztą jak kilka innych dystrybucji, ma pewną upierdliwą właściwość: menedżer pakietów co jakiś czas pobiera informacje o tym, co się zmieniło w repozytoriach. Na szybkim łączu i z szybkim procesorem nawet bym tego nie zauważył, ale na laptopie od razu wiem kiedy dnf się włącza. Szczęśliwie można się tego pozbyć:

sudo systemctl mask dnf-makecache
sudo systemctl mask dnf-makecache.timer

a dla Red Hata, CentOSa, Scientifica i starych wersji Fedory:

sudo systemctl mask yum-makecache
sudo systemctl mask yum-makecache.timer

i już. Nie to, żeby makechache nie był całkiem sensownie zrobiony: nie uruchamia się podczas pracy na baterii oraz przy pracy bez wifi. Dnf i tak będzie odświeżał cache przy okazji ręcznej instalacji, aktualizacji oraz szukania pakietów, czyli dokładnie wtedy, kiedy tego potrzebuję.

Zaszufladkowano do kategorii $polecenia | Otagowano , | Możliwość komentowania dnf makecache została wyłączona

strftime

Format zapisu zegara według strftime

Mamy w *niksie bardzo powszechnie używany program do pokazywania daty oraz godziny. Nazywa się strftime właśnie i wiele pulpitów oraz menedżerów okien używa go w ustawieniach zegara na pasku zadań. Gnome pokazuje go u mnie w formie [skrócona nazwa dnia] [dzień] [miesiąc] [dwucyfrowy rok] [godzina]:[minuta]. Bardzo mi to odpowiada i lubię taki format zegarka na innych pulpitach. Używając strftime będzie to wyglądało tak:

%a %d %b %y %R

Wygląda trochę magicznie, ale w istocie jest to po prostu zwykły napis, zawierający spacje oraz znaki. strftime zinterpretuje jednak słowa rozpoczynające się od znaku % po swojemu:

  • %a to skrócony dzień tygodnia (%A to cały dzień tygodnia),
  • %d to dzień miesiąca,
  • %m to numer miesiąca,
  • %y to dwucyfrowy rok (%Y to czterocyfrowy rok),
  • %R to czas w formacie godzina:minuta (można to rozbić na %H:%M, gdzie %H to godzina i %M to minuta).

Strftime można również dostosować do systemu zapisu w USA, gdzie nasz 24-godzinny zegar używany jest chyba tylko w wojsku. W tym wypadku do zapisu daty można użyć %D, a do zapisu godziny %r.

Zaszufladkowano do kategorii stdout | Otagowano | Możliwość komentowania strftime została wyłączona

Aktualizacja Fedory

Lubię, kiedy coś po prostu działa. Jest proste, zrozumiałe i niemagiczne. Dlatego przy aktualizacji Fedory do nowego wydania posługuję się czystym dnf, bez żadnych pomagaczy i wtyczek. Wystarczy zaktualizować pakiety z plikami *.repo i dnf dalej sobie poradzi.

 

mkdir 28
cd 28
wget ftp://ftp.icm.edu.pl/pub/Linux/fedora/linux/releases/28/Workstation/x86_64/os/Packages/f/fedora-release-28-1.noarch.rpm
wget ftp://ftp.icm.edu.pl/pub/Linux/fedora/linux/releases/28/Workstation/x86_64/os/Packages/f/fedora-repos-28-1.noarch.rpm
wget https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-branched.noarch.rpm
wget https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-branched.noarch.rpm
wget ftp://ftp.icm.edu.pl/pub/Linux/fedora/linux/releases/28/Workstation/x86_64/os/Packages/f/fedora-release-workstation-28-1.noarch.rpm
wget ftp://ftp.icm.edu.pl/pub/Linux/fedora/linux/releases/28/Workstation/x86_64/os/Packages/f/fedora-gpg-keys-28-1.noarch.rpm
sudo dnf clean all
sudo rpm -Uvh *rpm
sudo dnf update -y
reboot

Działa tak samo dobrze, jak system-upgrade, ale widzę i wiem, co się po kolei dzieje.

Zaszufladkowano do kategorii $polecenia | Możliwość komentowania Aktualizacja Fedory została wyłączona

CentOS 7.5

Po ledwie miesięcznym poślizgu względem odpowiedniego Red Hata, wydany został CentOS 7.5, do którego zaktualizowałem już jeden z moich serwerków. Jak zwykle wystarczy yum update, który aktualizuje po prostu bardzo dużo pakietów. Jeżeli macie serwer z niewielką ilością ramu, tak około gigabajta, i coś jeszcze na nim pracuje, zadbajcie o swapfile, żeby się yum nie zawiesił.

Z ciekawych rzeczy mamy Kernel 3.10.0-862.2.3.el7.x86_64, zapewne z mnóstwem backportów, Sambę 4.7, Gnoma 3.26, Libre Office 5.3, Gimpa 2.8 oraz Inkscape 0.92. Podobnie jak na Fedorze, GStreamer obsługuje pliki mp3 bez dodatkowego kombinowania, co jest efektem ogłoszenia przez właściciela stosownych patentów „i tak wszyscy w branży przeszli na aac, więc miejcie sobie te mp3ki”. Mi pasuje, bo filmy i tak zwykle oglądam na Youtubie, albo innych tego typu serwisach, a muzyki lubię słuchać lokalnie.

Na „pulpit wapniaka”, który ma przeżyć każdy kataklizm, nadaje się idealnie. Pasuje mi również jako zaawansowana stacja robocza dla programisty, a w zasadzie pasował, odkąd aktualizacje Fedory do kolejnych wersji są szybsze niż Javy na Windowsie. 🙂

Zaszufladkowano do kategorii stdout | Otagowano | Możliwość komentowania CentOS 7.5 została wyłączona

Losowe słowo

Jakiś czas temu pisałem o programiku pass, który, między innymi, potrafi tworzyć losowe hasła. Czasem jednak potrzebuję na szybko jakieś losowe słowo. Na przykład, żeby ustawić je do ciasteczek. Znalazłem taką funkcję dla Basha:

 

losowik()
{
  cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1
}

w pewnym komentarzu na Githubie. Proste i działa, tak jak lubię. Ale co z tym zrobić? Trzeba te cztery linijki dopisać do .bashrc i uruchomić nowy terminal, albo się na chwilę wylogować.

Potem wpisuję do terminala: losowik 22 i mam słowo na 22 alfanumeryczne znaki. Już wyjaśniam o co w tym chodzi:

  • cat wypisuje na standardowym wyjściu zawartość pliku /dev/urandom
  • jako, że nie chcemy go w całości, filtrujemy go „rurką” |
  • tr to taki mieszajnik do znaków; potrafi usuwać podany znak (-d), oraz zastępować go innym (-c); w naszym przypadku zastępuje znaki niealfabetyczne (które również są w urandom), alfabetycznymi,
  • fold skraca każdą linijkę urandoma do 32 znaków (linijki bywają dłuższe),
  • head wyświetla fragment tekstu, w tym przypadku pierwszą linijkę.

Trochę to zawiłe i pewnie da się to zrobić w bardziej elegancki sposób, ale lubię rurkować komendy i potem nieco poprawiać całą składnię pod siebie. Możliwe, że jeszcze to poprawię i dam znać, kiedy wymyślę coś ciekawego.

Zaszufladkowano do kategorii #!/kody, $polecenia | Możliwość komentowania Losowe słowo została wyłączona

Zakupy do serwerka

Udało mi się znaleźć dosyć tanio kilka brakujących rzeczy do PowerEdga. Pierwsza to dwie brakujące szufladki do twardych dysków po 25 złotych za sztukę (dotychczas widziałem je po prawie 100 złotych) oraz zapasowe wentylatory. Nie, żebym się bardzo o nie martwił, ale po dychu za sztukę to kupiłem.

Sprawdza się tutaj zasada obowiązująca dla każdej mającej kilka lat elektroniki: od razu kupujcie cały zestaw. Dokupowanie części oraz peryferiów może czasem mocno dać po kieszeni.

Zaszufladkowano do kategorii stdout | Możliwość komentowania Zakupy do serwerka została wyłączona

Test raida na PowerEdgu

Poweredge 710 w mojej wersji ma cztery klasyczne dyski po 450 gigabajtów każdy. Jako, że nie planuję używać go jako serwera plików, rozkład partycji zaplanowałem w taki sposób:

  • /dev/sda1 – boot
  • /dev/sda5 – /
  • /dev/sda6 – home
  • /dev/sdb1 – /var
  • /dev/sdb2 – /mnt/smietki

Co zostawia mnie z dwoma dyskami, na których będą się rodziły eksperymenty, oparte między innymi na TensorFlow, który zaczyna coraz bardziej mi się podobać. Dwa dyski dają już małe pole manewru z macierzą: RAID0 dający prędkość oraz RAID1 dający bezpieczeństwo danych. Bezpieczeństwem zajmie się mój zdalny serwer, więc sprawdźmy jaką prędkość możemy uzyskać.

Zacznę od utworzenia dwóch partycji: /dev/sdc1 oraz /dev/sdd1. Format nie jest bardzo istotny. Istotne za to jest, żeby miały dokładnie tę samą pojemność, więc w obydwu przypadkach pozostawiłem kilka wolnych megabajtów na końcu dysku. Dlaczego? Dyski, nawet tego samego  producenta, mogą się bardzo nieznacznie różnić ilością sektorów, ale z pewnością nie jest to więcej niż 1 megabajt. Potem wyczarujemy macierz dyskową:

mdadm -C /dev/md0 -l raid0 -n 2 /dev/sdc1 /dev/sdd1

Po kolei:

  • -C to create, po którym mamy nazwę nowego urządzenia jako plik w /dev,
  • -l to typ raida, w tym przypadku raid0 dzielący dane na dostępne partycje,
  • -n oznacza ilość partycji, jakie mamy do dyspozycji (u mnie są dwie),
  • na koniec wpisujemy partycje, które chcemy poświęcić na macierz.

Mamy już nasz plik /dev/md0, ale do macierzy pozostało jeszcze kilka komend. Przede wszystkim musimy sprawić, żeby zmiany przetrwały ponowne uruchomienie maszyny:

mdadm --detail --scan --verbose > /etc/mdadm.conf

sformatować md0:

mkfs -t ext4 /dev/md0

oraz umożliwić jej wygodne montowanie, dopisując nową linijkę do /etc/fstab:

# macierz raid0
/dev/md0 /mnt/labolatorium -t ext4 defaults 0 2

Pozostało utworzenie katalogu zwanego punktem montowania oraz katalogu do zapisu moich rzeczy:

mkdir /mnt/labolatorium
mount /mnt/labolatorium
mkdir /mnt/labolatorium/piwnica
chown -R lukasz:lukasz /mnt/labolatorium/piwnica

Mamy już naszego raida, ale jak sprawdzić, czy cokolwiek daje? Z pomocą przychodzi nam dd oraz /dev/zero, dzięki którym utworzymy plik zawierający bardzo, bardzo dużo zer:

sudo dd if=/dev/zero of=/var/pamietnik.img bs=1024k count=256k
.262144+0 records in
262144+0 records out
274877906944 bytes (275 GB) copied, 1452.91 s, 189 MB/s

A teraz to samo na naszej macierzy:

sudo dd if=/dev/zero of=/mnt/labolatorium/piwnica/pamietnik.img bs=1024k count=256k
262144+0 records in
262144+0 records out
274877906944 bytes (275 GB) copied, 756.533 s, 363 MB/s

Nie jest to może zawrotna prędkość, biorąc pod uwagę możliwości dysków SSD, ale nie wydając ani złotówki prawie podwoiłem prędkość zapisu. Mi pasuje. Teraz możecie zwrócić uwagę, że PowerEdge ma sprzętowy RAID, który potencjalnie mógłby dawać lepsze wyniki. Ano ma, ale w przypadku padu serwera (o ile nie kupię tego samego) stracę te dane. Macierz programową utworzoną przez mdadm mogę odtworzyć na jakimkolwiek innym sprzęcie.

Zaszufladkowano do kategorii $polecenia | Otagowano , , , | Możliwość komentowania Test raida na PowerEdgu została wyłączona