namei – パス名を辿って各要素の種類や権限を表示する

検索・探索

namei は、指定したパスを先頭から末端まで辿り、ディレクトリ・シンボリックリンク・通常ファイルなど各要素の種類を段階的に表示します。シンボリックリンクは解決過程もインデント付きで示され、リンクループの検出にも役立ちます。(man7.org)
実務では、「どこでリンクが張られているか」「どのディレクトリに権限問題があるか」を素早く特定したいときに使います。(man7.org)

構文(Syntax)

namei [OPTIONS] PATHNAME...
  • シンボリックリンクに遭遇すると、そのリンク自体と解決先をインデントして表示します。(man7.org)

主なオプション一覧

オプション説明使用例
-l, --longロング形式(-m -o -vと同等:モード/所有者を縦揃えで表示)namei -l /bin/ls (man7.org)
-m, --modes各要素のパーミッションをls風(rwxr-xr-x等)で表示namei -m /etc/alternatives/editor (man7.org)
-o, --owners各要素の所有者・グループを表示namei -o /var/log/syslog (man7.org)
-v, --vertical-m/-oの表示を縦方向に揃えて見やすくnamei -v -m -o /usr/bin/python (man7.org)
-n, --nosymlinksシンボリックリンクを辿らない(リンク先へ進まない)namei -n /bin/ls (man7.org)
-x, --mountpointsマウントポイントのディレクトリをdではなく**D**で表示namei -x / (man7.org)
-Z, --contextセキュリティコンテキスト(SELinux 等)を表示(非対応ビルドでは?namei -Z /var/www/html (man7.org)
-h, --help / -V, --versionヘルプ/バージョン表示namei -h / namei -V (man7.org)

種別の記号:d=ディレクトリ、l=シンボリックリンク、-=通常ファイル、s=ソケット、b=ブロック、c=キャラクタ、p=FIFO、?=エラー、先頭行のf:は解決中のパス名。(man7.org)

実行例

基本:パスの各要素をたどって表示

説明:スナップショットとして、末端までの解決過程を確認します。
コマンド

namei /var/log/syslog

出力例(例)

f: /var/log/syslog
 d /
 d var
 d log
 - syslog

シンボリックリンクの解決を可視化

説明:途中にリンクがあるパスを辿り、リンク先をインデントして表示します。
コマンド

namei /bin/ls

出力例(例)

f: /bin/ls
 d /
 l bin -> usr/bin
 d usr
 d bin
 - ls

/binusr/bin へのリンクである環境の一例)

権限と所有者をまとめて確認(ロング形式)

説明:各要素のパーミッション・所有者・グループを縦揃えで見やすく表示します。
コマンド

namei -l /etc/alternatives/editor

出力例(例)

f: /etc/alternatives/editor
 drwxr-xr-x root root /
 drwxr-xr-x root root etc
 drwxr-xr-x root root alternatives
 lrwxrwxrwx root root editor -> /usr/bin/vim.basic
 drwxr-xr-x root root usr
 drwxr-xr-x root root bin
 -rwxr-xr-x root root vim.basic

(man7.org)

リンクは辿らずリンク自体を確認

説明-n でリンク先へ進まず、リンクそのものだけを確認します。
コマンド

namei -n /bin/ls

出力例(例)

f: /bin/ls
 d /
 l bin -> usr/bin
 - ls

(man7.org)

マウントポイントを強調表示

説明-x でマウントポイントのディレクトリが D として表示されます。
コマンド

namei -x /boot/grub

出力例(例)

f: /boot/grub
 d /
 D boot
 d grub

/boot が別パーティションな環境の一例)(man7.org)

エラー例:リンクループ(「多すぎるシンボリックリンク」)

説明:相互リンクを作ると、最大リンク数超過として検出されます。
コマンド

ln -s a b && ln -s b a
namei a

出力例(例)

f: a
 l a -> b
 l b -> a
namei: maximum number of symbolic links exceeded

(man7.org)

関連コマンド

  • ls:ファイル種別や権限の表示。namei -m/-oの表示形式はls風。(man7.org)
  • stat:単一ファイルの詳細なメタデータを表示。(man7.org)
  • readlink:シンボリックリンクの中身(リンク先)を表示。
  • realpath:最終的な絶対パスを出力(全リンクを解決)。

備考

  • 対象:Linux(util-linux)の実装を前提としています。BSD系にも同名コマンドがありますが、オプションが異なる場合があります。(man7.org)
  • 権限:到達できないディレクトリや読めない要素があると ? が表示されます。必要に応じて sudo namei -l ... で権限を確認してください。(man7.org)
  • セキュリティコンテキスト-Z はビルド時オプションです。非対応ビルドでは ? を表示します。(man7.org)
  • 記号の読み方Dマウントポイント-x 指定時のみ)。f: は解析対象のフルパスを示すヘッダ行です。(man7.org)

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント