ファイルブラウザでのアクセス権の設定

chmodでアクセス権を変更できるけど、ファイルブラウザでファイルやフォルダを右クリックして「プロパティ」を選択し、「アクセス権」のタブからも変更できるっぽい。で、やろうとして分かり難かったのでメモメモ。

ファイルを右クリックした場合

ファイルを右クリックした場合、アクセス権の設定では次のような設定項目がある。

ここで「アクセス」のドロップダウンリストをクリックすると、次の選択肢が出てくる。

これはヘルプによれば

なし
ファイルにアクセスすることはできない (ファイルの所有者のみ指定可能)
読み込み専用
ファイルの内容を表示するためにオープンすることはできるが、内容を変更することはできない
読み書き
ファイルに対する通常のアクセスが可能である (オープンしたり保存することが可能)

ということなので、

  • 「なし」は--?(実行権限はこの選択肢から変更できないっぽい)
  • 「読み込み専用」はr--
  • 「読み書き」はrw-

だろう。実際にファイルブラウザで設定した内容をls -lで確認してみると、確かにこの通りになっていた。
実行(x)に関しては、それらしい設定はしたのチェックボックスしか見当たらないが、所有者とグループと他人を別々に設定できないということなのかな。
これも実際にlsで確かめると、「所有者」と「グループ」と「その他」(以下では、この3種類のことを「ユーザカテゴリ」と呼ぶことにする)の実行権限がいっぺんに変更されていた。

フォルダを右クリックした場合

フォルダを右クリックした場合、アクセス権の設定では次のような設定項目がある。

  • フォルダのアクセス権
  • ファイルのアクセス権

の2つの設定ができるようだ。どういうことだろう?「中身のディレクトリやファイル」とも考えられるけど、じゃあ自分自身のアクセス権はどうやって設定するのだろう?さらに、下の方に「これらの権限をフォルダ内の全てのファイルに適用する」というボタン(以降では「再帰ボタン」と呼ぶ)がある。いろいろ絡み合ってて、僕には理解しにくいので、ここで設定した内容をls -lで確認していく。
実験に際しては、以下のような構造(インデントはディレクトリの深さ)に対して、ディレクトリfooに対する右クリックから設定中だという前提にしておく。

foo         :drwxr-xr-x
  bar       :drwxr-xr-x
    qux     :-rw-r--r--
    hoge    :drwxr-xr-x
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

これを、「初期状態」と呼ぶことにする。

ファイルのアクセス権

「ファイルのアクセス権:」の選択肢は以下の通り。

既に述べたファイルを右クリックした場合の「アクセス」の3つの選択肢に加え「---」がある。これは何をするものだろう?デフォルトで「---」になっている。
手始めに「その他」を「なし」にしてみると、次のようになった。

foo         :drwxr-xr-x
  bar       :drwxr-xr-x
    qux     :-rw-r--r--
    hoge    :drwxr-xr-x
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

まったく変わらんじゃないか...。どういうこと?「その他」を「読み書き」にしてみると以下にようになった。

foo         :drwxr-xr-x
  bar       :drwxr-xr-x
    qux     :-rw-r--r--
    hoge    :drwxr-xr-x
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

これも変わらない...。どういうこと?っていうか、プロパティのダイアログ開く度に「---」に戻ってるし。よくわからん。
次に「その他」を「なし」にしつつ、再帰ボタンをクリックしてみたら、次のようになった。

foo         :drwxr-xr-x
  bar       :drwxr-xr-x
    qux     :-rw-r-----
    hoge    :drwxr-xr-x
      fuga  :-rw-r-----
  baz       :-rw-r-----

foo以下の全ファイルの「その他」のアクセス権が---になった。さらに「その他」を「読み書き」にして再帰ボタンをクリックすると以下。

foo         :drwxr-xr-x
  bar       :drwxr-xr-x
    qux     :-rw-r--rw-
    hoge    :drwxr-xr-x
      fuga  :-rw-r--rw-
  baz       :-rw-r--rw-

同様に、foo以下の全ファイルの「その他」のアクセス権がrw-になった。再帰ボタンのボタンをクリックしたらすぐに「その他」の「ファイルの権限:」が「---」に戻る。
ここで一旦まとめると、

  • 「ファイルのアクセス権:」を変更しただけじゃ何も変わらない
  • 変更してさらに再帰ボタンをクリックして初めて影響が出る
  • 「ファイルのアクセス権:」とは、右クリックしたディレクトリ以下のファイルのことを指す
  • 「ファイルのアクセス権:」の影響の仕方は以下の2通りしかない
    • 変更しない
    • 再帰的に全部変更する
  • ドロップダウンリストの選択肢の「---」は、おそらく「変更しない」を意味する

ということだろうか。

フォルダのアクセス権

「フォルダのアクセス権:」の選択肢は以下の通り。

ヘルプによれば

なし
フォルダにアクセスすることはできない (フォルダの所有者のみ指定可能)
表示のみ
フォルダの中に格納されたアイテムを一覧表示することはできるが、それらをオープンすることはできない
アクセスのみ
フォルダの中に格納されたアイテムに対して、それらに付与されたパーミッションに応じてオープンしたり変更することができる
作成と削除
フォルダの中にあるファイルにアクセスできることに加え、フォルダの中に新しいファイルを作成したり任意のファイルを削除できる

とある。つまり、

  • 「なし」は---
  • 「表示のみ」はr--
  • 「アクセスのみ」は--x
  • 「作成と削除」は-w-

っていうことだと考えられる。違った。「アクセスのみ」はr-x、「作成と削除」はrwxになるっぽい。ファイルのアクセス権同様、「---」も変更しないことを表すのだろう。初期状態から出発して、同じように選択肢を変更してはls -lで確認して行ってみる。
まずは「その他」を「なし」にしてみたら以下のようになった。ちなみにウインドウを表示した直後は「アクセスのみ」が選ばれている。

foo         :drwxr-x---
  bar       :drwxr-xr-x
    qux     :-rw-r--r--
    hoge    :drwxr-xr-x
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

fooの「その他」の実行権限がなくなった。元々「その他」はfoo内の一覧を見れて(r)、foo内の要素にアクセスできる(x)ていたけど、何もできんようになった分けね。これは分かりやすい。
「その他」を「作成と削除」にして、再帰ボタンをクリックしたら以下のようになった。ウインドウを表示した直後は「なし」が選ばれていた。

foo         :drwxr-xrwx
  bar       :drwxr-xrwx
    qux     :-rw-r--r--
    hoge    :drwxr-xrwx
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

foo以下の全ディレクトリの「その他」のwのフラグが立った。fooに関してはrとxも変更されてしまった。
「その他」を「表示のみ」に変更して、再帰ボタンをクリックしたら以下のようになった。

foo         :drwxr-xr--
  bar       :drwxr-xr--
    qux     :-rw-r--r--
    hoge    :drwxr-xr--
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

foo以下の全ディレクトリの「その他」がr--になった。これは予想通りの挙動だった。
「その他」を「---」に変更して、再帰ボタンをクリックしたら、どこにも変化がなかった。
ここで一旦まとめる。

  • 「フォルダのアクセス権」は、右クリックしたディレクトリに対する設定。もし再帰ボタンにチェックをつければ、以下の階層にも同じ設定がなされる。
  • 「作成と削除」を選択したら、rw-ではなくrwxになる。
  • 「---」を選択しても、何も変化しない。

ディレクトリの実行権限に関しては、

  • ドロップダウンリストから「アクセスのみ」を選ぶ
  • チェックボックスにチェックを付けること

の両方で変更可能だと思うのだが、それらの設定が矛盾していた場合にどうなるか気になるところだ。実行権限に関してもチェックしてみよう。

実行権限のチェック

初期状態から出発する。その後、

  1. チェックボックスのチェックを外す

-fooのすべてのユーザの実行権限がなくなるか?

  1. ウィンドウ表示直後「フォルダのアクセス権」とチェックボックスの状態はどうなっているか?
  2. 「フォルダのアクセス権」とチェックボックスで、矛盾する設定をしたらどうなるか?

を調べる。
フォルダを右クリックした時は、実行権限のチェックボックスは3状態をとれるようだ*1。ウィンドウを表示した直後は、チェック状態とも未チェック状態ともとれない感じだ(以後、「不定状態」と呼ぶ)。とりあえずチェックを外した。再帰ボタンはクリックしない。

foo         :drwxr-xr-x
  bar       :drwxr-xr-x
    qux     :-rw-r--r--
    hoge    :drwxr-xr-x
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

変化しなかった。「フォルダのアクセス権」が優先されたのだろう。
もう一度ウィンドウを表示すると、チェックボックス不定状態になっている。「フォルダのアクセス権」は「アクセスのみ」になっていた。ここからチェックボックスをチェックし、「その他」の「フォルダのアクセス権」を「なし」にして矛盾した設定にしてみると、以下のようになった。

foo         :drwxr-x---
  bar       :drwxr-xr-x
    qux     :-rw-r--r--
    hoge    :drwxr-xr-x
      fuga  :-rw-r--r--
  baz       :-rw-r--r--

ドロップダウンリストの設定が優先された。
実行権限に関してまとめてみると

  • フォルダの実行権限に関して、ドロップダウンリストとチェックボックスで矛盾する設定がなされたら、ドロップダウンリストが優先される

まとめ

明解ではない、というのが率直な感想。今回、すごく頑張って挙動を確かめてみたけど、時間が経つと細かいことは忘れてしまいそうだ。自分が思う、分かりにくさの原因は

  • フォルダの実行権限に関しては、チェックボックスとドロップダウンリストで変更できる
  • 実行権限の変更はチェックボックス1個で、ユーザカテゴリを考慮できない
  • 「ファイルのアクセス権」と「フォルダのアクセス権」とで、挙動が挙動が大きく違う

かなぁ。
ファイルとディレクトリから構成される階層構造では、この種の設定で明解なUIを提供することが難しいのかな。

*1:GNOMEのテーマによっても見た目が違う