web-dev-qa-db-ja.com

ファイルのルート権限は何ですか?

入力すると:

ls -l file.txt

そのファイルの権利は「456」と同等であることがわかります。

  • 4 =所有者(r--)
  • 5 =グループ(r-x)
  • 6 =その他(rw-)

この場合、rootの権利はどれですか? 777はありますか?

Rootが所有者よりも少ない権限を持つように権限を変更できますか?

5

私はチェックします このページアウト 。ファイルのアクセス許可について詳しく説明します。

しかし、質問に直接答えるには、いいえ:

スーパーユーザー「root」は、システム上の任意のファイルにアクセスすることができます。

たとえば、ファイルの所有者がbobで、グループの所有者もbobの場合、次のようになります。

-r--r-xrw-. 1 bob bob 8 Jan 29 18:39 test.file

(rw)がルートに適用される3番目のビットグループは、ルートがothersグループの一部であるためです。そのファイルをrootとして編集しようとすると、編集に問題がないことがわかります。

しかし、ファイルがrootによって所有されている場合、理論をさらにテストするには:

-r--r-xrw-. 1 root root 8 Jan 29 18:40 test.file

そして、あなたは再びファイルを編集しに行きました、あなたはまだそれを編集する問題がないことに気付くでしょう。

最後に、極端な場合:

chmod 000 test.file
ls -lh test.file
----------. 1 root root 8 Jan 29 18:41 test.file

そして、もう一度(少なくともvi/vimで)表示されるファイル"test.file" [readonly]を編集しました。ただし、ファイルを編集して:wq!で強制保存することはできます。


シェルスクリプトファイルを使用した@StéphaneChazelasクレームのテスト:

#!/bin/sh

echo "I'm alive! Thanks root!"


[root ~]# ls -lh test.sh
----------. 1 atgadmin atgadmin 31 Jan 30 10:59 test.sh

[root ~]# ./test.sh
-bash: ./test.sh: Permission denied

[root ~]# sh test.sh
I'm alive! Thanks root!

@Shadurはすでにそれを言ったので、それを言い換えるのではなく引用するだけにします:

注:実行ビットは、ルートに適用可能かどうかではなく、存在するかどうかがチェックされます。

8
devnull

ルートは、設計上、システム上のすべてのファイルに完全にアクセスできます。ファイルを誤って削除しないようにしたい場合は、

chattr +i file

これにより、GNU/Linuxで不変フラグが設定されます。 -iの代わりに+iを使用して削除できます。

FreeBSDでは、

chflags schg file

元に戻すには、noschgschgに置き換えます。

Rootから見えないようにファイルを保護する場合は、ファイルを別のシステムに保存するか、最後の手段として暗号化を使用する必要があります。

参照: https://superuser.com/questions/104015/removing-write-permission-does-not-prevent-root-from-writing-to-the-file

7
rmelcer

Rootが所有者よりも少ない権限を持つように権限を変更できますか?

Shure、それは簡単です。rootのuidがゼロにならないようにpasswdファイルを変更するだけです。一方、それは悪い考えです。

あなたはこの質問をする最初の人ではありません、そしてそれらの人々の何人かは能力の考えを思いつきました、しかし私達は少しそれを理解するでしょう、最初に許可システムの働きを理解することから始めましょう。

アクセスチェックを実行するコンピューターの一部を起動するには、名前がわからず、番号でユーザーを認識します。その番号はuidまたはユーザー識別子と呼ばれます。同様に、メンバーであるグループの名前はわかりません。gidだけがわかります。 uidと名前のマッピングはpasswdファイルにあり、gidはgroupsファイルにマッピングされています。

ここで、ファイルを開きたい場合、4つのチェックが行われます。チェックをスキップする権限がありますか、あなたは許可されたユーザーとして、あなたは許可されたグループのメンバーとして、そして他の誰かとしてあなたはに許可された。ここでは、ネームサービススイッチやアクセス制御リスト、読み取りと書き込みの実行などの一部を省略していますが、最初に行うテストが興味のある部分です。

場合によっては、ファイル許可テストをスキップすることが許可されます。どうして?そして(非常に重要)いつ?ここで、誰かにやらせたくなく、ファイル許可モデルにうまく適合しないようにする必要があることがいくつかあります。低いポートでネットワーク接続を開く、パーティションをマウントする、権限チェックをスキップするなど、あらゆる種類のことを行います。最近では、これらの機能は機能として知られています。昔はUID0にこれらすべてがあり、それについてあなたができることは何もありませんでした。最近では他のユーザーに機能を与えたり、それらをドロップしたりできますが、デフォルトは古い動作です。

ルートを制限するもう1つの方法は、selinuxのようなものですが、これは別の方法です。

3
hildred

上記の回答では、rootがすべてに完全にアクセスできると想定しています。これはほとんどのUnixバリアントに当てはまりますが、最近の(90年代後半以降、カーネル2.2)Linuxカーネルには部分的にしか当てはまりません。最近のLinuxでは、昇格された特権はケーパビリティモデルによって制御されます。デフォルトでは、カーネルは、プログラムがUID 0として実行されている場合、すべての機能をプログラムに許可します。これらの機能の1つはDAC_OVERRIDEで、随意アクセス制御(別名、ファイル許可)をオーバーライドします。これは、2.6.26以降のシステム(したがって、最新の非組み込みLinuxシステム)に設定できるsecurebitsフラグがあり、設定できるアプリケーションに提供されている機能の一部またはすべてを無効にするため、これは重要です。ルートに切り替えるか、ルートとして起動します。 UID 0で何ができるかを知るには、技術的には、UID 0として実行されているプロセスが継承できる機能を知る必要があります。

したがって、通常 rootはいつでも何でもできます。しかし、Linuxで「rootとして」行う必要のあるプログラムを作成している場合、本当に機能モデルとそれに関連付けられている関数に慣れる必要があります。ファイルを開いたり、生のソケットを開いたりするためだけにsuid rootを実行する必要があるものを書く多くのベンダーのようにはなりません。プログラムに必要な機能を定義し、それらについてテストします。 man capabilities

2
dannysauer

この場合、rootの権利はどれですか? 777はありますか?

はい。

すでに述べたように、読み取りおよび書き込み権限はrootには適用されません。ただし、実行許可の有無は引き続きチェックされるため、実行フラグが設定されていない場合、rootはファイルを実行できません。グループにはxフラグがあるため、これはここでは当てはまりません。

また、書き込み権限が付与されているかどうかに関係なく、読み取り専用ファイルシステムに格納されているファイルへの書き込みアクセスは、rootまたは誰でも拒否されます。

NFSのようにリモートでマウントされたディレクトリにファイルが保存されている場合、ルートは所有者よりも権限が少ない可能性があります。

最後に、シンボリックリンクのアクセス許可は基本的に意味がないことに注意してください。

1
jlliagre