find -groupオプションの使い方を解説!初心者でもできる所有グループによるファイル検索
生徒
「Linuxで、特定のグループが所有しているファイルだけを探す方法ってありますか?」
先生
「あるよ!findコマンドの-groupオプションを使えば、所有グループを指定して検索できるんだ。」
生徒
「えっ、所有グループって何ですか?」
先生
「いい質問だね!それじゃあ、まずは『所有グループ』とは何か、そしてfind -groupの基本的な使い方を、順番に説明していくね。」
1. 所有グループとは?
Linuxでは、ファイルやディレクトリには所有ユーザーと所有グループという2つの「持ち主」が設定されています。例えば、ある会社の「営業部」グループが共有で使うファイルであれば、そのファイルの所有グループはsalesなどになります。
この所有グループに属するユーザーたちは、ファイルに対して「読み取り」「書き込み」などの操作を許可されていることが多いです。
2. find -groupオプションの基本
findコマンドは、ファイルを条件に応じて検索できる便利なLinuxコマンドです。-groupオプションを使えば、特定の所有グループを指定して、そのグループが所有しているファイルだけを検索できます。
たとえば、グループ名がdevelopersのファイルを検索するには、以下のように入力します。
find /path/to/search -group developers
/path/to/search/app1.py
/path/to/search/scripts/run.sh
この例では、/path/to/searchというディレクトリの中から、所有グループがdevelopersのファイルを探しています。
3. グループ名がわからないときは?
「そもそも、どんなグループがあるのかわからない…」というときは、/etc/groupというファイルを見てみましょう。ここには、Linuxに登録されているすべてのグループ名が一覧で記載されています。
cat /etc/group
root:x:0:
daemon:x:1:
developers:x:1001:user1,user2
sales:x:1002:user3,user4
このように、グループ名(例:developers、sales)が表示されます。
4. 自分が所属するグループを確認するには?
自分がどのグループに所属しているかを調べたい場合は、groupsコマンドを使ってみましょう。
groups
user1 wheel developers
この例では、user1というユーザーはwheelとdevelopersという2つのグループに所属していることがわかります。
5. ファイルの所有グループを確認するには?
特定のファイルがどのグループに属しているかを確認したいときは、ls -lコマンドを使いましょう。
ls -l sample.txt
-rw-rw-r-- 1 user1 developers 2048 Sep 16 10:00 sample.txt
developersと表示されている部分が「所有グループ」です。
6. グループID(GID)で検索する方法
-groupオプションでは、グループ名だけでなくGID(Group ID)を指定することも可能です。GIDは、グループごとに割り当てられた数字です。
find /path/to/search -group 1002
/path/to/search/sales_report.csv
このようにGIDを直接指定しても、グループ名と同じように検索できます。
7. よくある組み合わせ例
findコマンドでは、-groupオプションと他の条件を組み合わせることで、より細かい検索ができます。
- 特定のグループでかつファイルサイズが大きいものを探す:
find /var/log -group admin -size +5M
/var/log/admin/error.log
- 所有グループが
staffで、更新日が7日以内のファイル:
find /home/shared -group staff -mtime -7
/home/shared/projectA/plan.txt
8. 所有グループの変更(補足)
検索ではありませんが、chgrpコマンドを使えば、ファイルの所有グループを変更できます。
chgrp sales report.csv
このコマンドで、report.csvの所有グループをsalesに変更できます。
ただし、グループを変更するには、適切な権限(多くの場合はrootユーザー)または対象グループへの所属が必要です。