chmod u+x
とjust の違いは何chmod +x
ですか?u+x
スクリプトを実行可能にするために使用するように言っているチュートリアルをたくさん見ました。ただし、を省略u
しても効果はないようです。
chmod u+x
とjust の違いは何chmod +x
ですか?u+x
スクリプトを実行可能にするために使用するように言っているチュートリアルをたくさん見ました。ただし、を省略u
しても効果はないようです。
回答:
のマニュアルページでchmod
説明しています。
つまりchmod u+x somefile
、そのファイルの実行許可の所有者のみが付与されますchmod +x somefile
が、の場合と同じchmod a+x somefile
です。
chmodのマニュアルページには次のように記載されています。
シンボリックモードの形式は
[ugoa...][[+-=][rwxXstugo...]...][,...]
です。複数のシンボリック操作をコンマで区切って指定できます。「ugoa」という文字の組み合わせは、ファイルへのアクセスを変更するユーザーを制御します。ファイルを所有するユーザー(u)、ファイルのグループ内の他のユーザー(g)、ファイルのグループ以外のユーザー(o)、またはすべてのユーザー(a)。これらのいずれも指定されていない場合、「a」が指定された場合と同じ効果がありますが、umaskに設定されているビットは影響を受けません。
chmod +x file
異なりますchmod a+x file
-詳細については、Ravexinaの回答を参照してください。
実行+x
するだけで、[u] ser、[g] roup、[o] thersのすべてのフラグに適用されます。
詳細を入力man chmod
します。
まず、これらの質問と以下のリンクから回答を読むことをお勧めします。
知る必要があるすべての必要な部分を理解するのに役立ちます。
chmod +x
等しいchmod ugo+x
(umask
値に基づく)chmod a+x
等しいchmod ugo+x
(umask
値を考慮せずに)その結果、chmod a+x
すべての人(所有者、グループ、その他)の実行可能ビットを簡単に設定できますか?
ただしchmod +x
、少し注意が必要umask
ですが、値を使用し、その値に基づいてx
許可されているすべてのユーザーに追加します。
だからumask
私の環境の場合0002
:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
x
ユーザー(所有者)、グループ、その他に追加します。この状況(ほとんどのシステムのデフォルトの状況)ではchmod ugo+x
、とまったく同じか同じchmod a+x
か、またはより冗長な形式です。
chmod u+x,g+x,o+x
の接続chmod u+x,g+x,o+x
と出力を見つけられますumask -S
か?
次にumask
、現在のシェルのをに変更しましょう0003
。
$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
ご覧のとおり、所有者とグループのみが実行可能ビットを取得し、他のビットは取得しません。これはchmod +x
、chmod u+x,g+x
またはに等しいことを意味しchmod ug+x
ます。
chmod +w
に設定umask
した後にファイルを実行するとどうなり0003
ますか?
前と同じ、それだけに影響user
し、group
3にも書き込み許可(2)を除去するので、ファイルの。
次のようなものを削除する場合と同じ効果がありますchmod -w
。
$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
chmod u+x
このファイルはユーザーに対して実行可能になります(ユーザーに対してのみ追加されますが、グループ所有者または「その他」によって既に実行可能である場合があります)。
chmod +x
またはchmod a+x
(「すべてプラス実行可能ビット」)ファイルを全員が実行可能にします。
ディレクトリに対してこれを行うと、代わりにディレクトリが検索可能になります。つまり、+ x許可を持っているディレクトリの内容をリストできます。
chmod u+x file
は、ファイルの所有者に実行可能ビットを追加し、無視することを意味しますumask
(あなたのmodが設定されます、質問なし)
chmod +x file
を考慮しながら、所有者、グループなどに実行可能ビットを追加することを意味しますumask
(最初にチェックしumask
てからmodを適用し、umaskの値に基づいて異なる効果がある可能性があります)。
2つのファイルを作成しましょう。
$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file2
ここでumask
、実行可能ビットを削除するために「111」に設定しますumask 111
。
$ chmod u+x file1
$ chmod +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file2
chmod
無視されたumask
を見るとわかるように、file1はその所有者に対して実行可能ビットを取得しましたが、2番目のものはumaskの値を考慮しているため、何もしませんでした。