それは、ファイルの実行可能ファイルを作ることになるとの違いは何であるchmod 755
とchmod +x
、私はその使用するには?私はこれまでのところだけ使用しているchmod +x
と私はちょうど何かを読んで、それを使用chmod 755
して、私はそれを使用するように優れていたかどうかを言うことができませんでしたchmod 755
かchmod +x
。
それは、ファイルの実行可能ファイルを作ることになるとの違いは何であるchmod 755
とchmod +x
、私はその使用するには?私はこれまでのところだけ使用しているchmod +x
と私はちょうど何かを読んで、それを使用chmod 755
して、私はそれを使用するように優れていたかどうかを言うことができませんでしたchmod 755
かchmod +x
。
回答:
それらを比較できるようにするには、同じ観点からそれらを見る必要があります。
chmod +x
等しいchmod ugo+x
(umask
値に基づく)chmod 755
等しい chmod u=rwx,go=rx
まず、次のことを知っておく必要があります。
+
この許可を、ファイルが既に持っている他の許可に追加することを意味します。=
は、すべての権限を無視することを意味し、私が指定したとおりに設定します。
読み取り= 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
はもう何の効果もありません。u+x
所有者に実行可能ビットのみを追加するために使用することもできます。755
あなたを使用して指定しています:
u=rwx
(所有者は4 + 2 + 1)g=rx
(グループの場合は4 + 1)o=rx
(その他の場合は4 + 1)次のchmod 755
ようなものです:chmod u=rwx,g=rx,o=rx
またはchmod u=rwx,go=rx
。
chmod 755
これらのビットを設定して使用すると、すべてのsuid / sgid / stickyビット(そこにあった可能性があります)もクリアします(例:NEVER chmod 755 /tmp
)。755は常にビットの第1オクタルセットも0に設定されている、すなわち、0755のように考えなければならない
それを見る別の方法(私が理解しやすいと思う)はchmod +x
、許可を相対的にchmod 755
設定するのに対し、絶対に設定することです。
chmod 755
ファイルで実行された後、その許可は 755またはになりrwxr-xr-x
ます。
chmod +x
既存の許可を取得し、ファイルに実行許可を追加します。
詳細については、chmodの manページを確認することをお勧めします。権限を変更するという同じタスクを実行するために、chmodコマンドで使用可能な2つの異なる操作モードが表示されています。
オクタルモードは数字を使用しており、ファイルのアクセス権全体を設定します。文字モードは文字を使用しており、通常は既存の権限を変更するためにのみ使用されます。
chmod 755
所有者、グループ、およびワールドのすべてに実行可能権限が追加されるように権限rwxr-xr-x
をchmod +x
調整しながら設定し
ます。rwxr--r--
それのデフォルトのファイル許可を仮定すると、755の同じ許可にそれを調整するでしょうrwxr-xr-x
。
違いは、設定される権限と、設定に使用するモードです。
chmod +x
所有者、所有者のグループ、および他のユーザー-あなたはすべての実行可能ビットを設定します。これは、シンボリックモードと呼ばれます。引用するにはman chmod
:
演算子+は、選択したファイルモードビットを各ファイルの既存のファイルモードビットに追加します。-それらを削除します。および=は、ディレクトリの言及されていないユーザーおよびグループIDの設定ビットが影響を受けないことを除いて、それらを追加し、言及されていないビットを削除します。
ではchmod 755
あなたは8進数を使用している、のバイナリ表現は、権限の特定のビットを設定するために使用されます。最初(左)の3ビットは所有者のアクセス許可に対応し、中間の3ビットはグループのアクセス許可に対応し、最後(右)のビットは他のすべてのユーザーのアクセス許可に対応します。ビットの順序は常に同じです。read,write,execute
つまりrwx
、順序が同じであるため、バイナリ表現に変換された個々の数値は、数値内の対応する位置ビットが1である許可ビットを設定し、0のビットを設定解除します。具体的には:
7
は2進数で111であるため、所有者の読み取り、書き込み、実行のすべてのビットを設定しています。rwx
設定されています。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
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>形式を使用し、デルタだけでなくすべてのビットを指定する必要があることを認識してください。
これらの美しい答えに加えて、小さいながらもおそらく重要な違いに言及したいと思います。コマンドchmod 755 file
はと同等chmod 0755 file
です。SETUIDビットまたはSETGIDビットが設定されているファイルでこのコマンドを実行すると、SETUID / SETGIDビットが削除されます。chmod +x file
SETUID / 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テスト
chmod +x
他の権限を変更せずにすべての実行可能フラグを設定します。chmod 755
rwxr-xr-xを設定します