sudo mkdir -p コマンド情報まとめ
ターミナルの sudo mkdir -p コマンドについて、基本的な使い方や便利なオプション、他のディレクトリ作成コマンドとの違い、AI エージェントが実行した場合の危険性と自動実行許可の判断基準を紹介しています。
sudo mkdir -pとは
sudo mkdir -p は、管理者権限(スーパーユーザー権限)を用いて、途中の親ディレクトリも含めてディレクトリを再帰的に作成するコマンドです。
一般ユーザーの権限ではアクセス権がないシステム領域(/var/www/ など)に、フォルダ階層を一度のコマンド実行で作成したい場合によく用いられます。
コマンド・オプションの意味
| 要素 | 意味 |
|---|---|
sudo | スーパーユーザー(rootなど)の特権権限で後ろのコマンドを実行します。 |
mkdir | 新しいディレクトリを作成するコマンドです(make directory)。 |
-p, --parents | 必要に応じて親ディレクトリも自動作成し、既に存在していてもエラーを出さずに処理を続行します。 |
sudo を併用することで、パーミッションエラー(Permission denied)を回避し、システムのあらゆる階層にディレクトリを配備できます。
また、-p オプションを付与することで、上の階層から順に一つずつ mkdir を実行する手間を省くことができます。
よく使う組み合わせ
システム公開用ディレクトリの作成
sudo mkdir -p /var/www/html/my-project/assets
一般権限では書き込めない /var/www/ の配下に、プロジェクト用の assets ディレクトリとその親階層をまとめて作成します。
作成と同時に詳細ログを出力する
sudo mkdir -pv /var/log/custom-app/archive
-v オプション(verbose)を組み合わせることで、どの親ディレクトリが新しく作成されたかの詳細ログをターミナルに表示させながら処理を進めます。
sudo mkdir -p vs mkdir -p の違い
ディレクトリを作成する基本操作ですが、sudo を付与するかどうかで以下の違いがあります。
| 項目 | sudo mkdir -p | mkdir -p |
|---|---|---|
| 実行権限 | 管理者(root)権限 | 現在ログインしている一般ユーザー権限 |
| 作成可能な場所 | システム全体(制限なし) | 自身のホームディレクトリなど、書き込み権限のある場所に限定 |
| 作成されたフォルダの所有者 | root ユーザー(デフォルト) | 実行した一般ユーザー |
自身のホームディレクトリなど、パーミッションのある場所での作業であれば通常の mkdir -p を使用するのが安全です。sudo を使用すると作成されるディレクトリの所有権が root になるため、後から一般ユーザーが書き込みを行いたい場合は chown や chmod で権限調整を行う必要があります。
ユースケース
新しいシステムサービス用ログ出力先の作成
新しく導入するバックグラウンドプロセスやサービスのログを /var/log/ 以下に出力したい場合、該当するフォルダを管理者権限で事前に用意します。
共用サーバー上のデータ保管庫の初期設定
複数ユーザーがアクセスする共有領域(/mnt/ や /opt/ など)に、組織の共有データディレクトリ構造を定義して作成します。
AIエージェントが実行しようとした場合
AIエージェントの目的
AIエージェントは主に次のような目的で sudo mkdir -p を実行しようとすることがあります。
- 管理者権限が必要なシステム領域や、保護されたディレクトリ内にファイル・ログの出力先を用意するため
- 開発環境や本番環境のセットアップで、指定されたシステム構造を構築するため
危険性
sudo mkdir -p はディレクトリを作成するだけで、既存のシステムファイルを直接書き換えたり削除したりすることはありません。
しかし、一般ユーザーがアクセスできない領域に変更を加える管理者権限(sudo)を伴うため、パスの指定ミスなどで不要な場所にシステム管理外のフォルダを作ってしまったり、所有者権限(root)が原因で後続のタスクが権限エラーに陥ったりする可能性があります。
自動実行の許可設定
このコマンドはシステムの特権(sudo)を要求し、権限周りの設定変更が必要になる可能性が高いため、AIエージェントの自動実行(許可)設定はオフ(要承認)にすることを推奨します。
実行前に人間が作成先のパスやパラメータ、および実行する目的が妥当であるかを必ず確認すべきです。