「root」ユーザーのファイル許可はどのように機能しますか?


28

次のファイルがあります。

---------- 1 Steve Steve 341 2017-12-21 01:51 myFile.txt

rootターミナルでユーザーを切り替えましたが、次の動作に気付きました。

  • このファイルを読み取って書き込むことができます。

  • このファイルを実行できません。

  • xファイルのユーザー権限(---x------)またはグループ権限(------x---)または他の権限(---------x)にビットを設定すると、このファイルを実行できます。

誰かが私に説明したり、rootユーザーがファイルとディレクトリを扱っているときに適用されるすべてのルールを説明するチュートリアルを教えてくれますか?

回答:


38

ファイルやディレクトリへの特権アクセスは、実際に存在するかどうかではなく、機能によって実際に決定されますroot。実際にrootは、通常はすべての可能な機能を備えていますが、それらのすべて/多くがドロップされたり、他のユーザー(プロセス)に与えられたりする可能性があります。

簡単に説明すると、アクセス制御チェックが特権プロセスでどのように機能するかについてはすでに説明しました。さまざまな機能が実際にどのように影響するかを次に示します。

ここでの主な機能はCAP_DAC_OVERRIDE、「ファイルの読み取り、書き込み、および許可チェックの実行をバイパスする」ことができるプロセスです。これには、ファイルの読み取りと書き込み、およびディレクトリの読み取り、書き込み、アクセスが含まれます。

実際には、実行可能としてマークされていない実行ファイルには適用されません。アクセスがファイルをチェックする前の()のコメントgeneric_permissionfs/namei.cは、

読み取り/書き込みDACは常にオーバーライド可能です。少なくとも1つのexecビットが設定されている場合、実行可能DACはオーバーライド可能です。

そして、コードはx、ファイルを実行しようとしている場合、少なくとも1 ビットが設定されていることをチェックします。偶然にランダムなデータファイルを実行してエラーや奇妙な結果を得るのを防ぐための便利な機能だと思います。

とにかく、アクセス許可をオーバーライドできる場合は、実行可能コピーを作成して実行するだけで済みます。それはプロセスの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およびその他のセキュリティモジュール
  • chattrext2 / ext3 / ext4の不変フラグ+iと追加+aフラグのみ。両方ともルートを停止し、ファイル名の変更なども防止します。
  • サーバーが独自のアクセス制御を行うことができるネットワークファイルシステム。たとえばroot_squash、NFSでrootをnobodyにマップします。
  • FUSE、私は何でもできると思います
  • 読み取り専用マウント
  • 読み取り専用デバイス

ソースファイルのコメントがcapabilities(7)マニュアルページに反映されていないように思われるのは驚くべきことです。バグレポートを提出することを検討してください。
トビーSpeight

@ilkkachu示されているように、(ほぼ)すべてのファイルに対するアクセス許可をroot持ちrw-xアクセス許可を取得するxには、ファイルのユーザー/グループ/その他のアクセス許可のいずれかにビットを設定する必要があります。しかし、どのようなディレクトリについては、ないroot持つrwx任意のディレクトリのパーミッション(ディレクトリは全く権限を持っていない場合でもを(----------))?
ジョセフ

@Josephでは、CAP_DAC_OVERRIDEすべてのディレクトリのアクセス許可を上書きできるため、ディレクトリの読み取り、書き込み、アクセス(つまり、コンテンツの一覧表示、ファイルの作成とリンク解除)を行うことができます。execビットについて私が引用したコメントは、ファイルのコンテキスト内にあります(のみ)。
ilkkachu

11

これは、デフォルトのアクセス許可に気付いたとおりです。

  • 読み取りと書き込み:
    デフォルトでは、ルートユーザーはシステム内の任意のファイルにアクセスできます。ここで説明するような属性を変更することで、このアクセス権を削除できます:chattr。これは機能にリンクされます。

  • 実行:
    少なくとも1つの実行ビットが設定されていない限り、ルートユーザーには実行権限がありません。


ルートが書き込みまたは削除できないファイルを持つことは可能です。したがって、「ルートユーザーはシステム内の任意のファイルにアクセスできます。」間違っています。
ルーカスBoersma

あなたは読み取り専用のファイルシステムのような意味ですか?または別のケースがありますか?
ケビンルメール

1
私はこれらのようなケースについて話している:書き込み不可能なファイル undeleteableファイル
ルーカス・Boersma

5

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)


2

実行モードは、他のモードとは少し異なります。

読み取りおよび書き込み権限は、セキュリティポリシーを実施するために使用されます。のrootユーザーはこのアカウントの別の名前は「スーパー」である理由であるセキュリティ制限(そこ不変のファイルのようないくつかの例外は、であり、能力などの現代的な機能は、このよりきめ細かいを行っている)から、一般的に免疫です。

実行許可は、ファイルが意図されているかどうかを区別する、より助言的なモードです実行可能でをした単なるデータである。このため、rootユーザーもそれに従います。データファイルを実行しても意味がありません。実行許可が設定されていない場合、rootはファイルを実行できません。それらのいずれかが設定されている場合、彼はできます。もちろん、rootにはファイルのパーミッションを変更するパーミッションもあるため、アカウントは必要に応じてファイルを実行可能にすることができます(ファイルシステムが読み取り専用でない場合)。

ところで、スクリプトはこれで興味深いケースです。スクリプトは、関連するインタープリターのデータファイルです。スクリプトに#!行がある場合は、プログラムとして実行できます。shebangで指定されたインタープリターは、スクリプトファイル名を引数として実行されます。ただし、これは実行許可が設定されている場合にのみ行われます。一方、インタープリターを直接実行することもできます(例:)/bin/bash scriptname。通訳者はファイルを読むことができるかどうかだけを気にし、実行許可をチェックしません。


1

理論的に説明しましょう。

rootユーザーはオペレーティングシステムの王様です。

ファイルまたはディレクトリにXのような実行権限があり、他に何もスティーブユーザーのようなものがファイルを所有していない場合、rootはファイルを実行することもできます。

Linuxのルートは何でもできるので、ルートに制限はないことを常に覚えておいてください。


何もない。たとえば、ファイルに不変の属性がある場合、rootでさえ変更できません(明示的にその属性を削除しない限り)。
ルスラン

@Ruslanはい、しかし彼はあまりにも例外的なケースなので、私は彼を基本として説明します。デフォルトではこの種の属性は発生しません。
ハッサンソハイル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.