「rootユーザーで作った設定ファイルを、一般ユーザーで編集しようとしたら怒られた」
Linuxサーバーの運用で「権限エラー(Permission denied)」が起きた時、chmodコマンドと並んで必ずチェックすべきなのが「ファイルの所有者」です。
chmod が「誰に何をさせるか(読み・書き・実行の許可)」を制御するのに対し、chown は「そのファイルが誰のものか(所有者)」を変更するコマンドです。この記事では、ファイルやディレクトリの所有者・グループを変更する
chown(チェンジオーナー)コマンド の実践的な使い方を解説します。基本的な所有者の変更から、ユーザーとグループを同時に変更する書き方、ディレクトリの中身ごと一括で変更する
-R オプションまで、実務でトラブルを解決するための必須ノウハウをまとめました。※
chown コマンドは原則として root ユーザー、または sudo を付けた状態でのみ実行できます。一般ユーザーで実行すると「Operation not permitted」エラーになります。1. 現在の所有者とグループを確認する(ls -l)
chown コマンドで変更を行う前に、まずは現在のファイルの所有者が誰になっているかを確認するのが鉄則です。ls -l コマンドを使用します。# ls -l sample.txt -rw-r--r-- 1 root root 1024 Feb 24 10:00 sample.txt
root が「所有ユーザー」、4番目の root が「所有グループ」を表しています。2. 所有者(ユーザー)だけを変更する
ファイルの所有ユーザーだけを変更するには、変更後のユーザー名と対象ファイルを指定します。# 基本書式: chown [ユーザー名] [ファイル名] # sample.txt の所有者を "apache" ユーザーに変更する # chown apache sample.txt
3. グループだけを変更する
所有グループだけを変更したい場合は、コロン(:)の前にユーザー名を書かず、グループ名だけを指定します。コロンを忘れるとユーザー名として解釈されてしまうため注意してください。# 基本書式: chown :[グループ名] [ファイル名] # sample.txt の所有グループだけを "apache" に変更する # chown :apache sample.txt
4. ユーザーとグループを「同時に」変更する(現場の鉄則)
実務において、Webサーバーのドキュメントルート(/var/www/html など)を設定する際、所有ユーザーだけを変更してグループを変更し忘れると、予期せぬ権限エラーを引き起こす原因になります。そのため、ユーザー名とグループ名をコロン(
:)で区切って同時に変更するのが現場のセオリーです。# 基本書式: chown [ユーザー名]:[グループ名] [ファイル名] # 所有ユーザーを "apache"、所有グループを "apache" に同時に変更する # chown apache:apache sample.txt
.)を使っていることがありますが、POSIX標準に準拠するため現代のLinux環境ではコロン(:)を使用することが推奨されています。5. ディレクトリの中身ごと一括で変更する(-R)
ディレクトリを新規作成してファイルを大量にコピーした際など、ディレクトリ内のすべてのファイル・サブディレクトリの所有者を一度に変更したい場面が必ずあります。その場合は、再帰的に処理を行う
-R(大文字のアール)オプションを追加します。# /var/www/html 以下のすべてのファイルとディレクトリを apache:apache に変更する # chown -R apache:apache /var/www/html/
【重要】-R オプションの危険性
-R は非常に強力で便利なオプションですが、指定するパスを間違えるとシステム全体を破壊する恐れがあります。もし誤って
chown -R apache:apache /(ルートディレクトリ配下すべて)を実行してしまうと、OSの起動に必要なファイルの所有者まで書き換わってしまい、サーバーが二度と立ち上がらなくなります。パスの指定は慎重に行ってください。本記事のまとめ(chownオプション早見表)
| やりたいこと | コマンド・書き方 |
|---|---|
| 現在の所有者とグループを確認する | ls -l ファイル名 |
| 所有ユーザーだけを変更する | chown ユーザー名 ファイル名 |
| 所有グループだけを変更する | chown :グループ名 ファイル名 |
| ユーザーとグループを同時に変更する | chown ユーザー名:グループ名 ファイル名 |
| ディレクトリ以下を一括変更する | chown -R ユーザー名:グループ名 ディレクトリ名/ |
コマンドの打ち間違いで、システムを壊してしまったことはありませんか?
chownコマンドの -R オプションや、実行パスをひとつ間違えるだけで、システムに必要な重要ファイルの権限を書き換えてしまい、サーバーが起動しなくなる大事故に繋がります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・pstree
・chsh
・finger
・duコマンドでディスク使用量を確認する方法|ディレクトリごとの容量や容量順ソートも
・LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方
