Ubuntu 26.10 noklusējumā izmanto Rust valodā rakstītas komandas cp, mv un rm. Ar šo laidienu Canonical pabeidza pāreju no GNU coreutils uz uutils projektu. Pati pāreja sākās jau 25.10 versijā, kad uutils komplekts pirmoreiz kļuva par noklusējumu. Laidiens ar koda nosaukumu Stonking Stingray iznāca 15. oktobrī.
coreutils ir pamata komandu kopa, ko Linux sistēma izmanto katru dienu: failu kopēšana, pārvietošana, dzēšana, satura izvade, tiesību maiņa. Tādas komandas kā ls, cat, chmod un du uz Rust pārgāja agrāk. Trīs palika pēdējās rindā. cp, mv un rm vēl 26.04 LTS versijā nāca no GNU. Iemesls bija drošība.
uutils ir GNU coreutils pārrakstījums Rust valodā. Projekts aizsākās pirms vairāk nekā desmit gadiem ar mērķi atveidot GNU rīkus ar saderīgu uzvedību, bet modernā, atmiņas ziņā drošā valodā. Vairums lietotāju pāreju nepamanīs, jo komandas strādā tāpat. Saderība ar GNU testu komplektu tomēr vēl nav simtprocentīga.
Kāpēc trīs komandas gaidīja
TOCTOU kļūda (time-of-check to time-of-use) ļauj uzbrucējam nomainīt failu brīdī starp pārbaudi un darbību. Programma pārbauda, vai fails pieder lietotājam, bet pirms kopēšanas uzbrucējs to aizstāj ar saiti uz svešu failu. Tā privileģēta komanda var pieskarties failam, kuram lietotājam piekļuves nav. Canonical paziņojumā teikts, ka 2026. gada 22. aprīlī cp, mv un rm vēl bija astoņas atvērtas šāda veida kļūdas. Tās bija jāizlabo, pirms komandas varēja iekļaut noklusējumā.
cp, mv un rm strādā ar failu sistēmu, kas var mainīties pašas darbības laikā. Tieši tāpēc šīs komandas ir jutīgākas pret TOCTOU nekā, piemēram, cat vai echo, kas tikai nolasa vai izvada tekstu. GNU versijas šīs problēmas bija risinājušas gadu gaitā, bet Rust pārrakstā aizsardzība bija jāuzbūvē no jauna.
Audits atrada 113 kļūdas
Canonical pasūtīja drošības auditu firmai Zellic. Audits notika divās kārtās. Pirmā kārta no 2025. gada decembra līdz 2026. gada janvārim aptvēra drošības ziņā jutīgākās komandas un atrada 73 kļūdas. Otrā kārta no februāra līdz martam aptvēra pārējās komandas un atrada vēl 40 kļūdas. Kopā sanāca 113 kļūdas.
No tām 44 saņēma CVE numurus, no CVE-2026-35338 līdz CVE-2026-35381. Zellic auditori arī iesniedza 30 labojumu pieprasījumus uutils projektam. oss-security sarakstā publicētais pirmās kārtas kopsavilkums rāda 7 kritiskas kļūdas, 11 augstas, 29 vidējas un 26 zemas. Lielākā daļa kļūdu līdz 26.10 laidienam ir izlabota.
Audits parāda, cik piesardzīgi Canonical izturas pret pāreju. Tā vietā, lai pārrakstītu rīkus un uzreiz tos piegādātu lietotājiem, uzņēmums samaksāja ārējai firmai par divām pārbaudes kārtām un gaidīja, līdz kritiskās kļūdas ir aizvērtas. Tieši TOCTOU kļūdas trijās failu komandās aizkavēja pilno pāreju par vienu laidienu.
Ātrums nav galvenais iemesls
Canonical skaidro, ka veiktspēja nav pārejas galvenais mērķis.
Lai gan veiktspēja ir augstu manu prioritāšu sarakstā, tā nav galvenais iemesls šīm izmaiņām.
Tā Rust pāreju komentējis Canonical inženierijas viceprezidents Džons Sīgers (Jon Seager). Galvenais arguments ir atmiņas drošība. Rust valodā veselas kļūdu klases, piemēram, bufera pārpilde vai piekļuve atbrīvotai atmiņai, tiek novērstas jau kompilēšanas laikā. GNU coreutils ir rakstīts C valodā, kur šādas kļūdas joprojām rodas pēc gadu desmitiem. Tieši tāpēc audits bija vajadzīgs. Rust pārraksts aizver vienu problēmu klasi, bet loģikas kļūdas, piemēram, TOCTOU, paliek. Tās atrod tikai cilvēks ar koda pārskatu vai audits.
coreutils nav pirmais Rust rīks Ubuntu bāzē. Jau 25.10 versijā noklusējuma sudo komandu aizstāja sudo-rs, ko uztur bezpeļņas organizācija Trifecta Tech Foundation. Canonical šo virzienu dēvē par bāzes sistēmas oksidēšanu. Mērķis ir samazināt atmiņas kļūdu skaitu pamata rīkos, jo tieši tās veido lielāko daļu nopietno drošības ievainojamību.
Kā atgriezties pie GNU
Lietotāji, kam vajag veco GNU uzvedību, var instalēt pakotni coreutils-from-gnu. Tā atgriež iepriekšējās komandas. Pārslēgties starp abām versijām palīdz arī rīks oxidizr, kas strādā ar coreutils, findutils, diffutils un sudo-rs. uutils kods ir licencēts ar MIT, kamēr GNU rīki izmanto GPLv3.
Praktiskā ietekme vairumam ir neliela. Interaktīvā darbā cp, mv un rm strādā tāpat kā agrāk. Problēmas var rasties automatizācijā, kur skripts paļaujas uz precīzu GNU kļūdu tekstu vai mazāk izplatītu karodziņu. Šādos gadījumos coreutils-from-gnu atjauno veco uzvedību, līdz saderība uzlabojas.
Pāreja nebija gluda visu laiku. Portāls It’s FOSS raksta, ka jūlijā uutils cp nonāca Ubuntu arhīvā un drīz tika noņemts, jo salūza dzīvā attēla būvēšana. Labojums bija ātrs un nonāca augšup uutils projektā.
Kas notiek tālāk
Canonical jau norādījis nākamo soli. Pēc coreutils kārta pienāk laika sinhronizācijai. Noklusējuma NTP klientu paredzēts aizstāt ar Rust rakstītu ntpd-rs kādā no nākamajiem laidieniem. Ubuntu 25.10 bija pirmais laidiens, kas uutils piegādāja noklusējumā, tātad pilna coreutils pāreja prasīja tieši vienu gadu.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.