GNU/Linuxにおける基本的なアクセス権について(属性の設定手順と初期値について)
「GNU/Linuxにおける基本的なアクセス権について(対象/属性/表記など)」の続き。
アクセス権の設定
GUIファイルマネージャ
Nautilus(GNOME)やThunar(Xfce4)、Dolphin(KDE)、PCMan File Manager(LXDE)*1などのGUIファイルマネージャではファイルやディレクトリのアイコンのコンテキストメニューから「プロパティ」を選択し、情報ダイアログの「アクセス権」や「パーミッション」といったタブを選択すると現在の属性が表示され、自分が所有しているものについては属性をGUI上で変更することもできる。
ダウンロードした実行形式ファイル(「.bin」「.run」といった拡張子のインストーラや色々な言語のスクリプトファイルなど)を実行する場合は実行属性をチェックすることで実行可能となる。
Nautilus 2.24.0・前回に属性を修正した時刻(ctime/Change)も表示されるが、作成したすぐ後などは「不明」と表示される
Thunar 1.0.1
Dolphin 1.2.1
Dolphin 1.2.1(アクセス制御リスト/ACL)
PCMan File Manager 0.5
KDEのDolphinでは標準でアクセス制御リスト(ACL)の編集が行える。
コマンド
コマンドで属性を設定するにはchmod*2コマンドを用い、数値表記もしくは記号表記によって属性を操作する。
数値についてはGNU/Linuxにおける基本的なアクセス権について(対象/属性/表記など)の「アクセス権の表記と属性」のものと同じだが、記号表記では現在の属性をもとに特定の対象/特定のアクセス権だけを操作するのに向いており、下の3つを順につなげたものとなる。
- 対象の指定: [u(所有ユーザ) もしくは g(所有グループ) もしくは o(その他)] (省略時は所有ユーザ/所有グループ/その他の全てに対して適用)
- 変更操作: [+(オン) もしくは -(オフ) もしくは =(指定)]
- アクセス権の指定: [r(読み込み) もしくは w(書き込み) もしくは x(実行)]
(属性755を設定) $ chmod 755 [ファイルやディレクトリ...] (全てのユーザについて実行(ディレクトリの場合は入る操作)を可能にする) $ chmod +x [ファイルやディレクトリ...] (所有ユーザ/所有グループ以外のアクセス権を全て拒否にする) $ chmod o-rwx [ファイルやディレクトリ...]
所有者はchown*3、所有グループは同コマンドあるいはchgrp*4により変更できる。
chgrpはchownで代用できるが、いずれの場合も
- 一般ユーザが所有ユーザの変更で自分以外を指定
- 一般ユーザが所有グループの変更で自分の属していないグループを指定
といった操作は行えず、管理者権限で実行する必要がある。
(所有者を「user」に指定) $ sudo chown user [ファイルやディレクトリ...] (所有グループを「users」に指定・ただし自分がusersに属している) $ chgrp users [ファイルやディレクトリ...] もしくは $ chown :users [ファイルやディレクトリ...] (所有者を「user」、グループを「users」に同時に指定) $ sudo chown user:users [ファイルやディレクトリ...]
自分が属していないグループを所有グループにする場合はsudoを用いる。
$ sudo chgrp [グループ名] [ファイルやディレクトリ...] もしくは $ sudo chown :[グループ名] [ファイルやディレクトリ...]
属性の初期値
ファイルやディレクトリを新しく作成(あるいは別の場所から属性を含めずにコピー)した場合、その初期属性はumaskという値で決められる。これは(「読み込み」「書き込み」「実行」の3つの)アクセス権の中で拒否するものだけを数値で指定した形で、(拒否する)アクセス権を示す値は「GNU/Linuxにおける基本的なアクセス権について(対象/属性/表記など)」の「アクセス権の表記と属性」に書いたものと同じ。
umask値は多くの場合「022」で
- 所有者: 拒否するものはない
- 所有グループ: 書き込み(2)だけ拒否
- その他: 書き込み(2)だけ拒否
となっている。結果、属性値の初期値は
- ディレクトリや実行ファイルの場合: 755
- ファイルの場合: 644
となる。
これを変更するにはシェルの組み込みコマンドumaskを用いてumask値を引数に指定する。引数を付けないと現在のumask値を表示する。
(現在のumask値を確認) $ umask 022 (テスト用ファイル/ディレクトリの生成) $ touch testfile $ mkdir testdir (属性を確認) $ stat -c "%a (%A)" testfile 644 (-rw-r--r--) $ stat -c "%a (%A)" testdir 755 (drwxr-xr-x) (テスト用ファイル/ディレクトリの削除) $ rm testfile -f $ rmdir testdir (「属性の初期値において自分以外の読み/書き/実行は全て許可しない」設定) $ umask 077 (テスト用ファイル/ディレクトリの生成) $ touch testfile $ mkdir testdir (属性を確認) $ stat -c "%a (%A)" testfile 600 (-rw-------) $ stat -c "%a (%A)" testdir 700 (drwx------) (テスト用ファイル/ディレクトリの削除) $ rm testfile -f $ rmdir testdir (umask値を022に戻す) $ umask 022
関連記事:
- ctimeは、内容か属性が修正された日時を指し、作成日時を指すのではない
- GNU/Linux上でユーザやグループごとのアクセス権を設定する機能を使用するための覚え書き
- ファイルやディレクトリの最終更新日時を変更する
- GNU/Linuxにおける基本的なアクセス権について(対象/属性/表記など)
使用したバージョン: