「chmod + x」と「chmod 755」の違いは何ですか?


62

それは、ファイルの実行可能ファイルを作ることになるとの違いは何であるchmod 755chmod +x、私はその使用するには?私はこれまでのところだけ使用しているchmod +xと私はちょうど何かを読んで、それを使用chmod 755して、私はそれを使用するように優れていたかどうかを言うことができませんでしたchmod 755chmod +x


9
chmod +x他の権限を変更せずにすべての実行可能フラグを設定します。chmod 755rwxr-xr-xを設定します
ravery


5
@ravery:こんにちは!コメントのセクションを見つけました。これは、批評と説明のリクエスト専用のエリアです。回答/解決策を提供するには、下の「回答」セクションを使用する必要があります(大きな赤い「回答を投稿」ボタンを探します)。お役に立てば幸いです!
モニカとの軽さのレース

回答:


145

短縮版:

それらを比較できるようにするには、同じ観点からそれらを見る必要があります。

  • chmod +x等しいchmod ugo+xumask値に基づく)
  • chmod 755 等しい chmod u=rwx,go=rx

説明:

まず、次のことを知っておく必要があります。

  1. + この許可を、ファイルが既に持っている他の許可に追加することを意味します。
  2. = は、すべての権限を無視することを意味し、私が指定したとおりに設定します。

    • したがって、「読み取り、書き込み、実行、スティッキービット、suid、およびguid」はすべて無視され、指定されたもののみが設定されます。
  3. 読み取り= 4、書き込み= 2、実行= 1

    • 以下に、その背後にあるバイナリロジックを示します(興味がある場合)。

      Symbolic:  r-- -w- --x  |  421
      Binary:    100 010 001  |  -------
      Decimal:    4   2   1   |  000 = 0
                              |  001 = 1
      Symbolic:  rwx r-x r-x  |  010 = 2
      Binary:    111 101 101  |  011 = 3
      Decimal:    7   5   5   |  100 = 4
                 /   /   /    |  101 = 5
      Owner  ---/   /   /     |  110 = 6
      Group  ------/   /      |  111 = 7
      Others ---------/       |  Binary to Octal chart
      

+xあなたを使用すると+、実行可能ビット(x)を所有者、グループ、その他に追加()するように指示されます。

  • ugo+xまたはに等しいu+x,g+x,o+x
  • 所有者、グループ、または他のどれがターゲットであるかを指定しない場合、xそれがすべての場合を考慮します。そして、@ Rinzwindが指摘したように、それはumask値に基づいており、許可されているものにビットを追加しumaskます。以下のようにあなたがターゲットを指定した場合覚えてo+r、その後umaskはもう何の効果もありません。
  • 他のMOD(権限)には影響しません。
  • u+x所有者に実行可能ビットのみを追加するために使用することもできます。

755あなたを使用して指定しています:

  • 7-> u=rwx(所有者は4 + 2 + 1)
  • 5-> g=rx(グループの場合は4 + 1)
  • 5-> o=rx(その他の場合は4 + 1)

次のchmod 755ようなものです:chmod u=rwx,g=rx,o=rxまたはchmod u=rwx,go=rx

ここに画像の説明を入力してください


15
非常に重要な追加:chmod 755これらのビットを設定して使用すると、すべてのsuid / sgid / stickyビット(そこにあった可能性があります)もクリアします(例:NEVER chmod 755 /tmp)。755は常にビットの第1オクタルセットも0に設定されている、すなわち、0755のように考えなければならない
オリヴィエデュラック

1
ほぼ完璧なので、早すぎる+1(私からそのバッジをもらった
:)

@OlivierDulacのおかげで、私はあまり詳細に取得する必要はありませんでしたが、私は答えを更新します
Ravexina

1
許可の仕組みを理解したばかりだと思います、ありがとう!
ファビック


37

chmod +x すべてのユーザーの実行許可を既存の許可に追加します。

chmod 755755ファイルの許可を設定します。

755 所有者に対する完全な許可と、他者に対する読み取りおよび実行の許可を意味します。


7

それを見る別の方法(私が理解しやすいと思う)はchmod +x、許可を相対的にchmod 755設定するのに対し、絶対に設定することです。

chmod 755ファイルで実行された後、その許可 755またはになりrwxr-xr-xます。

chmod +x既存の許可を取得し、ファイルに実行許可を追加します。


6

詳細については、chmodの manページを確認することをお勧めします。権限を変更するという同じタスクを実行するために、chmodコマンドで使用可能な2つの異なる操作モードが表示されています。

オクタルモードは数字を使用しており、ファイルのアクセス権全体を設定します。文字モードは文字を使用しており、通常は既存の権限を変更するためにのみ使用されます。

chmod 755所有者、グループ、およびワールドのすべてに実行可能権限が追加されるように権限rwxr-xr-xchmod +x調整しながら設定し ます。rwxr--r--それのデフォルトのファイル許可を仮定すると、755の同じ許可にそれを調整するでしょうrwxr-xr-x


5

違いは、設定される権限と、設定に使用するモードです。

chmod +x所有者、所有者のグループ、および他のユーザー-あなたはすべての実行可能ビットを設定します。これは、シンボリックモードと呼ばれます。引用するにはman chmod

演算子+は、選択したファイルモードビットを各ファイルの既存のファイルモードビットに追加します。-それらを削除します。および=は、ディレクトリの言及されていないユーザーおよびグループIDの設定ビットが影響を受けないことを除いて、それらを追加し、言及されていないビットを削除します。

ではchmod 755あなたは8進数を使用している、のバイナリ表現は、権限の特定のビットを設定するために使用されます。最初(左)の3ビットは所有者のアクセス許可に対応し、中間の3ビットはグループのアクセス許可に対応し、最後(右)のビットは他のすべてのユーザーのアクセス許可に対応します。ビットの順序は常に同じです。read,write,executeつまりrwx、順序が同じであるため、バイナリ表現に変換された個々の数値は、数値内の対応する位置ビットが1である許可ビットを設定し、0のビットを設定解除します。具体的には:

  • 8進数7は2進数で111であるため、所有者の読み取り、書き込み、実行のすべてのビットを設定しています。rwx設定されています。
  • 8進数5は2進数で101であるため、読み取りと実行を設定しますが、書き込みビットは無効にします。グループと他のユーザーは5であるため、これら2つのカテゴリには同じアクセス許可があります。このようr-xに設定されています。

ここに小さなデモがあります:

    bash-4.3$ touch file1 file2
    bash-4.3$ chmod +x file1
    bash-4.3$ chmod 755 file2
    bash-4.3$ ls -l file1 file2
    -rwxrwxr-x 1 xieerqi xieerqi 0 7月   6 13:54 file1
    -rwxr-xr-x 1 xieerqi xieerqi 0 7月   6 13:54 file2

3

1つの重要な違いは、chmod +はumaskの制限の対象であり、chmod <octal>はそうではないことです。

次の例を考えてみましょう。

$ ls -l foo bar
---------- 1 gowenfawr users 0 Jul  7 16:40 bar
---------- 1 gowenfawr users 0 Jul  7 16:39 foo
$ umask
0022
$ chmod +w bar
$ umask 0002
$ chmod +w foo
$ ls -l foo bar
--w------- 1 gowenfawr users 0 Jul  7 16:40 bar
--w--w---- 1 gowenfawr users 0 Jul  7 16:39 foo
$

そのため、umask設定に適した方法でアクセス許可をデルタ変更する場合は、「+」構文を使用します。ただし、umaskに関係なく絶対に設定する場合は、<octal>形式を使用し、デルタだけでなくすべてのビットを指定する必要があることを認識してください。


1

これらの美しい答えに加えて、小さいながらもおそらく重要な違いに言及したいと思います。コマンドchmod 755 fileはと同等chmod 0755 fileです。SETUIDビットまたはSETGIDビットが設定されているファイルでこのコマンドを実行すると、SETUID / SETGIDビットが削除されます。chmod +x fileSETUID / SETGIDビットは変更されません。これは次の例で確認できます。

〜$タッチテスト
〜$ chmod u + sテスト
〜$ llテスト
-rwSrw-r-- 1ムックムック0 9月14日00:49テスト
〜$ chmod + xテスト
〜$ llテスト
-rwsrwxr-x 1ムックムック0 9月14日00:49テスト
〜$ chmod 755テスト
〜$ llテスト
-rwxr-xr-x 1ムックムック0 9月14日00:49テスト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.