ファイルとディレクトリへの特権アクセスは、実際には root
であるだけでなく、機能によって決定されます か否か。実際には、root
通常、可能なすべての機能を備えていますが、それらのすべて/多くが削除されたり、一部が他のユーザー (プロセス) に提供されたりする状況があります。
簡単に言えば、アクセス制御チェックが特権プロセスに対してどのように機能するかについては既に説明しました。さまざまな機能が実際にどのように影響するかは次のとおりです。
ここでの主な機能は CAP_DAC_OVERRIDE
です 、それを持つプロセスは「ファイルの読み取り、書き込み、および実行権限チェックをバイパスする」ことができます。これには、ファイルの読み取りと書き込み、およびディレクトリの読み取り、書き込み、およびアクセスが含まれます。
実際には、実行可能としてマークされていない実行中のファイルには適用されません。 generic_permission
のコメント (fs/namei.c
)、ファイルのアクセス チェックの前に、
読み取り/書き込み DAC は常にオーバーライド可能です。少なくとも 1 つの実行ビットが設定されている場合、実行可能 DAC はオーバーライド可能です。
コードは少なくとも 1 つの x
があることを確認します。 ファイルを実行しようとしている場合はビットが設定されます。これは、ランダムなデータ ファイルを誤って実行してエラーや奇妙な結果が得られるのを防ぐための単なる便利な機能だと思います。
とにかく、アクセス許可を上書きできる場合は、実行可能なコピーを作成して実行するだけです。 (プロセスの setuid ファイルの理論上は違いが生じるかもしれませんが、ファイルのパーミッションをオーバーライドすることができました (CAP_DAC_OVERRIDE
)、しかし他の関連する機能はありませんでした (CAP_FSETID
/CAP_FOWNER
/CAP_SETUID
)。しかし CAP_DAC_OVERRIDE
を持つ /etc/shadow
を編集できます そのようなものなので、とにかく完全なルートアクセス権を持つこととほぼ同じです.)
CAP_DAC_READ_SEARCH
もあります 任意のファイルの読み取りと任意のディレクトリへのアクセスを許可するが、それらの実行または書き込みは許可しない機能。と CAP_FOWNER
これにより、許可ビットやファイル グループの変更など、通常はファイル所有者だけに予約されていることをプロセスが実行できるようになります。
ディレクトリのスティッキー ビットのオーバーライドについては、CAP_FOWNER
でのみ言及されています。 、だから CAP_DAC_OVERRIDE
のようです それを無視するには十分ではありません。 (それはあなたに書き込み許可を与えますが、通常スティッキーディレクトリではとにかくそれを持っており、+t
制限します。)
(特別なデバイスはここでは「ファイル」としてカウントされると思います。少なくとも generic_permission()
にはディレクトリの型チェックしかありませんが、それ以外はチェックしませんでした。)
もちろん、機能を使用してもファイルの変更に役立たない状況はまだあります:
/proc
のいくつかのファイル と/sys
、実際には実際のファイルではないため- ルートを制限する可能性のある SELinux およびその他のセキュリティ モジュール
chattr
不変+i
+a
のみを追加します ext2/ext3/ext4 のフラグ。どちらもルートさえ停止し、ファイルの名前変更なども防ぎます。- サーバーが独自のアクセス制御を実行できるネットワーク ファイル システム。
root_squash
NFS では root を nobody にマップします - 何でもできるFUSE
- 読み取り専用マウント
- 読み取り専用デバイス
これは、デフォルトのアクセス許可についてお気づきのとおりです:
-
読み書き:
デフォルトでは、ルート ユーザーはシステム内の任意のファイルにアクセスできます。このアクセスを削除するには、属性を次のように変更します。説明はこちら:chattr.これは機能にリンクされます。 -
実行:
少なくとも 1 つの実行ビットが設定されていない限り、root ユーザーには実行権限がありません。
myFile.txt
chmod 000 myFile.txt
によって取得されます .
0 no permission
1 execute
2 write
3 execute + write
4 read
5 read + execute
6 read + write
7 all
---------
ユーザー、グループ、その他の権限がないことを意味します。
root ユーザーは無制限 このファイルを変更する機能。読み取り/書き込みが許可されます。このファイルを実行するには、root ユーザーがファイルを実行可能にする必要があります。 (chmod 100、010 または 001)