Die Veröffentlichung des uutils coreutils 0.9.0 (Rust Coreutils), das ein Pendant zum GNU Coreutils-Paket entwickelt, das in der Programmiersprache Rust geschrieben ist, wurde veröffentlicht. Die coreutils umfassen über einhundert Dienstprogramme, darunter sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln und ls. Ziel des Projekts ist die Schaffung einer plattformübergreifenden alternativen Implementierung von Coreutils, die unter anderem auf Windows-, Redox- und Fuchsia-Plattformen funktioniert.
Rust Coreutils
ist standardmäßig in der Ubuntu-Version 25.10 aktiv und teilweise in Ubuntu 26.04 integriert. Rust Coreutils wird auch in den Distributionen AerynOS (Serpent OS) und Apertis (entwickelt von Collabora) eingesetzt. Im Gegensatz zu GNU Coreutils wird die Rust-Implementierung unter der permissiven MIT-Lizenz und nicht unter der Copyleft-Lizenz GPL verbreitet. Darüber hinaus entwickelt dasselbe Entwicklerteam auf Rust basierende Entsprechungen der Dienstprogrammsammlungen util-linux, diffutils, findutils, procps und acl sowie der Programme sed und login.
In der neuen Version von Rust Coreutils:
- Der Kompatibilitätsgrad mit dem Referenz-Testset von GNU Coreutils lag bei 90,58 % (vorher 94,74 %). Es wurden 625 Tests erfolgreich abgeschlossen, fünf weniger als in der vorherigen Version (630). 56 Tests fielen aus (vorher 21), ein Test führte zu einem Fehler, und 8 Tests wurden übersprungen (vorher 14). Der Rückgang des Kompatibilitätsgrades wird durch das Update des Testsets auf den Stand der Veröffentlichung von GNU Coreutils 9.11 erklärt, bei dem 25 neue Tests hinzugefügt wurden.
- Es wurden 44 Sicherheitsanfälligkeiten behoben, die während eines Audits durch Zellic festgestellt wurden. Die meisten Sicherheitsanfälligkeiten sind auf abweichendes Verhalten im Vergleich zu GNU Coreutils oder auf Rennzustände zurückzuführen, die die Änderung von Daten nach der Validierung, aber vor der Ausführung der Operation zulassen, z. B. das Ersetzen einer Datei durch einen symbolischen Link in dem Moment zwischen dem Abschluss der Überprüfung und dem Beginn der Operation. Im Kontext der Verwendung der Dienstprogramme cp, chmod und mv in von root mit Rechten ausgeführten Systemskripten ermöglichen solche Sicherheitsanfälligkeiten das Kopieren oder Überschreiben beliebiger Dateien. Zum Schutz vor Rennzustandsanfälligkeiten wurde im Projekt das Modul uucore::safe_copy implementiert. Informationen über die Sicherheitsanfälligkeiten wurden in einer separaten Nachricht veröffentlicht.
- Die Übersetzung von Dienstprogrammen auf das Crate-Paket rustix anstelle des Crate-Pakets nix wurde fortgesetzt. Zu rustix wurden die Dienstprogramme id, tr, timeout, sort, wc, tail, cp, who und factor portiert.
Der Code wurde in verschiedenen Dienstprogrammen von unsafe-Operationen bereinigt. - In den Befehlen cat, wc, head, tail, yes, cp, tee und unexpand kommen Eingabe-/Ausgabe-Handler zum Einsatz, die auf Systemaufrufen wie splice(), tee() und pipe() basieren, was die Arbeit beschleunigt, indem überflüssiges Kopieren von Daten zwischen Puffern vermieden wird.
- Die Kompatibilität mit den GNU Coreutils-Utilities numfmt, date, tr, cksum, factor, head, stat und sort wurde verbessert.
- Die Utilities ln, dd, mktemp und tty unterstützen nun die Erstellung im WebAssembly-Format und die Verwendung der WASI-Schnittstelle (WebAssembly System Interface).
- Die Funktionen wurden erweitert, Probleme behoben und fehlende Optionen für die Utilities cat, chroot, cksum,
cp, date, dd, df, dirname, du, echo, env, expr, factor, fmt, head, id, install, join, ln, logname, ls, md5sum, mkdir, mknod, mktemp, more, mv, nl, nohup, nproc, numfmt, od, paste, pinky, pr, realpath, rm, rmdir, shred, sort, split, stat, stdbuf, stty, sum, sync, tail, tee, timeout, touch, tr, tty, unexpand, uniq, uptime, wc, who, yes.
Quelle: opennet.ru
