web-dev-qa-db-ja.com

4桁の8進数のUnixファイル許可表記の最初の数字は何ですか?

3桁:

644
ugo (user group other)

4桁:

0644
?ugo (??? user group other)

4桁の8進数のUnixファイル許可表記の最初の8進数は何ですか?

41

man chmod

数値モードは、1から4の8進数(0〜7)で、値4、2、および1のビットを合計して得られます。省略された数字はすべて先行ゼロと見なされます。 1桁目は、セットユーザーID(4)とセットグループID(2)およびスティッキー(1)属性を選択します。

「ユーザーIDの設定」、「グループIDの設定」、「スティッキー」とは何ですか。

setuid/setgid

setuidとsetgid(「実行時にユーザーIDを設定する」と「実行時にグループIDを設定する」の略)は、ユーザーが実行可能ファイルの所有者またはグループの権限で実行可能ファイルを実行できるようにするUnixアクセス権フラグです。これらは、コンピューターシステムのユーザーが特定のタスクを実行するために一時的に昇格した特権でプログラムを実行できるようにするためによく使用されます。想定されるユーザーIDまたはグループIDの特権は常に昇格されるわけではありませんが、少なくともそれらは特定のものです。

また、setuid/setgidをディレクトリに適用すると、ディレクトリに作成された新しいファイルは、親ディレクトリのuidまたはgidをそれぞれ継承します。この動作は、UNIXの種類によって異なります。たとえば、linuxはsetgidを尊重しますが、ディレクトリのsetuidを無視します。

そして sticky

今日のスティッキービットの最も一般的な用途はディレクトリです。スティッキービットが設定されている場合、アイテムの所有者、ディレクトリの所有者、またはスーパーユーザーのみがファイルの名前を変更または削除できます。スティッキービットが設定されていない場合、ディレクトリの書き込みおよび実行権限を持つユーザーは、所有者に関係なく、含まれているファイルの名前を変更または削除できます。通常、これは/ tmpディレクトリに設定され、通常のユーザーが他のユーザーのファイルを削除または移動できないようにします。

49
Handyman5

Setgidには、私が日常的に使用している非常に重要な機能がもう1つありますが、Handyman5の抜粋には含まれていません(引用は上記の同じページから引用しています)。

Setuidフラグとsetgidフラグは、ディレクトリに設定された場合、まったく異なる意味を持ちます。

ディレクトリ(chmod g + s)にsetgid権限を設定すると、その中に作成された新しいファイルとサブディレクトリは、ファイルを作成したユーザーのプライマリグループIDではなく、グループIDを継承します(所有者IDは影響を受けず、グループID)。新しく作成されたサブディレクトリは、setgidビットを継承します。

したがって、これにより、グループの共有ワークスペースが有効になり、新しいファイルまたはディレクトリを作成する前にグループメンバーが現在のグループを明示的に変更する必要がなくなります。ディレクトリにsetgid権限を設定しても、setgidビットが設定された後に作成された新しいファイルとサブディレクトリのグループIDにのみ影響し、既存のエンティティには適用されないことに注意してください。既存のサブディレクトリにsetgidビットを設定するには、次のようなコマンドを使用して手動で行う必要があります。

[root@foo]# find /path/to/directory -type d -exec chmod g+s {} \;

chmod g+sは、8進値の前に2を追加して、775の権限を持つディレクトリを作成することを意味します(drwxrwxr-x)を2775(drwxrwsr-x)。

12
Jay Allen

他の回答に加えて、先頭の0は、数値が8進数であることを伝えるために使用される規則です。ファイルのアクセス許可は常に8進数で表現されるため、ここでは必要ありませんが、これが存在する理由の1つとなる可能性があります。

4
jlliagre

Linux/Unixが使いやすい 権限計算機 は、ファイルまたはディレクトリの権限を把握するのに役立ちます。

2
vegasbrianc