それに直面しましょう:Linuxファイルシステムは複雑になる可能性があります。マウントされたリモートファイルシステム、リムーバブルメディア、および作成したサーバー固有のディレクトリを追加すると、特定のファイルが保存されている場所を正確に覚えるのが難しい場合があります。ここでfind
コマンドが入ります。さまざまな基準に基づいてファイルまたはディレクトリを検索できます。 find
の基本的なレビューを行います 以下ですが、この記事の焦点は少し異なります。権限でリソースを検索します。
権限で検索する必要があるのはなぜですか?
- セキュリティ監査
- ユーザーアクセスに関する苦情のトラブルシューティング
- アプリケーションアクセスの問題のトラブルシューティング
名前による検索の簡単な例
find
をカバーするEnableSysadminに関する他の記事があります 効果的にコマンドします。ただし、ここでコマンドを簡単に要約します。
構文:
find (where to search) (what to search for)
例:
# find /etc -name rsyslog
# find /home/user01 -type d
ただし、この記事では -perm
の使用に焦点を当てています。 オプション。権限設定に基づいて検索します。
アブソリュートモードとシンボリックモード
chmod
を使用して権限が設定されていることを思い出してください 指図。 chmod
コマンドは、アブソリュートモードとシンボリックモードの両方を認識します。 2つのモードを含むリソースアクセスの管理のレビューについては、最近の記事「ユーザー、グループなどのLinux権限を管理する方法」を参照してください。 find
コマンドはどちらのモードも認識するため、最も自然に発生するモードを使用できます。私にとって、それは絶対モードです。 find -perms
を効果的に使用するには、アブソリュートモードとシンボリックモードに関するいくつかのことを思い出す必要があります。 コマンド。
絶対モード
絶対モードでは、8進値を使用して権限を表します。値は、ユーザー、グループ、およびその他すべてに割り当てられる権限として順番にリストされています。
例:
# chmod 764 file1
ユーザーを設定します 7で (rwx)、 6のグループ (rw)、およびその他の 4 (r) file1
の場合 。
シンボリックモード
シンボリックモードでは、シンボルを使用してアクセスレベルを表し、数学演算子を使用して( + )または削除(- )権限。
例:
# chmod o+rw file1
与える その他 アイデンティティ読む および書き込み file1
へ 。
絶対モードを使用してリソース権限を検索する
最も基本的な権限検索では、追加のパラメーターは使用されません。ステートメントは、「これらの権限を持つリソースを検索する」と読みます。
例:
# find /etc -perm 777
コマンドは次のとおりです。/etc
を検索します 777のリソースのディレクトリ アクセスレベル(すべてのIDのrwx)。
上記の例では、正確に指定された権限を持つリソースのみが検索されます。これ以上でもそれ以下でもありません。もう少し柔軟性が必要な場合はどうなりますか?非常に役立つ2つの追加パラメーターがあります。 1つ目は-
です 文字(ダッシュ)、2番目は /
文字(スラッシュ)。両方を見てみましょう。
検索-
-
の使用 オプションは、「少なくともこの権限レベルが設定されており、それより高い権限が設定されている」ことを意味します。
例:
# find . -perm -644
この例では、現在のディレクトリ内のすべてのリソースが少なくとも 644で表示されます。 権限。
検索/
/
の使用 オプションは、「リストされているすべての権限が設定されている」ことを意味します。
例:
# find . -perm /644
この例では、 644のリソースを表示しています 以上の権限。
シンボリックモードを使用してリソースのアクセス許可を検索する
シンボリックモードはugoを使用します 記号(ユーザー、グループ、その他)、 rwx 記号(読み取り、書き込み、実行)、および数学演算子( + など) または- )権限を定義します。
検索-
-コード> オプションは、シンボリックモードでも、上記のアブソリュートモードと同じように動作します。 「少なくともこのアクセスレベル」のリソースが表示されます
例:
# find -perm -u+w,g+w
検索/
/
シンボリックモードでも同じように機能します。 「リストされているすべての権限」を持つリソースが表示されます。
例:
# find -perm /u+w,g+w
Linuxの標準権限は非常に一般的であり、特定のアクセスレベルが構成されているリソースを検索する方法がわかりました。ただし、Linuxは特別な権限も利用します 。 find
コマンドはこれらの権限も表示できます。
特別な権限が設定されているリソースを検索する
Linuxの特別なアクセス許可は、リソースに追加のアクセス制御を設定します。 3つの特別な権限があります:Set User ID(SUID)、Set Group ID、(SGID)、およびStickyBit。それぞれの詳細はこの記事の範囲外ですが、簡単に要約します。
特別な許可 | 説明 |
SUID | ファイルは、所有者が所有者でなくても、所有者のIDを持つユーザーによって実行されます |
SGID | ディレクトリの内容は、親フォルダのグループの関連付けを自動的に継承します(プロジェクトチームが共有するディレクトリに最適です) |
スティッキービット | ファイルは自動的にメモリに読み込まれ、所有者以外が削除または変更することはできません |
特別な権限の詳細については、この記事をご覧ください。
特別な権限は、4番目のビット(左端)を使用して構成されます:
- SUID = 4
- SGID = 2
- スティッキービット=1
ヒント : ls -l
の出力 コマンドはsを表示します SUIDが構成されている場合は、ユーザーの実行可能フィールドに s SGIDが構成されている場合は、グループの実行可能フィールドに T またはt スティッキービットが設定されている場合(実行も設定されているかどうかによって異なります)。
次のコンテンツでは、特定の特別な権限が構成されているファイルの検索について説明します。
SUIDが構成されているファイルを検索する
SUIDアクセスレベルが定義されているファイルを見つけるには、 -perm
を使用します オプションですが、4桁目を含めます。 SUIDの8進値は4です 。
たとえば、SUIDが構成されているリソースを検索するには:
# find /usr/bin -perm 4755
SGIDが構成されているファイルを検索する
同じ構文を使用して、 2のSGID8進値を使用して定義されたSGID権限を持つリソースを表示できます。 。
たとえば、SGIDが構成されているリソースを検索するには:
# find /usr/bin -perm 2755
スティッキービットが設定されているファイルを検索する
最後に、 1の8進数値を使用できます スティッキービットが設定された状態でリソースを表示します。
スティッキービットの例を次に示します。
# find /etc -perm /1444
注 :-コード> および
/
パラメータは、標準の権限の場合と同じように特別な権限で機能します。
[他の読者が楽しんだ:Linuxシステム管理者の基本:ユーザーアカウント管理]
ボーナスの例
権限を表示するのに役立つ可能性のある追加のコマンドをいくつか示します。記事を書いている間、私は考え続けました。待って、これはどうですか? 次に、ボーナスの例を追加します。したがって、権限監査のためのいくつかの追加コマンドがあります。
ボーナス1:結果を否定しないために-を使用します
-not
を使用できます find
のオプション 指定された基準に一致しないものを指定します。
最初の例は、通常の find
を示しています 試行すると、2番目に find
が表示されます -not
。
# find /etc/network -perm 777
上記の例は、 / etc / network
内のリソースを表示しています その 777を持っている 設定された権限。
# find /etc/network -not -perm 777
この例では、 / etc / network
内のリソースを表示します 以外の権限を持っている 777 構成済み。
ボーナス2:findとchmodを使用して権限を設定します
find
の利点の1つ 実行機能が含まれているということです。これをxargs
などのフォローアップコマンドと組み合わせることができます 、 rm
、または chmod
。
# find -perm -111 -exec chmod -R 777 {} \;
この例では、 {}
文字はfind
の結果を表します コマンド、および \;
文字はchmod
の終了を表します コマンド。
警告 :「検索+その他のコマンド」を組み合わせて実行した場合の効果を正確に理解するように注意してください。タイプミスは簡単にfind
する可能性があります / etc
内のすべてのファイル 次に、それらを削除するか、正当なユーザーをホームディレクトリからロックアウトする権限を構成してみてください。
ボーナス3:lsとgrepを使用して権限を表示する
find
の高度な機能が必要ない場合もあります 指図。代わりに、特定の権限をすばやく簡単に表示する必要があります。その場合は、 ls
に依存してください およびgrep
コマンド。
例:
# ls -l | grep rwxrw-r--
このコマンドは、指定された権限を持つすべてのディレクトリコンテンツを表示します。
ボーナス4:ACL権限の表示
find
コマンドは、アクセス制御リスト(ACL)権限が適用されているファイルを簡単に表示しません。その場合は、 getfacl
を使用してください 代わりにコマンド。
例:
# getfacl file1
アクセス制御リストの詳細については、Linuxアクセス制御リスト(ACL)の概要を参照してください。
まとめ
find
コマンドは、検索する必要のあるディレクトリまたはファイルを表示するための便利なユーティリティです。ただし、findは、指定されたアクセス許可を持つディレクトリとファイルを表示するため、優れたセキュリティツールにもなります。システム管理者は、その情報を使用して、サーバーのリソースが会社のセキュリティポリシーに従って設定されていることを確認できます。 >>
を使用できることを忘れないでください これらの権限を文書化するためのリダイレクタ。このようなドキュメントは、将来の監査の権限ベースラインとして使用できます。
[セキュリティについて考えていますか?ハイブリッドクラウドのセキュリティを強化し、ビジネスを保護するためのこの無料ガイドをご覧ください。 ]