最近、同僚が私にchmod
数字の代わりに文字を使用するように頼んだ。明らかな可読性の利点に加えて、数字の代わりに文字を使用する特別な理由はありますか?
答え1
8進表現と比較して、シンボル表現chmod
はより細かく、他のモードビットは変更されずに特定のモードビットを変更できます。
象徴的な表現は3つの部分で構成されています。
chmod [references][operator][modes] file
references
ugoa
どのユーザーのアクセス権が変更されるかを指定する文字の組み合わせfile
:ファイルを所有するユーザー(u
)、ファイルグループに属する他のユーザー(g
)、ファイルグループに属していない他のユーザー(o
)、またはすべてのユーザー(a
)。このコンポーネントを省略すると、デフォルトreferences
はすべてのユーザーに設定されますが、許可された権限のみが変更されますumask
。
指定されたファイルモードビットが+
operator
各ファイルの既存のファイルモードビットに追加され、明示的に指定されていない場合は、ディレクトリに設定されているビットを除いてそのビットが追加され、指定されていないビットが削除されます-
。=
setuid
setgid
mode
読み取り()、書き込み()、実行(またはディレクトリ検索)()rwxXst
に対応する文字の組み合わせで構成、ファイルがディレクトリであるか、すでに一部のユーザーの実行権限を持っている場合にのみ実行/検索()、または(によって異なります) on(指定された参照)()と制限消去フラグまたは固定ビット()。または、文字の1つで構成することができます。この場合、所有者()、ファイルグループのメンバー()、または上記のカテゴリ()のユーザーに現在付与されている権限に対応します。r
w
x
X
setuid
setgid
s
t
mode
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
他の人の読み取りアクセスをオフにして数字を使用したい場合は、おそらくかなり早くそうしますchmod 751
。ディレクトリだけでsetgidビットをオフにするだけです。こんな。
ただし、使用すると、chmod o-r
希望の読み取りビットのみがオフになり、ディレクトリのsetgidビットは設定されたままになります。
これは、ファイルまたはディレクトリでsetuid、setgid、または固定ビットを有効にしたい場合にも便利です。特にこれをほとんどしないと、4番目のオクテットにどのビットがあるのか覚えにくいでしょう。
したがって、それはあなたが何をしているかに依存します。権限を設定し、何から始めるべきか気にしないときは、まだ数字を使用することをお勧めします。しかし、個々のビットを切り替えるには、アルファベット表記がはるかに簡単です。