こんにちは、インフラエンジニアのryuです。
毎日のように ls や cp を打っていると思います。では、そのコマンドを書いたのは誰でしょうか、と聞かれたらどうでしょう。
たいていの人は考えたこともないはずです。私もそうでした。コマンドは最初からそこにあるもので、OSに付属している空気のような存在でしたから。
ところが2026年、その空気が静かに入れ替わりました。Ubuntuの標準コマンドが、長年使われてきたGNU coreutilsから、Rustで書き直されたuutilsという別の実装に移ったのです。しかも10月に出る次のバージョンで、その移行が完全に終わります。
この記事では、何がいつ変わったのかを時系列で整理したうえで、現場のサーバーを預かる側として何を確かめておけばいいのかを見ていきます。
そもそも、何が入れ替わったのか¶
まず、入れ替わった対象をはっきりさせておきます。
Linuxを触っていると当たり前に使う ls cat cp mv rm chmod du といった基本コマンド群は、GNU coreutilsというひとつのソフトウェアにまとめて収められています。ディストリビューションはこれを取り込んで配っているわけです。
そのGNU coreutilsと同じ機能を、Rustという言語でゼロから書き直したものがuutils coreutilsです。目指しているのは互換性で、GNU版と挙動が違えばそれはバグとして扱う、という方針で開発されています。
Canonicalが掲げた理由は速度ではなく、安全性と回復力だった。土台のソフトウェアほど、その上にあるすべてが依存するからだ。
置き換えは3回に分けて進んだ¶
一気に差し替えたわけではありません。Canonicalは、実験のしやすい中間リリースで試してから、長期サポート版へ持ち込むという進め方を取りました。
| 時期 | バージョン | 起きたこと |
|---|---|---|
| 2025年10月 | Ubuntu 25.10 | uutils coreutils と sudo-rs を既定として採用した最初のリリース |
| 2026年4月 | Ubuntu 26.04 LTS | rust-coreutils 0.8.0 が既定に。ただし cp mv rm はGNU版のまま |
| 2026年10月 | Ubuntu 26.10 | 残りの3つも移行し、標準コマンドが100% uutils実装になる予定 |
中間リリースで1年ぶん実地に晒してから長期サポート版へ入れる。Canonical自身も、長期サポート版の前にできるだけ多くの実環境で試すために25.10で既定にした、と説明しています。この慎重さは、あとで触れる cp の扱いにも表れています。
そしてUbuntu 26.04 LTSは標準で5年、Ubuntu Proを付ければ10年のサポートが付きます。つまり、いま作る本番サーバーは、この新しい実装と長く付き合うことになるわけです。
sudoまでRust製になっていた¶
見落とされがちですが、入れ替わったのはcoreutilsだけではありません。特権昇格に使う sudo も、Rustで書き直された sudo-rs が既定になりました。
sudo-rsを開発しているのはTrifecta Tech Foundationという非営利団体で、30年にわたって本家sudoを保守してきたTodd Miller氏と協力しながら進められています。フォークして分裂するのではなく、世代を引き継ぐ形を取ったわけですね。
普段の使い方は変わりません。sudoコマンドの使い方を覚えた人が、そのまま同じ感覚で使えます。
なぜ、わざわざ書き直したのか¶
「動いているものを、なぜ触るのか」と思うのが自然だと思います。実際、この移行には反発もありました。
理由として挙げられているのは、メモリ安全性です。C言語で書かれたプログラムは、メモリの扱いを誤るとバッファオーバーフローのような深刻な欠陥につながります。Rustは、その種の誤りをコンパイルの段階ではじく仕組みを言語自体が持っています。
特に効くのは、権限の境目に立つプログラム¶
すべてのソフトウェアを書き直す必要があるわけではありません。効果が大きいのは、一般ユーザーの入力を受け取りながら管理者権限で動くプログラムです。
まさに sudo がそれにあたります。Canonicalも、特権の境界に立つ部品ではRustが持つメモリ安全性の保証が決定的だ、という言い方をしています。
コマンド群のほうも同じです。信頼できない名前のファイルや、他人が作ったディレクトリを日常的に相手にしますから、境界に立っている点では変わりません。
置き換えには反対意見もあった¶
もっとも、この方針が歓迎一色だったわけではありません。何十年も使われて枯れてきた実装を、まだ新しい実装に差し替えることへの懸念は、発表の直後から出ていました。
開発元のライセンスが従来と異なる点を問題視する声もあります。技術的な良し悪しだけでなく、誰がどんな条件でそのソフトウェアを維持していくのか、という話でもあるからです。
どちらが正しいと決めつける必要はないと思います。ただ、自分が使っているOSがこういう議論の上に成り立っていると知っておくことには意味があります。
書き直しても、欠陥がゼロになるわけではない¶
ただし、Rustにしたから安全になった、という単純な話ではないことも押さえておきたいところです。
Canonicalは長期サポート版に入れる前に、Zellicという会社へ2段階のセキュリティ監査を依頼しました。2025年12月から2026年3月にかけて行われ、合計113件の問題が見つかっています。見つかった内容はすべて開発元へ報告されました。
その後も修正は続いていて、2026年8月に出た rust-coreutils 0.10.0 では15件のCVEが修正されています。内訳は、既定で有効になっているコマンドの9件と、まだ有効になっていなかった cp mv rm の6件でした。
つまり、新しい実装には新しいバグがあるということです。言語を変えても、実装を書き直した以上、枯れるまでの時間は必要になります。
なぜ cp と mv と rm だけ残されたのか¶
ここがこの移行のいちばん面白いところだと思います。
Ubuntu 26.04 LTSの時点で、ls も cat も chmod もRust製に移っていました。それなのに cp mv rm の3つだけは、GNU版が使われ続けました。
理由はTOCTOUと呼ばれる種類の問題が未解決だったからです。Time-of-check to time-of-useの略で、確認した瞬間と実際に使う瞬間のあいだに状態が変わってしまうことで起きる欠陥を指します。
確認と実行のあいだに差し込まれる¶
たとえるなら、宅配便の受け取りに似ています。玄関の覗き穴で「配達員だ」と確認してからドアを開けるまでの数秒に、相手が別人に入れ替わっていたら、確認の意味がありません。
ファイル操作でも同じことが起こりえます。コピー先が普通のファイルであることを確認したあと、実際に書き込むまでのわずかな時間にシンボリックリンクへすり替えられると、意図しない場所へ書き込んでしまう。ファイルを消したり上書きしたりする3つのコマンドで、これは特に危険です。
だからCanonicalは、この3つだけを保留にしました。上流で問題が解決されたことを確認したうえで、2026年10月のUbuntu 26.10で移行を完了させる、という段取りです。
慎重で地味な判断ですが、運用を預かる側としては納得しやすいのではないでしょうか。
自分のサーバーで、どちらが動いているか確かめる¶
では実務の話に移ります。まずやるべきは、手元のサーバーがどちらの実装で動いているかを知ることです。
確認は難しくありません。多くのコマンドは --version で自分の素性を名乗ります。
# 先頭行に uutils と出ればRust製、GNU coreutils と出ればGNU製
ls --version | head -n 1
cp --version | head -n 1
sudo --version | head -n 1
# パッケージの側から見る
dpkg -l | grep -E 'coreutils|sudo'
Ubuntu 26.04 LTSでは、既定の実装が coreutils-from-uutils というパッケージで提供され、GNU版を使いたい場合は coreutils-from-gnu に入れ替える形になります。戻す道はきちんと残されているわけですね。
注意したいのは、開発用パッケージとの関係¶
ひとつ知っておくとよいのが、build-essential が coreutils-from-uutils に強い依存を持っている点です。
これは、パッケージをビルドするときに意図せずGNU版が使われてしまうのを防ぐための設計だと説明されています。裏を返すと、ビルド環境を兼ねているサーバーでは、GNU版へ丸ごと戻すのが素直にはいかない場合がある、ということです。
sudoのほうは事情が違って、従来のsudoもパッケージとして残されています。必要ならそちらへ切り替えられます。
影響が出るとすれば、どこか¶
利用者から見て違いはないはずだ、というのが公式の説明です。互換性のずれはバグとして扱われますから、通常の使い方で困る場面は考えにくいと思います。
気をつけたいのは、コマンドの出力を機械的に読んでいる場所です。エラーメッセージの文面や、ヘルプの表示をスクリプトで解析している箇所があると、わずかな差で動かなくなる可能性が残ります。
監視の仕組みでも同じです。コマンドの標準出力を切り出して閾値と比べているような作り方をしていると、出力の並びがわずかに違うだけで数字がずれます。動かなくなるより、静かに間違った値を返すほうが厄介ですよね。
逆に、終了ステータスだけを見て成否を判断している作りなら、影響を受ける余地はほとんどありません。どちらの作りになっているかを棚卸ししておくと、移行の前に安心できます。
自作の運用スクリプトを抱えている環境なら、検証機で一度通してみるのが安全です。このあたりの考え方は、シェルスクリプトとPythonの線引きで書いた「黙って失敗しない書き方」とも地続きの話になります。
いま運用中のサーバーで、慌ててやることはない¶
すでに動いているUbuntu 26.04 LTSのサーバーについて、今日中に手を入れなければならないことはありません。既定の実装はもう入れ替わったうえで動いています。
やるとすれば、次の大きな更新の前に3つだけです。自作スクリプトの洗い出し、検証機での実行、そして出力を解析している箇所の確認。これで大半は片付きます。
特に注意したいのは、何年も前に誰かが書いて動き続けているスクリプトです。書いた本人がもう社内にいない、という状況は珍しくありません。読んで意味の分からない処理が残っているなら、この機会に中身を確かめておくとよいと思います。
この変化を、学ぶ側はどう受け止めればいいか¶
最後に、これからインフラを学ぶ人にとっての意味を考えてみます。
結論から言うと、覚え直すことはありません。ls -l は ls -l のままですし、オプションの意味も変わりません。参考書が古くなるわけでもない。Linuxコマンドの基本で学んだことは、そのまま通用します。
そのうえで、ひとつだけ受け取ってほしい視点があります。それは、コマンドにも実装があり、作っている人がいるということです。
ls はOSに最初から備わった機能ではなく、誰かが書いたプログラムで、パッケージとして配られている。だからバージョンがあり、脆弱性が見つかり、修正が配られる。そう捉えられるようになると、OSの見え方がずいぶん立体的になります。
実装があると分かると、調べ方も変わります。挙動が想像と違ったとき、自分の使い方を疑うだけでなく、その実装の既知の問題を調べるという選択肢が増えるからです。公式のリリースノートや開発元の告知を読む習慣は、まさにこういう場面で効いてきます。
ディストリビューションごとに中身の選び方が違うことも見えてきます。そのあたりは2026年のLinuxディストリビューション選びとサポート期限とあわせて読むと、つながりが分かりやすいと思います。
InfraAcademyでは、こうしたLinuxの仕組みを、実際にコマンドを打ちながら順番に学べるようにしています。体系的に学び直したい方はLinuxの学習ロードマップから、ネットワーク側を固めたい方はネットワークの学習ロードマップから進めてみてください。
まとめ¶
2026年、Ubuntuの標準コマンドはGNU coreutilsからRust製のuutilsへ移りました。2025年10月の25.10で始まり、26.04 LTSでは cp mv rm を残し、10月の26.10で移行が完了します。
残された3つはTOCTOUという種類の問題が理由で、上流の修正を待ってから移されました。監査で113件、その後のリリースでも15件のCVEが見つかっているとおり、書き直しには相応の時間がかかっています。
現場でやることは多くありません。--version でどちらが動いているかを確かめ、出力を機械的に読んでいるスクリプトがあれば検証機で通してみる。それで十分です。
毎日触っているコマンドにも、作っている人と歴史があります。そう思って ls --version を打ってみると、いつもの端末が少しだけ違って見えるのではないでしょうか。
参考記事¶
- An update on rust-coreutils(Ubuntu Community Hub / Canonical Foundations)
- Rust-coreutils 0.10 now available for Ubuntu 26.04 LTS(Ubuntu Community Hub)
- Adopting sudo-rs By Default in Ubuntu 25.10(Ubuntu Community Hub)
- Carefully But Purposefully Oxidising Ubuntu(Ubuntu Community Hub)
- Ubuntu 26.10 release notes(Ubuntu公式ドキュメント)



