最近、同僚からchmod
数字ではなく文字を使用するように言われました。 読みやすさという明らかな利点以外に、数字ではなく文字を使用する特別な理由があるのでしょうか?
答え1
シンボリックchmod
表記は 8 進表記に比べて粒度が細かく、他のモード ビットはそのままにして、特定のモード ビットを変更することができます。
記号表記は 3 つの要素で構成されます。
chmod [references][operator][modes] file
は、references
文字 の組み合わせで構成されugoa
、 へのどのユーザーのアクセスをfile
変更するかを指定します。変更するユーザーは、 を所有するユーザー ( u
)、ファイルのグループ内の他のユーザー ( g
)、ファイルのグループに属さない他のユーザー ( o
)、またはすべてのユーザー ( a
) です。references
コンポーネントを省略すると、デフォルトですべてのユーザーになりますが、 によって許可された権限のみがumask
変更されます。
は+
operator
、指定されたファイル モード ビットを各ファイルの既存のファイル モード ビットに追加します。 は、-
それらのビットを削除します。 また、明示的に指定されていない限り、ディレクトリに設定された および ビットを除き、それらの=
ビットが追加され、指定されていないビットが削除されます。setuid
setgid
は、mode
文字 の組み合わせで構成されます。文字rwxXst
は、読み取り ( r
) w
、書き込み ( )、実行 (またはディレクトリの検索) ( x
)、ファイルがディレクトリであるか、すでに一部のユーザーに実行権限がある場合のみ実行/検索 ( X
)、setuid
またはsetgid
(指定された参照に応じて) ( s
)、および制限付き削除フラグまたはスティッキー ビット ( t
) に対応します。あるいは、 はmode
文字 のいずれか 1 つで構成される場合がありugo
、その場合、 は、mode
所有者 ( u
)、ファイルのグループのメンバー ( g
)、または前述のいずれのカテゴリにも属さないユーザーの権限 ( o
) に現在付与されている権限に対応します。
例
の権限セットfile
が0764/-rwxrw-r--
ファイルのグループに属していない他のユーザーから権限を削除します:
8進数:
chmod 760 file
8 進表記を使用する場合は、変更されていない既存の権限を繰り返す必要があることに注意してください。
シンボリック:
chmod o-rwx file
シンボリック表記では、既存のファイル権限は関係ありません。
セットsetuid
:
8進数:
chmod 4764 file
シンボリック:
chmod u+s file
セットsetgid
:
- 8進数:
chmod 2764 file
- シンボリック
chmod g+s file
答え2
文字を使用すると、他のビットを変更せずに個々のビットのオン/オフを切り替えることができます。
次のディレクトリがあると仮定します。
drwxrwsr-x 6 f261-01a g261-01a 4096 Sep 12 17:51 /home/teams/261/f261-01a
other の読み取り権限をオフにして、数値を使用したい場合は、 をすぐに実行できますchmod 751
。ただし、ディレクトリの setgid ビットをオフにしてしまいました。おっと。
ただし、 を使用するとchmod o-r
、必要な読み取りビットをオフにするだけで、ディレクトリの setgid ビットは設定されたままになります。
また、ファイルまたはディレクトリの setuid、setgid、または sticky ビットをオンにする場合にも便利です。特に、これをめったに行わない場合、4 番目のオクテットのどのビットがどのビットであるかを覚えておくのが困難な場合に便利です。
したがって、何をしているかによって異なります。権限を設定するだけで、そもそも何があるかは気にしない場合は、やはり数字を使用することを好みます。ただし、個々のビットを切り替える場合は、文字表記の方がはるかに簡単です。