GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS/RHEL 7 でユーザー アカウントを読み取り専用にする方法

質問 :システム上のどのファイルにも書き込めないユーザー アカウントを作成する方法は?つまり、CentOS/RHEL 7 で読み取り専用ユーザー アカウントを作成する方法は?

Linux では、ロール レベルのアカウントの分類は提供されません。アクセス権は I ノード レベルで制御されます。これは、個々のファイルまたはディレクトリごとに別々のアクセス権を意味します。

問題を少し言い直すとすれば、目的の操作を実現できる手法が少なくとも 2 つあります。ユーザー アカウントの観点から考えるのではなく、ファイルとディレクトリの観点から考えてください。これにより、ほぼ同じ結果を達成するためのいくつかの代替方法が可能になります。以下の各項目は、一部のユース ケースで役立つ可能性のあるわずかに異なる保護を提供する代替実装を示しています。

権限のない匿名アカウントを作成する

Linux の各ファイルまたはディレクトリには、ファイルの所有者、元の所有者と同じグループ内の他のユーザー、およびその他すべてに 1 つずつ、合計 3 セットの読み取り/書き込み/実行権限があります。一意のユーザー ID とグループ ID を使用して新しいアカウントを作成し、この新しいアカウントを読み取り専用アカウントとして使用できます。アカウントはそのホーム ディレクトリ以外にファイルを所有しないため、唯一のアクセス許可は「その他」のアクセス許可であり、通常は書き込みアクセスの許可が省略されます。

# useradd -c 'Mostly R/O Account' roaccount

roaccount には一意のユーザー ID とグループ ID が割り当てられます。これにより、ホーム ディレクトリの外にあるすべてのファイルが「その他」のアクセス許可によって制御されます。 O/S にはすでに最小権限のアカウント nobody がありますが、このアカウントはシステムによって特別に扱われます。 R/O の使用には別のアカウントをお勧めします。

このスキームの欠点は、サーバーとストレージ上のすべてのファイルとすべてのディレクトリに依存して、「その他の」権限が正しく設定されていることです。これは、手動で行うか、作成プロセスの umask を少なくとも 0002 に設定することによって行うことができます (これにより、「その他の」書き込み権限の設定がブロックされます)。

特定のファイルが書き込まれたときに通知を受け取ります。

特定のユーザーによって書き込まれたすべてのファイルを特定することが目的の場合は、auditctl ツールが役立つ場合があります。特定のユーザーが実行したときにトリガーされる write システム コールにウォッチを設定できます。設定例:

# auditctl -a always,exit -S write -F auid=1000

ユーザー ID 1000 が任意のファイルに書き込むたびに、監査証跡エントリがトリガーされます。監査証跡サブシステムは、表現できる条件において非常に表現力があります。

audit.rules man ページで詳細なドキュメントを検索してください。

# man audit.rules

アクセス制御リスト (ACL) を使用して権限をオーバーライドします。

一部のファイルシステム ハンドラーは、所有者/グループ/その他の部門が許可するよりもきめ細かいアクセス許可であるアクセス制御リスト (ACL) をサポートしています。個々のファイルまたはディレクトリは、ACL を使用して特定のユーザーのセットを選択できますが、必ずしも同じグループに属しているとは限らず、それらのユーザーだけに目的のファイル アクセス許可を与えることができます。

たとえば、userA、userB、および userC にディレクトリ /secret-files/ 以下への読み取り専用アクセスを付与したいとします。これは次のように行うことができます:

# setfacl -Rd -m u:userA:rx -m u:userB:rx -m u:userC:rx /secret-files
# setfacl -R  -m u:userA:rx -m u:userB:rx -m u:userC:rx /secret-files

最初の行は、将来 /secret-files の下に作成される新しいファイルまたはディレクトリに適用されるデフォルトの ACL を設定します。 2 番目のファイルは、/secret-files ツリー以下の既存のコンテンツに ACL を適用します。

この機能の詳細については、aclman ページを確認してください。

# man acl


Cent OS
  1. CentOS/RHEL 7 で root 以外のユーザーとして rsyslog を実行する方法

  2. CentOS/RHEL 7 を FIPS 140-2 に準拠させる方法

  3. CentOS / RHEL :スワップ ファイルを追加する方法

  1. Linux OS(CentOS、RHEL、およびFedora)にRPMファイルをインストールする方法

  2. CentOS / RHEL 6 でルート ファイルシステムを縮小する方法

  3. CentOS/RHEL 8 でロケールを追加する方法

  1. RHEL 8 /CentOS8のグループにユーザーを追加する方法

  2. RHEL 8 / CentOS8Linuxにdebファイルをインストールする方法

  3. RHEL 8 / CentOS8Linuxにbinファイルをインストールする方法