さて、Mac OS X、BSD、およびLinuxの「chmod」のマニュアルページを読み直し、いくつかの実験を行いました。シンボリックモードについて学んだことは次のとおりです。複雑になりますが、理解する価値があります。
- 一般的な形式は、節 [、節 …]です。ここで、
- 句:= [ugoa] [+-=] [rwxXstugo]
- [ugoa](who)(複数指定)は、ユーザー、グループ、その他、またはすべてのアクセス許可を設定することを意味します。指定しない場合、デフォルトは「a」ですが、umaskは有効です。
- [+-=](action)(1つを指定)は次を意味します。
- +は、指定された許可を既に有効な許可に追加することを意味します
- -既に有効な許可から指定された許可を削除することを意味します
- =は、許可を指定された許可に設定し、他のすべてをクリアすることを意味します
- [rwxXstugo](permission)(rwxXstの倍数またはugoの1つを指定)は、指定されたユーザーの許可を次のように設定します。
- r —読み取り
- w —書き込み
- x —実行/検索
- X —ディレクトリを実行/検索するか、実行ビットがすでに設定されている。
- s — suidまたはsgid
- t — スティッキー
- u —ユーザー許可をコピーする
- g —グループの許可をコピーする
- o —他の許可をコピーする
したがって、たとえば、a+x
誰でもファイルを実行可能にします。a+X
誰でも実行できるファイルであれば、誰でも実行できるファイルになります。
a+x
誰でもディレクトリを検索できるようになります。a+X
また、誰でもディレクトリを検索できるようになります。
BSDとLinuxの主な違いは、BSDでは、chmodが実行される前にファイルの許可に基づいて決定が行われることです。Linuxでは、+ X句が実行される直前に決定が行われます。
だから、BSDと、組み合わせがa-x,a+X
実行/削除権限を検索し、皆でディレクトリ検索可能を行い、皆でファイルを実行可能になるだろうならば、それはもともと誰によって実行されていました。
Linuxでは、a-x,a+X
実行/検索の許可を削除し、誰もがディレクトリを検索できるようにし、誰もファイルを実行できないようにします。
具体例は次のとおりです。BSDマシンの場合:ディレクトリ、実行可能ファイル、および非実行可能ファイル:
drwxr-x--- 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--- 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
ディレクトリと「fie」の両方がユーザーによって実行可能/検索可能であることを確認しますが、他のユーザーによってはできません。
実行しchmod a-x,a+X *
ます。最初の句は、すべてのファイルのすべてのユーザーから実行/検索ビットを削除しますが、2番目の句は、「fee」と「fie」の両方に追加します。ディレクトリであるため「fee」、開始するために少なくとも1つの実行可能ビットがあったため「fie」。
drwxr-x--x 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--x 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
私は同じ結果を実行しましたchmod -x+X
。
結論:Jak GibbのソリューションはLinux上で動作しますが、BSDの場合は2つのパスを作成する必要があります。
SVr4または他のUnixバリアントでこれをテストしませんでした。