umask 111 でファイルを作成するとなぜ666になるのですか?

このQ&Aのポイント
  • umask 222 を使用してデフォルトパーミッションを設定すると、ファイルは 444(-r--r--r--)、ディレクトリは 555(dr-xr-xr-x)になります。
  • しかし、umask 111 を使用すると、ファイルは 666(-rw-rw-rw-)、ディレクトリは 666(drw-rw-rw-)になります。
  • これは、umask によってファイルやディレクトリのパーミッションが逆に設定されるためです。
回答を見る
  • ベストアンサー

「umask 111 」でファイルを作成するとなぜ666になるのですか?

umaskに関する質問です。 umask 222 でデフォルトパーミッションを設定すると、 ファイルは 666-222 →444(-r--r--r--) ディレクトリは 777-222 →555(dr-xr-xr-x) になるのは理解できるのですが、 umask 111 の場合に、 ファイルは 666-111 →666(-rw-rw-rw-) ディレクトリは 777-111 →666(drw-rw-rw-) はどうしてなのでしょうか? 「666」から「111」を引いて「555」になりそうに思うのですが・・・。 大変初歩的な質問で申し訳ありませんが、ぜひご教示いただきますよう、お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

単純に引き算ではなく、 「ファイル作成時のデフォルトパーミッションは666、ディレクトリは777であり、この数値と「umaskで指定されたマスクの論理否定」との論理積が、ファイルやディレクトリ作成時の最終的なパーミッションとなる。」 だそうです。

mag_by
質問者

お礼

参考書をよく調べたところ、 「umask 1,3,5,7 はディレクトリのみに作用する」 とも書いてありました。 お忙しいところ、ご回答いただきありがとうございました。

関連するQ&A

  • Linuxのumask値について

    Linuxのumask値の設定について質問します。 「-rw-r-----」 ファイルのアクセス権が上記の時、umask値を計算する問題。 これはどのような計算でumaskがわかりますか? 読み取り(r)=4 書き込み(w)=2 実行(x)=1 でアクセス権を数値で表すと640になります。 基本的な計算方法はわかっていますが、umask値が026ではなく、027になるのがなぜなのかわかりません。 それともこのアクセス権のみ特別のようなものとして解釈するのがはやいでしょうか?

  • local_umaskの設定

    FTPで新規にアップロードしたファイルのパーミッションが 777に設定されるようにしたいと思っています。 そこで、/etc/vsftpd/vsftpd.conf で local_umask=000 と設定し、 vsftpdを再起動してFTPアップロードしてみたところ、 パーミッションは 666 になってしまいました。 また他の値でも試してみたところ、 以下のような結果になりました。 local_umask=002 → 664 local_umask=022 → 644 local_umask=222 → 440 これは他に何か設定が必要ということなのでしょうか。 どなたかご教示ください。 よろしくお願いします。

  • umask757をvar/www/htmlへ適用?

    ■環境 ・Cent OS ■状況 ・指定ディレクトリのパーミッションを、757にしないと期待した動作になりません ※「ファイルアップロード」処理のファイルを配置しています ■現状 ・sudo chmod -R 757でディレクトリを個別指定しています ■質問 ・ディレクトリ単位で指定するのが面倒なので、「var/www/html」全体に「chmod -R 757」を適用しても良いでしょうか? ・セキュリティ的に問題ない? ・umaskで指定した方が良いでしょうか? ・その場合、757にするにはどう書けば良いでしょうか? ・757でしか動作しないそもそもの状況を改善することは可能?(例えば666とかに) ・757でしか動作しないものは、所有者とか所有グループを変更しても、757でしか動作しないものなのでしょうか?

  • chmod u-x .*の動作について教えて下さい

    パーミッション変更作業中に 「chmod u-x .*」としたところ予期しない動作をしました。 私事ですが、 先日これで、サーバを停止させてしまい始末書を書きました。 原因はわかったのですがコマンドの動作に理解できずに困っています。 詳しい方がおられましたら、ご教授お願いします。 よろしくお願いします。 問題は、カレントディレクトリで .(ドット)から始まる全てのファイルに対して ユーザの実行権限を削除するということで 下記のコマンドを実行しました。 「chmod u-x .*」 その結果、親と親の親ディレクトリの 実行権限まで変わってしまったということです。 カレントディレクトリには、 下記のファイル(ディレクトリ)があります。 . .. .bash_history .bash_logout .bash_profile .bashrc 「..」が変更対象に含まれている為、 「../foo」親ディレクトリが変更対象になります。 「../bar」が変更対象に含まれないのは、 「..」でも直接親子関係にないから変更対象に入らない。 そのため、 「../../home」も同じ理由で親子関係にないから変更対象に入らない と思っています。 確認した環境は RHEL4とFedora6ですどちらも結果は同じ。 ■下記に実行したコマンドを記載します。 (文字数に制限があるようなので、内容を一部加工させて頂きました。) 【コマンド入力前のパーミッション】 [root@baz /]# ls -la / | grep home drwxr-xr-x 4 root root 4096 1月 9 1:01 home [root@baz /]# ls -la /home 合計 28 drwxr-xr-x 4 root root 4096 日時 . drwxr-xr-x 3 root root 4096 日時 .. drwx--x--x 1 bar bar 4096 日時 bar drwx------ 5 foo foo 4096 日時 foo [root@baz foo]# ls -la 合計 40 drwx------ 5 foo foo 4096 日時 . drwxr-xr-x 4 root root 4096 日時 .. -rw------- 1 foo foo 165 日時 .bash_history -rw-r--r-- 1 foo foo 24 日時 .bash_logout -rw-r--r-- 1 foo foo 176 日時 .bash_profile -rw-r--r-- 1 foo foo 124 日時 .bashrc drwx------ 5 foo foo 4096 日時 Maildir drwxr-xr-x 2 foo foo 4096 日時 etc drwxr-xr-x 2 foo foo 4096 日時 public_html 【問題のコマンドを実行】 [root@baz foo]# pwd /home/foo [root@baz foo]# chmod u-x .* 【コマンド入力後のパーミッション】 [root@baz foo]# ls -la 合計 40 drw------- 5 foo foo 4096 日時 . drw-r-xr-x 4 root root 4096 日時 .. -rw------- 1 foo foo 165 日時 .bash_history -rw-r--r-- 1 foo foo 24 日時 .bash_logout -rw-r--r-- 1 foo foo 176 日時 .bash_profile -rw-r--r-- 1 foo foo 124 日時 .bashrc drwx------ 5 foo foo 4096 日時 Maildir drwxr-xr-x 2 foo foo 4096 日時 etc drwxr-xr-x 2 foo foo 4096 日時 public_html [root@baz /]# ls -la /home 合計 28 drw-r-xr-x 4 root root 4096 日時 . drwxr-xr-x 3 root root 4096 日時 .. drwx--x--x 1 bar bar 4096 日時 bar drw------- 5 foo foo 4096 日時 foo [root@baz /]# ls -la / | grep home drw-r-xr-x 4 root root 4096 日時 home

  • Linux上でファイル・ディレクトリのパーミッションを強制的に変える

    Linux上でファイル・ディレクトリのパーミッションを強制的に変える Linuxでファイルサーバを立てています. まず,やりたいことは3つあります. 1.特定のユーザに対してファイルのパーミッションを変えるコマンド(chmod)を使用不可能にしたいのですがどうしたらよいのでしょうか? 2.ファイル(ディレクトリ)のパーミッションを強制的にrwxr_xr_xにしたいのですが,可能でしょうか?つまり,指定したパーミッション以外のファイル(ディレクトリ)をコピーしたといしても,そのファイルのパーミッションはrwxr_xr_xに強制的に変わるということです. 3.特定のユーザでディレクトリの移動を/homeより上の階層に動かしたくないのですがどうしたらよいのでしょうか?つまり自分と他のユーザのディレクトリは見に行けるがルート以下のシステム関連には移動してほしくないということです. よろしくおねがいします.

  • OSXでのumaskについて

    ファイルやフォルダのデフォルトのアクセス権を変更したく、ターミナルよりumaskを設定してみたのですが、何も変わりません。なぜでしょうか? 例えば、0000のマスク値を設定した場合、新規フォルダ作成時には777に新規書類の場合は666になると思うのですが、デフォルトの0022と同様のアクセス権となります。ターミナルの自分のユーザーの場所から実行しており、数値自体は確かに変更されています。(OS10.3.9と10.5で試しました) 初歩的なことでしたら、申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • Mac
  • 各パーミッションの詳細について

    こんばんは。 今回、システムの移行を担当することになりました。(Solaris→HP-UX) 前システムではパーミッションの設定値が同じであるべきファイルやディレクトリのパーミッションがバラバラであったりしていたため、 新システムではこのディレクトリはこのパーミッション、このファイルはこのパーミッション、と綺麗に揃えたいということになりました。 ただ、どういうファイルをどういう設定にしてあげれば良いのか、 各パーミッションでどのような振る舞いをするかが分からないため、判断に困っています。 各パーミッションにおいて、それぞれどのようなことができるのか、使い方、特殊な使い方、こういうファイルにはこういうパーミッションを設定してあげる、など、細かいことを知りたいです。 ファイルの rwx(7) rw-(6) r-x(5) r--(4) -wx(3) -w-(2) --x(1) ---(0) の各場合と ディレクトリの、 rwx(7) rw-(6) r-x(5) r--(4) -wx(3) -w-(2) --x(1) ---(0) の各場合を知りたいです。 検索しましたが全てのパターンにおいて網羅されて書かれているようなものが 見つかりませんでした。 所有者・グループ・その他、での組み合わせも考えなければならないと思いますが、 まずは単一でパーミッション0~7について詳細に知りたいです。 お願い致します。

  • Linuxにおけるパーミッションに関して

    Linux(Redhat)に関して質問します。 /etc/passwdファイルの第7フィールド(ログインシェル指定の箇所)にて /sbin/nologin指定をしているアカウントに関して、このアカウントで作成 されるディレクトリもしくはファイルのデフォルトでのパーミッションは、 どのようになりますでしょうか? 例えば、第7フィールドに/bin/bashの指定があり、/etc/bashrcにumask の値を設定していれば、ログイン時に/etc/bashrcが読み込まれumask の値によってパーミッションが決定されると思いますが、/sbin/nologin 指定をしているアカウントに関しては、umaskの値が有効になるのか どうか質問している次第です。

  • Inet で FTP のファイル送信したときのファイル属性

    Inet の FTP でサーバ(UNIX)へファイルを送信すると、 ファイル属性が(rw_r__r__)になります。 FFFTPを使っても同じなので、Inetの問題ではないのですが。 サーバ側の(.cshrc)ファイルでは、umaskは(002)です。 それなら、(rw_rw_r__)になっていいと思うのですが、どなたかどこに設定すればいいのか、ご存知でしたらお教えください。

  • SFTP/FTPで受信するファイルのパーミッションについて

    Radhat Linux7.1 でFTP/SFTPでファイルを受信時のファイルパーミッションを設定したく、umaskを.bash_profileに設定したのですが駄目でした。どのようにすれば良いのでしょうか。 御存知の方御教示下さい。