書き込み許可を削除しても、rootがファイルに書き込むことを妨げません


31

Ubuntuマシン(ext3ファイルシステム)で、ファイルから書き込み権限を削除しても、rootがファイルに書き込みできないわけではないことに気付きました。

これはUNIXファイルのパーミッションの一般的なルールですか?またはUbuntu固有ですか?または、マシンの構成が間違っていますか?

#タッチabc
#chmod ugo-w abc
#python
Python 2.6.4(r264:75706、2009年12月7日、18:45:15) 
[GCC 4.4.1] linux2で
詳細については、「help」、「copyright」、「credits」または「license」と入力してください。
>>> open( 'abc'、 'w')。write( 'AAA \ n')
>>> 
#猫abc
AAA

通常のユーザーアカウントからこれを行うと、ファイルへの書き込みは(予想どおり)失敗します。

  1. これは正常な動作ですか?

  2. rootが誤ってファイルに書き込むのを防ぐ方法はありますか?(できればAppArmorなどではなく、通常のファイルシステムメカニズムを使用してください。)

私が最も確実に理解していないことについて教えてください。

注:ルートはシステム完全に制御し、たとえば、任意のファイルのアクセス許可を変更できることを理解しています。私の質問は、現在設定されている許可がrootとして実行されているコードに適用されるかどうかです。その考えは、rootユーザーが自分が誤ってファイルに書き込むのを防ぐことです。

注:私も理解していることを1 rootとしてログインすべきではない通常の操作のために。この動作に気付いたばかりで、それについて尋ねています。

回答:


46

1)これは正常な動作です。rootは常にすべてのファイルに対してrwアクセスを持ちます。

2)を使用して、ルートからでもファイルを保護できます(意図的なアクションではなく、偶然)

chattr +i filename.ext

それは「属性の変更が不変を追加する」ことです。保護を解除するには:

chattr -i filename.ext

で見てman chattrより多くの情報のため


@brice:どうもありがとう。私の質問に直接対処します。chattrについて知りませんでした。
laramichaels

私のシステムを実行するには、rootアクセスが必要なようchattrです。そのような属性を設定するユーザーモードの手段はありますか?
いんちきキホーテ

1
...これは「rootファイルを削除できなくてもファイルを保護することができます」という質問に対する素晴らしい回答ですが、!
いんちきキホーテ

4
より正確には(とにかくLinuxの場合)、rootにはCAP_DAC_OVERRIDEACLと権限を無視できる機能があります。
-grawity

1
参考までに、OS Xでこれに相当するのはsudo chflags <s|u>chg <file>、それぞれシステムまたはユーザーに対して不変にすること、およびシステムまたはユーザーに対してそれぞれsudo chflags no<s|u>chg <file>不変フラグを設定解除することです。
GDP2

3
  1. はい、これは正常です。 根は神です。

  2. はい、rootがファイルを上書きしないようにする方法があります。

    • 不変ビットをchattr+isets、-iunsets)で設定します。ルートアクセスが必要で、ext2 / ext3(おそらくext4も)でのみ動作しますが、それ以外は実用的です。
    • ルートとしてアプリを実行しないでください。ルート権限なし、ファイルの上書きなし。sudoシステム機能にアクセスするために使用します。
    • ファイルシステムをアンマウントします。マウントされたfs、上書きファイルはありません。[*]
    • コンピューターの電源を切ります。電気なし、ファイルの上書きなし。

これらの方法は、論理的に#1から続きます。ご覧のように、最後の2つの方法は一般に有用ではありません。同様に、ネットワークのプラグを抜いてWindowsをウイルスから保護することは一般に有用ではありません。これがルートが危険な理由です。[+]

[*]もちろん、「誤って」ブロックデバイスに直接書き込む可能性を割り引いています。はい、ルートはそれを行うことができます。はい、あなたはそれを防ぐことができます:デバイスを切断します。

[+]これは、これらのBOfH神話の由来でもあります。それらはすべて神話ではありません。


@〜quack:briceの方法は、リストした3つよりもはるかに実用的です。:)
laramichaels

@〜quack:私の質問は、rootとしてコマンドを実行することの問題を理解していることを明らかにしました。
-laramichaels

3

Linuxカーネルの「機能」を使用して、ルートユーザーのファイルアクセスを制限することもできます:http : //www.securityfocus.com/infocus/1400

また、SE-Linuxまたはその他のカーネルパッチを使用して、一部のファイルをルートに対しても不変にする可能性があります。


0

rootがスーパーユーザーであり、彼が何でもできる限り、あなたがrootであっても、彼に許可を取り消すことはできないと思います。操作(ファイルへの書き込み、アプリケーションのオープンなど)を実行したり、実行したりできないようにするのは、ルートの意志であると想定されています。

そのため、ルートアカウントの不正使用を防ぐために、ルートアカウントのみを非アクティブ化する可能性があります。

よろしく

[自己への注意:あなたがたは謙虚になります...たぶんあなたがたは間違っています]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.