次のように入力すると:
ls -l file.txt
そのファイルの権限は「456」に相当することがわかります。
- 4 = 所有者 (r--)
- 5 = グループ (rx)
- 6 = その他 (rw-)
権利はどれですか根この場合は777ですか?
ルートの権限が所有者の権限よりも少なくなるように権限を変更することはできますか?
答え1
確認しますこのページをファイルの権限について詳しく説明します。
しかし、あなたの質問に直接答えると、いいえです。
スーパーユーザー「root」は、システム上の任意のファイルにアクセスできます。
たとえば、あなたの例では、ファイルの所有者が でbob
、グループの所有者も だった場合bob
、次のような表示になります。
-r--r-xrw-. 1 bob bob 8 Jan 29 18:39 test.file
3 番目のビット グループ (rw) は、root もothers
グループの一部であるため、root にも適用されます。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éphane Chazelas の主張をテストします。
#!/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 がすでに言っているので、私はそれを言い直すのではなく引用するだけです:
注: 実行ビットは存在がチェックされますが、ルートに適用可能かどうかはチェックされません。
答え2
ルートは設計上、システム上のすべてのファイルにフルアクセスできます。誤って削除されないようにファイルを保護したい場合は、
chattr +i file
これにより、GNU/Linux に不変フラグが設定されます。-i
の代わりにを使用してこれを削除できます+i
。
FreeBSDでは、
chflags schg file
noschg
元に戻すには を代入しますschg
。
ファイルをルートから見えないように保護したい場合は、ファイルを別のシステムに保存するか、最後の手段として暗号化を使用する必要があります。
答え3
ルートの権限が所有者の権限よりも少なくなるように権限を変更することはできますか?
確かに簡単です。passwd ファイルを変更して、root の uid がゼロにならないようにするだけです。ただし、これは悪い考えなのでやめてください。
この質問をしたのはあなたが初めてではありません。また、その中の何人かは機能というアイデアを思いつきましたが、それについては後で説明します。まず、権限システムの仕組みを理解することから始めましょう。
まず、アクセス チェックを行うコンピューターの部分は、ユーザーの名前は認識しません。ユーザーを番号で認識します。この番号は、uid またはユーザー識別子と呼ばれます。同様に、ユーザーが所属するグループの名前は認識せず、gid のみを認識します。uid と名前のマッピングは passwd ファイルにあり、gid は groups ファイルでマッピングされます。
ファイルを開こうとすると、次の 4 つのチェックが行われます。チェックをスキップする権限があるか、ユーザーとして許可されているか、グループのメンバーとして許可されているか、他のユーザーとして許可されているかです。ここでは、ネーム サービス スイッチ、アクセス制御リスト、読み取り書き込み実行などのいくつかの項目を省略していますが、皆さんが興味を持っているのは最初のテストです。
場合によっては、ファイル権限テストをスキップできます。なぜですか? そして (非常に重要) いつですか? 時々、誰にでも実行してほしくなく、ファイル権限モデルにあまり適合しない操作を実行する必要があることがあります。低いポートでネットワーク接続を開く、パーティションをマウントする、権限チェックをスキップするなど、さまざまな操作があります。現在、これらの操作は機能として知られています。昔は、UID0 にこれらすべてが含まれていて、それについてできることはありませんでした。現在では、他のユーザーに機能を与えたり、削除したりできますが、デフォルトは古い動作です。
ルートを制限する他の方法は selinux のようなものを使用することですが、これはまた別の問題です。
答え4
この場合のルート権限はどれですか? 777 ですか?
はい。
すでに述べたように、読み取りおよび書き込み権限は root には適用されません。ただし、実行権限は依然として存在がチェックされるため、実行フラグが設定されていない場合、root はファイルを実行できません。グループにフラグが設定されているため、この場合は当てはまりませんx
。
また、書き込み権限が付与されているかどうかに関係なく、読み取り専用ファイルシステムに保存されているファイルへの書き込みアクセスは、root または他のユーザーに対して拒否されることにも注意してください。
ファイルが NFS などのリモートにマウントされたディレクトリに保存されている場合、ルートの権限は所有者よりも低くなる可能性があります。
最後に、シンボリック リンクのアクセス許可は本質的に無意味であることに注意してください。