モード値0777と777に違いはありますか


回答:


76

それらをchmod(コマンドラインプログラム)に渡す場合、違いはありません。しかし、Cプログラムなどで0777は、8進数(3つの1ビットの3セット、意図したとおりです)777が10進数であり、まったく異なるビットパターンです。(chmod数値引数は8進数として解釈されるため、先行ゼロは不要です。)

0777(8進数)== 2進数0b 111 111 111    ==許可rwxrwxrwx   (== 10進数511

777(10進数)==バイナリ0b 1 100 001 001==許可sr----x--x(== 8進数1411


14
明確にするために、chmodコマンドに渡す値は常に8進数として解釈されます。を使用chmod 888するとエラーが発生します。
mattdm

ただし、各桁は8進数であり、整数そのものではありません。
ドレイククラリス

1
8進数の文字列がある進数。chmodプレフィックスに関係なく、数値引数を8進数として解釈します。(しかし、実際には数字自体には機能がありません。数字、またはビットだけです。)
アレクシス

したがって、Cプログラムでは、を渡したい場合は1777、を記述する必要があります01777か?
ファヒームミタ

1
@Faheem、そうです。8 進数はC 1777で記述され01777ています(または1023、10進数で同じ数字を記述できます。ただし、しないでください:
アレクシス

4

最初のビットはスティッキービットに使用されますhttp://en.wikipedia.org/wiki/Sticky_bit

4桁を使用して許可を設定すると、最初のビットがこのビットを設定または削除します。


3
スティッキービットは最初のビットではなく、3番目のビットです。最初はsuidビットで、2番目はsgidビットです。3桁を使用してアクセス許可を設定した場合、最初の1桁の欠落もこれらの3ビットに影響します(削除します)。
jlliagre

あなたが正しいです。エルゴ、「
アレクシス

2
@jlliagre chmodのマニュアルページから-「省略された数字は先行ゼロと見なされます。」また、4の最初の桁があるスティッキービット。もう一度manページから:「最初の数字は、ユーザーIDセット(4)とグループID(2)および制限付き削除またはスティッキー(1)属性のセットを選択します。2番目の数字は、ファイルを所有するユーザーの許可を選択します: 4)、書き込み(2)、実行(1).3番目は同じ値を持つファイルのグループ内の他のユーザーのアクセス許可を選択し、4番目は同じ値を持つファイルのグループ内の他のユーザーのアクセス許可を選択します。
ファヒームミタ

1
@FaheemMitha、省略された数字は先行ゼロと想定されるため、前述のビット削除されます。また、あなたはビットと数字を混同しているようです、私は最初の数字ではなく最初のビットについてコメントしていました。
jlliagre

1
@jlliagreわかりました、結構です。
Faheem Mitha

1

興味深い答えは次のとおりです。

  • そこに違いはありません0700し、700他の回答で説明したように、
  • しかし、そこの違い007000700(ディレクトリ用)は、

少なくとも、LinuxのデフォルトであるGNU coreutilsのchmodバージョンの場合です。

この例を参照してください。

$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir                   # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir                  # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul  8 09:27 mydir

これは、ディレクトリのsetuid / setgidビットを誤って削除しないようにするためです。詳細については、chmodのドキュメントを参照してください。


-1

Linuxシステムでは、2種類のアクセス許可が利用可能です。

  1. ファイル許可
  2. 特別許可

ファイルのアクセス許可では、ファイルとフォルダーのアクセス許可を設定します。

許可は次のとおりです。

  • read(4)
  • 書き込み(2)
  • execute(1)

特別な許可では、次の3種類の許可があります。

  • SUID(4)
  • SGID(2)
  • スティッキービット(1)

あなたの質問では、何が違いであるかを尋ねます。そのため、(0)ゼロの値を示すものchmod 777 and 0777no any octal valueあるため、違いはありません。

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