●所有権とアクセス権
ファイルやディレクトリは、
作成したユーザが所有ユーザ、
そのユーザのデフォルトグループが所有グループになる
またファイルやディレクトリ毎に、
という3つのクラスに対して、以下のようなアクセス権を設定できる
(スーパーユーザ(root)はアクセス権の設定に関わらず全ての操作が可能)
アクセス権 可能な操作 ファイル ディレクトリ 読み取り 「r」 「4」 ファイルの参照 ディレクトリの内容の表示 書き込み 「w」 「2」 ファイルの変更 ディレクトリ内でのファイルの作成と削除 実行 「x」 「1」 プログラムとして実行 ファイルの参照、カレントディレクトリの移動
ファイルに設定されているアクセス権を確認するには
ls -l コマンド
ディレクトリの場合はls -ld コマンド
3つのクラスそれぞれに3種類のアクセス権が記号で表記される 「 -rwxr-xr-x 」等
アクセス権は一般的に数字でも表されることもある
3つのクラスそれぞれに許可されたアクセス権の数字を足して
「 -rwxr-xr-x 」 は 「755」を表すことができる
●所有権とアクセス権の設定
コマンド 説明 書式 主なオプション 補足 chown ファイル・ディレクトリの
所有ユーザと所有グループを変更(スーパーユーザ(root)のみ可能)
chown [オプション] ユーザ[:グループ] ファイル/ディレクトリ名 -R :
指定したディレクトリ以下にある全てのファイルに対して変更chgrp ファイル・ディレクトリの
所有グループを変更(スーパーユーザ(root)か
所有グループに所属しているユーザのみ可能)chgrp [オプション] グループ ファイル/ディレクトリ名 -R :
指定したディレクトリ以下にある全てのファイルに対して変更chmod ファイル・ディレクトリの
アクセス権を変更chmod [オプション] アクセス権 ファイル名 アクセス権は3桁の数字で指定するか、
[設定対象][設定操作][アクセス権の種類]
を使って既存のアクセス権を変更する-R :
指定したディレクトリ以下にある全てのファイルに対して変更[設定対象]
u :所有ユーザ
g :所有グループ
o :その他のユーザ
a :全てのユーザ[設定操作]
+ :権限を追加
- :権限を削除
= :権限を指定
[アクセス権の種類]
r :読み取り許可
w :書き込み許可
x :実行許可
s :SUID/SGID
t :スティッキービット
ファイルやディレクトリを作成するとデフォルトでは、
のアクセス権で作成される
これは作成したユーザ毎に設定されたumask値によって決定される
ディレクトリは777、ファイルは666からそのユーザのumask値を引いた数値がアクセス権として設定される
ユーザのumask値はデフォルトでは022のため、ディレクトリ:755(rwxr-xr-x)、ファイル:644(rw-r--r--)で作成されることになる
現在のユーザのumask値を表示・変更させるには、umaskコマンド
●特殊なアクセス権
名称 | 説明 | 記号表記 | 数値表記 |
SUID (Set User ID) |
通常プロセスは そのプログラムを実行したユーザの権限で実行されるが、 SUIDを設定すると常にそのファイルの所有ユーザの権限で そのプロセスが実行される |
rwsr-xr-x | 4755 |
SGID (Set GroupID) |
実行ファイルに設定すると、 ファイルの所有グループ権限で実行される ディレクトリに設定すると、 |
rwxr-sr-x | 2755 |
スティッキービット | ディレクトリに設定すると、 そのディレクトリ内では、 ファイルの削除とファイル名の変更ができるのは そのファイルを作成したユーザのみになる |
rwxr-xr-t | 1755 |
●ハードリンクとシンボリックリンクの違い
ハードリンク:
FileA FileB FileC
↓ ↓ ↓
iノード番号
ファイルの実体(リンク元)
ファイルのみに作成できる
ファイル名が違ってもiノード番号が同じであれば、同じ実体(ファイル)を開くことになる
実体のファイル(リンク元)が削除されない限り、どのハードリンクを開いてもリンク元のファイルにアクセスできる
ただし異なるファイルシステムをまたいだハードリンクを作成することはできない
シンボリックリンク:
FileA <- - - - - FileB(シンボリックリンク)
↓
ファイルの実体
FileAが削除されるとFileBを開いても、
ファイルの実体にアクセスできなくなる
WindowsのショートカットやMacOSのエイリアスに近い
ファイルシステムが異なっても作成可能
ls -l コマンドでシンボリックリンクがどのリンク元を指しているか表示される
●ハードリンクとシンボリックリンクの作成
コマンド | 説明 | 書式 | 主なオプション 補足 |
ln | ハードリンク/シンボリックリンクの作成 | ln [オプション] リンク元(ファイルの実体)
リンク先 -sオプションを指定しない場合は |
-s : シンボリックリンクの作成 |