Archiwum kategorii: Linux

[Fedora] System76, Oryx Pro

Firma system76 jest jednym z niewielu „producentów” sprzętu, dla których Linux jest pierwszym i jedynym wspieranym systemem operacyjnym. Niestety wymyślili sobie, że będą wspierać Ubuntu i opartego o niego POP!a (własnej produkcji).
Osobiście wolę wynalazki RHEL’o podobne, także na laptopie/desktopie pracuję na Fedorze. Jak można się domyślać, na moim laptopie niektóre funkcjonalności nie działają out of box.
Żeby rozwiązać problem zarządzania wentylatorami, kolorkami klawiatury itp. przygotowałem repozytorium z paczkami dla Fedory dostępne na moim koprze: https://copr.fedorainfracloud.org/coprs/szydell/system76/

Dodanie repozytorium do Fedory:

sudo dnf install dnf-plugins-core
sudo dnf copr enable szydell/system76 

Instalacja i start:

sudo dnf install system76-dkms system76-power system76-firmware
sudo systemctl enable system76-power system76-power-wake system76-firmware-daemon
sudo systemctl start system76-power system76-firmware-daemon

Do pełni szczęścia brakuje jeszcze paczki system76-driver. Zaktualizuję posta jak będzie dostępny.

Zmiana UUID partycji

Dysk HDD na którym miałem system okazał się być zbyt wolny, także sklonowałem jego zawartość na SSD używając komendy 'dd’. Teraz chciałbym, żeby UUIDy na nowym dysku były wygenerowane od nowa. Jak to zrobić?

Komendą 'uuidgen’ generujemy nowy UUID:

[szydell@grabki ~]$ uuidgen
5e0b0314-fe0c-4db8-8908-c815d0b67e1f

Na CentOS/Red Hat 7 narzędzie to dostępne jest w pakiecie 'linux-utils’. Na Debianie i Ubuntu trzeba doinstalować pakiet 'uuid-runtime’.

Następnie zmieniamy UUID na wybranej przez nas partycji używając 'tune2fs -U’

sudo tune2fs /dev/sda1 -U 5e0b0314-fe0c-4db8-8908-c815d0b67e1f

bash extglob odkrycie tygodnia :)

extglob czyli odpalenie „regexów” wewnątrz basha. Przykładowo proste kasowanie z excludem

[szydell@example test]$ ls
aaa1.txt aaa2.txt aaa3.txt aaa4.txt aaa5.txt aaa6.txt aaa7.txt aaa8.txt aaa9.txt bbb1.txt bbb2.txt bbb3.txt bbb4.txt bbb5.txt bbb6.txt bbb7.txt bbb8.txt bbb9.txt test1.txt test2.txt test3.txt test4.txt test5.txt

Chcemy wywalić *.txt z pominięciem aaa5.txt

[szydell@example test]$ shopt -s extglob
[szydell@example test]$ rm !(aaa5).txt
[szydell@example test]$ ls
aaa5.txt

Wielowątkowe pakowanie w Centos 7

Red Hat / CentOS niestety nie rozpieszczają pod względem dostępności fajnych zabawek w standardowym repozytorium
Jedyne co znalazłem to 'pigz’ czyli rozwiązanie dające tę samą funkcjonalność co gzip, ale na wielu core’ach.

Trzeba oczywiście doinstalować:

yum install pigz

Niestety nie da się prosto odinstalować gzip’a i zastąpić go pigz’em. Ale zawsze można pokombinować 🙂

  1. Sprawdź jak wygląda twoja zmienna środowiskowa $PATH. Z root’a powinno to być coś w ten deseń:

    echo $PATH
    /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/root/bin
  2. Zlokalizuj gdzie masz gzip’a. Standardowo jest w lokalizacji: /usr/bin/gzip
  3. Jak widać mamy niewielkie możliwości do podmienienia sobie gzipa z wykorzystaniem dowiązania symbolicznego, także zróbmy sobie linka w /sbin

    sudo ln -s /usr/bin/pigz /sbin/gzip
  4. Teraz jeżeli uruchomienie komendy 'gzip’ bez ścieżki, odpali pigz’a.

Dla leniwców (albo kogoś kto nie ma roota) – można podmienić sobie komendę np. w menu Midnight Commandera.

W pliku: /etc/mc/mc.menu zamieniamy komendę 'gzip’ na 'pigz’:
Linia:

tar cf - "$Pwd" | gzip -f9 > "$tar.tar.gz" && \

po zmianie:

tar cf - "$Pwd" | pigz -f9 > "$tar.tar.gz" && \

voila

chmod -x chmod

Jak naprawić system gdy się jest geniuszem zła i wyda się komendę chmod -x chmod?

64bit:
/lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod
32bit:
/lib/ld-linux.so.2 /bin/chmod +x /bin/chmod

Brak pewności które użyć?
Sprawdź:

[user@linux katalog]$ ldd /bin/chmod
        linux-vdso.so.1 =>  (0x00007ffd263fd000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003f7c400000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003f7c000000)

setfacl czyli ACLe w akcji. Dostęp do logów.

Setfacl to jedno z narzędzi do zarządzania ACL’ami pod Linuxem. Notatka praktyczna pokazująca jak można je zastosować w realnym świecie.

Czasami istnieje konieczność przyznania komuś dostępu do logów. Dostępu stałego, uwzględniającego logrotate i ewentualne fanaberie niektórych aplikacji (zmień ownera po stworzeniu pliku – patrz Apache).

Najskuteczniejszą moim zdaniem metodą jest skorzystanie z ACL’a nałożonego na katalog.
Przykładowo. Chcemy dodać członkom grupy www dostęp read do logów nginxa:

setfacl -d -m g:www:r nginx/    # to załatwia sprawę dla przyszłych plików (można też pojechać rekurencyjnie -R)

wydanie komendy spodowowało:

[root@linux log]# getfacl nginx/
# file: nginx/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:www:r--
default:mask::r-x
default:other::r-x

setfacl -m g:www:r nginx/* # a tak dorzucamy +r do wszystkich obecnych.

Jeżeli uprawnienia miałyby być nadane nie na grupę tylko konkretnego usera to:

setfacl -d -m u:login:r nginx/

Usunięcie acla:

setfacl -x g:www nginx/
setfacl -x u:login nginx/

RHEL 7: zmiana hasła roota

Metoda działa na Red Hat Enterprise Linux 7 oraz Centos 7.

  • W trakcie startu systemu po wyświetleniu menu gruba zatrzymujemy go (strzałka w górę np.). Wybieramy z listy kernel, który chcemy użyć (zapewne będzie to pierwsza linia od góry).
  • Wciskamy 'e’
  • Znajdujemy linię, która zaczyna się od 'linux16′
  • Za słowem 'quiet’ lub przed 'LANG’ dodajemy wpis 'rd.break’
  • Wciskamy CTRL-X
  • Powinien wystartować goły system, z promptem #
  • # mount -o remount,rw /sysroot
  • # chroot /sysroot
  • # passwd – wpisujemy nowe hasło
  • # touch /.autorelabel – wymuszamy odtworzenie kontekstów SELinuxa przy starcie
  • exit, exit

Koniec.