Ubuntu 26.10 „Stonking Stingray” wprowadza ważną zmianę w fundamentach systemu. Canonical zakończyło migrację domyślnych narzędzi GNU Coreutils do ich odpowiedników napisanych w Rust. To nie rewolucja w codziennej obsłudze terminala, lecz istotny krok w kierunku zwiększenia bezpieczeństwa jednej z najważniejszych części Linuksa.
Rust coraz mocniej zaznacza swoją obecność w ekosystemie Linux. Język, który zdobył popularność dzięki mechanizmom bezpieczeństwa pamięci, trafia do kolejnych komponentów systemowych. Ubuntu 26.10 jest jednym z przykładów tej zmiany: standardowe polecenia używane przez administratorów, skrypty i aplikacje systemowe działają teraz w domyślnej konfiguracji na bazie projektu uutils.

Czym są GNU Coreutils?
GNU Coreutils to zestaw podstawowych narzędzi wiersza poleceń, które od lat stanowią nieodłączną część dystrybucji Linuksa. Korzystamy z nich podczas codziennej pracy w terminalu, ale również wtedy, gdy uruchamiane są skrypty administracyjne, instalatory, usługi systemowe czy zadania automatyzacji.
Pakiet obejmuje między innymi:
| Polecenie | Zastosowanie |
|---|---|
ls | Wyświetlanie zawartości katalogów |
cp | Kopiowanie plików i katalogów |
mv | Przenoszenie oraz zmiana nazw |
rm | Usuwanie plików i katalogów |
chmod | Zmiana uprawnień |
chown | Zmiana właściciela i grupy |
chgrp | Zmiana grupy pliku |
df | Sprawdzanie wykorzystania systemów plików |
du | Analiza zajętości katalogów |
dd | Kopiowanie danych na poziomie strumieni |
mkdir | Tworzenie katalogów |
touch | Tworzenie plików i modyfikacja znaczników czasu |
ln | Tworzenie dowiązań |
pwd | Wyświetlanie bieżącego katalogu |
date | Obsługa daty i czasu |
W tradycyjnym Ubuntu narzędzia te pochodziły z GNU Coreutils i były implementowane przede wszystkim w języku C.
Canonical zdecydowało się jednak na zmianę dostawcy tych poleceń. Zamiast GNU Coreutils domyślną implementacją stało się rust-coreutils, rozwijane przez projekt uutils.
uutils – Rust zamiast C
Projekt uutils powstał jako próba stworzenia kompatybilnego z GNU Coreutils zestawu narzędzi napisanych w Rust.
Jego celem nie jest zmiana sposobu korzystania z terminala. Użytkownik nadal może wpisywać polecenia takie jak:
ls -la
cp plik.txt kopia.txt
mv stary.txt nowy.txt
rm plik.txt
W większości typowych przypadków zachowanie poleceń ma być zbliżone do dotychczasowych implementacji GNU.
Różnica znajduje się przede wszystkim wewnątrz programu: zamiast kodu napisanego w C wykorzystywana jest implementacja Rust.
Dlaczego Canonical zdecydowało się na Rust?
Najważniejszym powodem jest bezpieczeństwo pamięci.
C daje programistom dużą kontrolę nad pamięcią, ale jednocześnie wymaga bardzo starannego zarządzania wskaźnikami, alokacją i czasem życia obiektów. Błędy w tych obszarach mogą prowadzić do poważnych podatności.
Do najczęściej spotykanych problemów należą:
- use-after-free;
- buffer overflow;
- out-of-bounds access;
- błędy związane z nieprawidłowym zarządzaniem pamięcią;
- niebezpieczne operacje na wskaźnikach.
Rust wykorzystuje system własności (ownership), pożyczania (borrowing) i kontroli czasu życia danych. Dzięki temu wiele klas błędów pamięci jest eliminowanych już na etapie kompilacji.
Canonical podkreśla, że główną motywacją nie jest wydajność. Chodzi przede wszystkim o zwiększenie odporności podstawowych komponentów systemu na błędy bezpieczeństwa.
Nie oznacza to jednak, że Rust automatycznie gwarantuje brak podatności. Nadal mogą występować błędy logiczne, niebezpieczne fragmenty unsafe, problemy w zależnościach czy niewłaściwa obsługa danych wejściowych.
Ubuntu 26.10 kończy migrację Coreutils
Droga do pełnej migracji nie była pozbawiona problemów.
Canonical rozpoczęło proces zastępowania GNU Coreutils implementacją Rust w 2025 roku. Początkowo planowano, aby Ubuntu 25.10 było wydaniem, w którym wszystkie podstawowe narzędzia zostaną zastąpione przez uutils.
W trakcie prac pojawiły się jednak problemy kompatybilności oraz błędy w poszczególnych poleceniach.
Problemy z poleceniem date
Jednym z przykładów był błąd w Rustowej implementacji date, który wpływał na automatyczne sprawdzanie aktualizacji w określonych konfiguracjach systemów desktopowych, serwerowych, chmurowych i kontenerowych.
To pokazuje, że nawet pozornie niewielka różnica w zachowaniu podstawowego polecenia może mieć wpływ na cały system.
Narzędzia takie jak date są wykorzystywane przez wiele skryptów i komponentów. Ich kompatybilność nie jest więc kwestią wyłącznie wygody użytkownika.
Audyt bezpieczeństwa uutils
Canonical zdecydowało się również na niezależny audyt bezpieczeństwa pakietu uutils.
W trakcie analizy wykryto problemy typu TOCTOU (Time-of-Check to Time-of-Use) w poleceniach:
cp;mv;rm.
TOCTOU to rodzaj błędu, w którym stan zasobu zostaje sprawdzony, ale zanim nastąpi jego wykorzystanie, może ulec zmianie. W określonych sytuacjach może to prowadzić do niebezpiecznych operacji na plikach.
Problemy zostały naprawione w projekcie upstream, a Ubuntu 26.10 otrzymało pełną migrację domyślnych narzędzi Coreutils do Rust.
Co zmienia się dla użytkownika Ubuntu?
Dla przeciętnego użytkownika zmiana jest niemal niewidoczna.
Nie trzeba uczyć się nowych poleceń. Typowe operacje na plikach, katalogach i uprawnieniach nadal wykonywane są w terminalu w taki sam sposób.
Przykładowo:
mkdir test
cd test
touch plik.txt
ls -l
Nadal tworzy katalog, przechodzi do niego, tworzy plik i wyświetla jego zawartość.
Zmiana może być bardziej zauważalna w przypadku:
- skryptów Bash;
- narzędzi administracyjnych;
- oprogramowania oczekującego specyficznego zachowania GNU;
- skryptów wykorzystujących nietypowe opcje poleceń;
- automatyzacji operacji na plikach.
Warto pamiętać, że zgodność nie oznacza identyczności w każdym szczególe. Niektóre opcje, komunikaty błędów, zachowanie przy nietypowych nazwach plików czy szczegóły obsługi systemów plików mogą się różnić.
Administratorzy powinni przetestować swoje skrypty
W środowiskach serwerowych zmiana dostawcy podstawowych poleceń może mieć znaczenie.
Jeżeli skrypt wykorzystuje standardowe operacje, prawdopodobnie będzie działał bez zmian. Jeżeli jednak polega na specyficznym zachowaniu GNU Coreutils, warto przeprowadzić testy.
Przykładowo, skrypt kopiujący pliki:
#!/bin/bash
SOURCE="/srv/data"
DEST="/srv/backup"
cp -a "$SOURCE" "$DEST"
W typowym zastosowaniu powinien zachowywać się zgodnie z oczekiwaniami. Jednak w środowisku produkcyjnym warto sprawdzić:
- zachowanie przy istniejących plikach docelowych;
- obsługę dowiązań symbolicznych;
- zachowanie przy błędach uprawnień;
- sposób kopiowania atrybutów;
- obsługę nietypowych nazw plików;
- wyniki kodów zakończenia.
Testy powinny być wykonywane w środowisku testowym, a nie na danych produkcyjnych.
Jak sprawdzić wersję Ubuntu?
lsb_release -a
Można również sprawdzić wersję systemu przez:
cat /etc/os-release
A następnie przetestować polecenia wykorzystywane przez własne skrypty.
GNU Coreutils nadal pozostaje dostępne
Migracja do Rust nie oznacza, że GNU Coreutils znika z ekosystemu Ubuntu.
Canonical utrzymuje dotychczasową implementację w archiwum pakietów dla wydań, w których nie jest ona domyślnym dostawcą narzędzi. W nowszych wydaniach GNU Coreutils pozostaje dostępne jako alternatywa.
To istotne dla organizacji, które korzystają z aplikacji zależnych od określonego zachowania GNU.
Nie należy jednak zakładać, że przełączenie implementacji będzie zawsze identyczne na każdym wydaniu Ubuntu. Warto korzystać z oficjalnej dokumentacji dotyczącej alternatywnych dostawców systemowych narzędzi.
Rust w Ubuntu – początek większej zmiany
Migracja Coreutils wpisuje się w szerszą strategię Canonical, określaną jako „oxidizing Ubuntu”.
Celem jest stopniowe zastępowanie wybranych komponentów systemowych implementacjami Rust, szczególnie tam, gdzie bezpieczeństwo pamięci ma duże znaczenie.
W Ubuntu 25.10 pojawił się również sudo-rs, czyli Rustowa implementacja narzędzia sudo. W kolejnych wydaniach Canonical rozwija strategię przenoszenia kolejnych komponentów na Rust.
Warto jednak zaznaczyć, że nie oznacza to przepisywania całego Ubuntu na nowy język. Linuxowy kernel, ogromna część aplikacji oraz wiele podstawowych bibliotek nadal korzystają z C i C++.
To stopniowa ewolucja, w której Rust ma ograniczać ryzyko związane z błędami pamięci w newralgicznych elementach systemu.
Rustowe NTP – kolejny krok?
Wśród kolejnych planowanych inicjatyw pojawia się również przeniesienie implementacji Network Time Protocol (NTP) na Rust.
NTP odpowiada za synchronizację czasu w systemach i sieciach. Dokładny czas ma znaczenie nie tylko dla użytkowników desktopowych, ale również dla logów, certyfikatów TLS, systemów uwierzytelniania oraz infrastruktury serwerowej.
Według przedstawionych zapowiedzi projekt ten ma być rozwijany z udziałem Trifecta Tech Foundation, a jego potencjalne uwzględnienie w Ubuntu wiązane jest z wydaniem 27.10.
Na tym etapie należy traktować go jako zapowiedź, a nie funkcję dostępną już w Ubuntu 26.10.
Czy Ubuntu 26.10 jest dzięki temu bezpieczniejsze?
Migracja Coreutils do Rust jest ważnym krokiem w kierunku ograniczenia klas błędów związanych z pamięcią.
Nie należy jednak traktować jej jako kompletnego rozwiązania bezpieczeństwa systemu.
Bezpieczeństwo Ubuntu nadal zależy od:
- regularnego instalowania aktualizacji;
- poprawnej konfiguracji uprawnień;
- ograniczania dostępu do usług;
- stosowania zasad najmniejszych uprawnień;
- monitorowania logów;
- zabezpieczenia kont administratorów;
- testowania skryptów i aplikacji.
Rust może zmniejszyć ryzyko określonych podatności, ale nie zastąpi dobrych praktyk administracyjnych.
Podsumowanie
Ubuntu 26.10 „Stonking Stingray” kończy ważny etap migracji podstawowych narzędzi systemowych do Rust. Domyślne polecenia Coreutils są teraz dostarczane przez uutils, co stanowi istotną zmianę w fundamentach dystrybucji.
Dla zwykłego użytkownika terminal będzie wyglądał niemal identycznie. Dla administratorów i twórców oprogramowania jest to jednak sygnał, aby sprawdzić zgodność skryptów i automatyzacji.
Najważniejszym celem Canonical nie jest kosmetyczna zmiana języka programowania. Chodzi o zwiększenie odporności systemu na błędy pamięci i poprawę bezpieczeństwa komponentów, z których korzystają miliony użytkowników.
Rust nie rozwiąże wszystkich problemów bezpieczeństwa Linuksa, ale jego coraz szersze zastosowanie może być jednym z istotnych kierunków rozwoju nowoczesnych dystrybucji.