umask 0022の先行0

umask 0022の先行0

umask 0022で先行ゼロを変更するには?変更できますか?

私は一般的な方法で情報を検索しましたが、私のローカルシステムはほとんど役に立ちませんでした。

$ man umask  
No manual entry for umask  

$ umask --help
bash: umask: --: invalid option
umask: usage: umask [-p] [-S] [mode]

私が一つ見つけたオンラインumaskのマニュアルページ次の内容があります。

umask [-p] [-S] [モード]

モード ... ファイル生成マスク
-S ........ シンボル形式でマスクを印刷します。
-p ........ 入力として再利用できる形式で出力します。

これに基づいて、いくつかの基本的なコマンドを試しましたumask

$ umask
0022

$ umask -p
umask 0022

$ umask -S
u=rwx,g=rx,o=rx

sudoでumaskを実行できないことに驚きました。

$ sudo umask  
[sudo] password :  
sudo: umask: command not found  

一般的なumaskを次のように変更しました。

$ umask 021
$ umask
0021

$ umask 0022
$ umask
0022  

最後に、前のゼロを変更しようとするとエラーが発生します。

$ umask 1022
-sh: umask: 1022: octal number out of range  

それでは、元の質問に戻って先行0(0)をどのように変更しますか?スーパーユーザー(ルート)ですか?更新できますか?それでは、何を更新する必要がありますか?

同様の質問を確認しました。Linuxでは、umaskはどのように計算されますか?発見:

最初のものを見つけるために何を使うかはわかりませんが、umask技術的には...

そして

umaskデフォルトでは、これらの追加ビットを有効にできる設定を実際に設定できるとは思いません。

したがって、これらの不確実で矛盾する声明は質問に対する答えではありません。

答え1

CやPerlなどの言語では、前の0は8進数を表し、ファイル許可ビットは通常8進数で表されるため、これらの言語では数字が10進数として扱われないように0を使用する必要があります。

シェルユーティリティは常に数値権限を8進数として解釈するため、0は数値をCスタイルの8進定数のように見せるか、埋める以外には意味がありません。

umaskでは、最低3つの8進数のみが意味を持つため、0022すべての数字を同じ長さで埋め、8進数を表すためにゼロを続けない限り、このような追加の0は少し重複しているように見えます。

(POSIXはumask()特権ビットのみを使用しますが、同時に他のビットの意味は実装によって定義されることを多少混乱させます。)

関連情報