Linuxでumaskはどのように計算されますか?


15

したがってumask、この形式を使用して、特権ユーザーを制限できることを知っていますumask ugo

read = 4、write = 2、exec = 1であることを理解しています。ただし、入力するとumask、4桁の0022or が返されます0073。余分な桁があるため、これが現在どのように機能するのか理解できません。その余分な数字とは何0022ですか?

回答:


18

デフォルトのマスク0666を想定します umask。0022は、新しいマスクを0644(0666-0022 = 0644)にします。これは、グループおよび他のユーザーが読み取り(書き込みまたは実行なし)権限を持っていることを意味します。

「余分な」数字(最初の数字= 0)は、特別なモードがないことを指定します。

モードが数字で始まる場合、8進数として解釈されます。それ以外の場合は、記号であることが意図されます。

0は数字で、1(スティッキービット)または6(SGID)です。などのコマンドは、ユーザーおよびグループに読み取りおよび書き込み権限を追加する場所chmodなど、他の方法で呼び出すことができますchmod ug+rw mydir。この場合のモード(ug + rw)は数字で始まらないため、8進数としてではなく、記号として解釈されることに注意してください。

シンボリックについてはen.wikipedia.org/wiki/Chmod#Symbolic_examplesを、特殊モードについてはwww.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/を参照してください。

で最初のビットのマスクを解除することはわかりませんumaskが、技術的にはできます。ほとんど常にゼロとみなされる理由を説明します。

功績pinkfloydx33

マスクの最初の桁は、所有者/グループ/その他のモデルにあまりきれいに適合しない特別な許可を扱います。ファイル許可に4桁が指定されている場合、最初の数字はこれらの特別な値を参照します。

4000 = SUID
2000 = SGID
1000 = sticky bit

set-user-IDの略であるSUIDビットにより、実行可能プログラムは所有者の有効なユーザーID(uid)で実行されます。つまり、誰が実行しても、プログラムは所有者の権利で実行されます。これは、root権限を必要とすることを行うプログラムでよく見られますが、通常のユーザーが実行することを意図しています:passwdそのような例の1つです。

set-group-IDの略であるSGIDビットは非常に似ていますが、所有者の有効なグループ ID(gid)で実行されます。

スティッキービットはもう少し複雑です。さらに詳しい情報が必要な場合は、のマンページをご覧くださいsticky

これらのビットはディレクトリでも使用できますが、その意味は変わります。

umaskデフォルトでこれらの追加ビットのいずれかを有効にできるように実際に設定できるとは思わないが、おそらくとにかくそうすることは決してないだろう。

user470379へのクレジット


1
実際、最後の3桁以外にゼロ以外の値を指定することはできません。Posixによると:「ファイル許可ビット以外のファイルモードビットを指定するモード値の解釈は指定されていません。」man 2 umask(対応するシステムコール)によると、「のファイル許可ビットのみmaskが使用されます」。でbash、umask 1000は「8進数が範囲外」というエラーを生成します。なぜ余分な0なのでしょうか?数字が8進数であることを示すだけだと思います。
リチ

そのpastebinにはumaskへの参照が一切ないため、どのように関連するのかわかりません。chmodでは最初の3ビットを設定できますが、umaskではそれらをマスクできません。(あなたが書かれている可能性があり、すなわち、chmod 6777 dropboxまた、方法によって、そして。chmod ug+s。)
RICI

ええ、あなたは正しい、私が何を考えていたのか分からない。
Braiam

@ブライアム:新しいマスクを計算するあなたの式は間違っています、そうではありません0666-0022、そう0666 & ~0022です。
cuonglm 14

1
異議は数字の書き方ではなく、ビットごとの(&)の代わりに減算演算子(-)を使用することだと思います。
BowlOfRed 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.