FreeBSDは、全ての機能がファイルという形で実現されている、ファイルにはアクセス権限が設定されていてそれがFreeBSDのセキュリティの基礎になっている、ということのようです。で、ここではファイルのアクセス権限に関連する操作をまとめます。まあ、自分用のマニュアルという側面が強いですが。
アクセス権限は、(1)誰に、(2)どういうアクセスを許可するかという形で管理されています。タイトルにファイルと書きましたが、ディレクトリ(フォルダー)も同様の設定がされています。
アクセス権限は以下の三つです。アクセス権限が一切なくてもファイル、ディレクトリの名前の表示はできます。つまり、どういうファイル、ディレクトリがあるかは分かります。
ⅰ. 読み取り権限 | この権限を与えることで
|
---|---|
ⅱ. 書き込み権限 | この権限を与えることで
|
ⅲ. 実行権限 | この権限を与えることで
|
実際に可能なことは、対象のファイルやディレクトリのアクセス権限とそれが存在するディレクトリのアクセス権限の合わせ技で決まってくるので単純に3種類というわけではなくて、上記のように若干複雑になります。
ありがちなパターンとしては、
☆ | ファイルの場合 | |
---|---|---|
・読み取りのみ | 編集することのないファイル | |
・読み取り + 書き込み | 編集することのあるファイル | |
・実行のみ | 実行するのみで削除することのないファイル | |
・書き込み + 実行のみ | 実行ファイルで削除することがありうるファイル | |
☆ | ディレクトリの場合 | |
・読み取りのみ | そのディレクトリから下の階層にはアクセスさせない | |
・読み取り + 実行 | そのディレクトリの内容を表示させるだけで、編集しない | |
・読み取り + 書き込み + 実行 | そのディレクトリの内容を編集する |
ファイルに対するアクセス権限は、以下の三つの範囲で管理します。
ⅰ. 所有者(OWNER) | ファイルなりディレクトリの持ち主です。ある特定の人間に与える権限(通常最も強い権限)をここで設定します。 |
---|---|
ⅱ. グループ(GROUP) | 所有者が所属するグループです。決まった複数の人間に与える権限をここで設定します。 |
ⅲ. その他(OTHER) | 所有者でも所属するグループにも属していないその他大勢の誰もに与える権限をここで設定します。 |
例えば、
所有者 | 読み書き可能(=内容の編集が可能) |
---|---|
グループ | 読み込みのみ可能(=内容を読むだけ) |
その他 | アクセス不許可(=内容も見せない) |
といったようなアクセス管理がこれで可能になります。
ファイルやディレクトリのアクセス権限に関連する属性の設定は、以下の方法で行います。スーパーユーザーで作業します。
以下のコマンドで設定・変更します。
# chmod (アクセス権限) (ファイル名orディレクトリ名)[ENTER]
「ファイル名orディレクトリ名」の部分は説明不要として、アクセス権限は、以下のように設定します。
たとえば、「/usr/home/information」というファイルに「所有者=全ての権限、グループ=読み取り権限のみ、その他のユーザー=アクセスさせない」という設定をする場合
# chmod 0740 /usr/home/information[ENTER]
ファイルやディレクトリの所有者は、作成したユーザーになります。これを変更したい場合は、以下のコマンドを使います。
# chown (所有者となるユーザー名) (ファイル名orディレクトリ名)[ENTER]
# chown masao /usr/home/information[ENTER]
ファイルやディレクトリのグループは、作成したユーザーが所属するグループになります。これを変更したい場合は、以下のコマンドを使います。
# chown :(設定するグループ名) (ファイル名orディレクトリ名)[ENTER]
「/usr/home/information」というファイルのグループを「family」に変更する場合、
# chown :family /usr/home/information[ENTER]
ユーザーの追加、削除、内容の変更は、以下の要領で行います。スーパーユーザーで作業します。
ユーザーを新しく登録するにはadduserコマンドを使用します。
# adduser[ENTER]
登録したユーザーを削除するにはrmuserコマンドを使用します。
# rmuser (削除するユーザー名(複数指定可))[ENTER]
# rmuser masaki masami[ENTER]
登録したユーザーを既存のグループに追加するにはpwコマンドを以下のように使用します。
# pw groupmod (ユーザーを登録するグループ名) -m (グループに登録するユーザー名(複数指定可))[ENTER]
# pw groupmod family -m masaki, masami[ENTER]
登録したユーザーを既存のグループから削除するにはpwコマンドを以下のように使用します。
# pw groupmod (ユーザーを登録するグループ名) -d (グループに登録するユーザー名(複数指定可))[ENTER]
# pw groupmod family -d masaki, masami[ENTER]
登録したユーザーのパスワードを変更するにはpasswdコマンドを使用します。
# passwd (パスワードを変更するユーザー名)[ENTER]
# passwd masaki[ENTER]
$ passwd[ENTER]
上記以外の変更を行いたい場合は、chpassコマンドを使用します。
# chpass (登録内容を変更するユーザー名)[ENTER]
Login: ユーザのログイン名
Password: ユーザの暗号化されたパスワード
Uid: ユーザの ID
Gid: ユーザのグループ ID
Class: ユーザの一般的な分類
Change: パスワードの変更時間
Expire: アカウントの有効期限
Full Name: ユーザの実際の名前
Office Location: ユーザのオフィスの場所 (1)
Office Phone: ユーザのオフィスの電話番号 (1)
Home Phone: ユーザの自宅の電話番号 (1)
Other Information: ユーザに関するローカル定義情報 (1)
Home Directory: ユーザのホームディレクトリ
Shell: ユーザのログインシェル
登録したユーザーの一覧を参照する場合は、/etc/passedファイルを開きます。一例ですが、コマンドプロンプトで以下のコマンドを打ちます。
# less /etc/passwd[ENTER]
グループの追加、削除、名前の変更は、以下の要領で行います。
グループを新しく登録するにはpwコマンドを以下のように使用します。
# pw groupadd (追加するグループ名)[ENTER]
# pw groupadd fanily[ENTER]
登録したユーザーを削除するにはpwコマンドを以下のように使用します。
# pw groupdel (削除するユーザー名(複数指定可))[ENTER]
# pw groupdel family[ENTER]
以下のコマンドで登録したユーザーを維持したままグループ名が変更できます。
# pw groupmod (現在のグループ名) -l (新しいグループ名)[ENTER]
# pw groupmod family -l masagroup[ENTER]
以下のコマンドでグループに登録されたユーザーの一覧を確認できます。
# pw groupshow (現在のグループ名)[ENTER]
# pw groupshow family[ENTER]
登録したグループの一覧を参照する場合は、/etc/groupファイルを開きます。一例ですが、コマンドプロンプトで以下のコマンドを打ちます。
# less /etc/group[ENTER]
なお、このページを書くに当たって、以下の記事を参考にしました。
(2018年 9月 7日 記)