UNIX系OSのファイルアクセス権
Python会が管理する医学科学生用計算サーバ (以下、医学科計算サーバ) が本格的に使える状態に (ほぼ) なりました。 OS は Ubuntu 18.04 LTS です。
計算サーバのようにUNIX系OSをマルチユーザで使う場合、ファイルの所有権/アクセス権の理解が必須です。 本稿ではその基本と、その拡張であるACL (Access Control List) をとても雑に説明します。
Ubuntu 18.04を念頭に置きますが、他のLinuxでもほぼ同じです。 macOSでのACL操作は方法が少し異なりますが、基本の仕組みは全て同じです。
ファイルの所有者とアクセス権
医学科計算サーバでは、一人ひとりに独立のアカウントを発行します。 このような環境では、自分のデータは自分だけが読み書きできるようにしたりできます。 以下がその仕組みです。
各ファイルやディレクトリには「所有者」「所有グループ」「アクセス権 (パーミッション) 」の情報がそれぞれ記録されています。 所有者は、自分だけが操作できるか、他人にも読み書きを許すかなどを、「アクセス権」の設定によってファイル毎に自由に決められます。
これらの情報は ls -l
で確認できます。
$ ls -l
-rw-r----- 1 ogawa ogawa 4462 3 16 22:38 202003-ACL.md
-rwxr-xr-- 1 ogawa users 32 1 10 14:43 test.py
冒頭の -rw-r--r--
などがアクセス権設定、ogawa
が所有者。
202003-ACL.md
は所有グループも同名の ogawa
(ubuntuではこれが普通)、test.py
は users
が所有グループです。
アクセス権は rwx
の3文字が1セットで、これが3セット並びます。
1セット目が所有者、2セット目が所有グループ、3セット目がそれ以外に対するアクセス権を表します。
rwx
は読み取り (r
) 、書き込み (w
) 、実行 (x
) です。
-
に変わっている操作はできません。
(左端の -
にはディレクトリの場合に d
が入る。)
上の例の場合、202003-ACL.md
は、
- 所有者は読み取りと書き込みが可能。 (実行はできない)
- 所有グループ(に属する所有者以外のユーザ)は読み取りが可能。 (書き込みと実行は不可)
- その他のユーザはファイル内容への一切のアクセスが不可。
test.py
は
- 所有者は読み取り・書き込み・実行すべて可能。
- 所有グループ (に属する所有者以外のユーザ) は読み取りと実行が可能。 (書き込みは不可)
- その他のユーザは読み取りのみ可能。 (書き込みと実行は不可)
またこれらはしばしば、r=4、w=2、x=1 の足し算による3桁の8進数で表します。
202003-ALC.md
はパーミッション 640
、test.py
はパーミッション 754
です。
アクセス権設定コマンド chmod
を使い、例えば
$ chmod 700 hogehoge.py
とすれば、ファイル hogehoge.py
は自分のみ読み書き実行全て可能、他人は一切アクセス不可となります。
Ubuntuなどではホームディレクトリの初期パーミッションが 755
だったりするため、気になる場合はこのように変更するのもおすすめです。
データ共有/共同作業/共同研究がしたい
では、共同研究などで「特定の人」にだけアクセスを許すにはどうしたらいいか?
一つの方法は、一緒に作業したい仲間を含むグループを作り、ファイルの所有グループとアクセス権を適当に設定することです。 しかしグループを作るにはシステム管理者にその都度依頼しなければならず、あまり良い方法ではありません。
そこで登場するのが POSIX ACL という、上記のアクセス権に詳細な例外条項を加える仕組みです。 例えば
$ setfacl -m user:otomodachi:rwx hogehoge.py
のようにすると、他人に対するパーミッションが0のファイルでも、指定したユーザ (otomodachi
) にだけファイルの読み書き実行、全てを許可することができます。
ディレクトリに対して設定することもできます。これで共同作業や共同研究も自由自在です。
おしまい。
- 前の記事 : シェルコマンドに触れてみよう
- 次の記事 : ICA(独立成分分析)について
- 関連記事 :