↑ 「FreeBSDで遊ぼう」のページへ

↑ トップページへ

★ [SilverSackの自画自賛] FreeBSDで遊ぼう

★

  操作マニュアル - 1. ファイル等のアクセス権限とユーザー管理(FreeBSD 11.1~11.2)


FreeBSDは、全ての機能がファイルという形で実現されている、ファイルにはアクセス権限が設定されていてそれがFreeBSDのセキュリティの基礎になっている、ということのようです。で、ここではファイルのアクセス権限に関連する操作をまとめます。まあ、自分用のマニュアルという側面が強いですが。

  1. ファイルのアクセス権限の概要
  2. アクセス権限の管理
  3. ユーザーの管理
  4. グループの管理

  1. ファイルのアクセス権限の概要
  2. アクセス権限は、(1)誰に、(2)どういうアクセスを許可するかという形で管理されています。タイトルにファイルと書きましたが、ディレクトリ(フォルダー)も同様の設定がされています。

    1. アクセス権限の種類
    2. アクセス権限は以下の三つです。アクセス権限が一切なくてもファイル、ディレクトリの名前の表示はできます。つまり、どういうファイル、ディレクトリがあるかは分かります。

      ⅰ. 読み取り権限 この権限を与えることで
      • (ファイル)そのファイルの内容を表示できます(対象のファイルがあるディレクトリの実行権限も必要)
      • (ディレクトリ)そのディレクトリの中のファイルやディレクトリの一覧が表示できます(対象のディレクトリがあるディレクトリの実行権限も必要)
      ⅱ. 書き込み権限 この権限を与えることで
      • (ファイル)そのファイルの内容を編集できます(対象のファイルがあるディレクトリの実行権限も必要)
      • (ファイル)そのファイルを削除できます(対象のファイルがあるディレクトリの書き込み権限および実行権限も必要)
      • (ディレクトリ)そのディレクトリに新規にファイルやディレクトリを作成できます(対象のディレクトリがあるディレクトリの実行権限も必要)
      • (ディレクトリ)そのディレクトリのファイルやディレクトリを削除できます(対象のファイルやディレクトリの実行権限も必要)
      • (ディレクトリ)そのディレクトリを削除できるようになります(対象のディレクトリがあるディレクトリの書き込み権限および実行権限も必要)
      ⅲ. 実行権限 この権限を与えることで
      • (ファイル)そのファイルを実行することができます(対象のファイルがあるディレクトリの実行権限も必要)
      • (ディレクトリ)そのディレクトリの中のファイルやディレクトリにアクセスできます(対象のディレクトリがあるディレクトリの実行権限も必要)

      実際に可能なことは、対象のファイルやディレクトリのアクセス権限とそれが存在するディレクトリのアクセス権限の合わせ技で決まってくるので単純に3種類というわけではなくて、上記のように若干複雑になります。

      ありがちなパターンとしては、

      ファイルの場合
      ・読み取りのみ 編集することのないファイル
      ・読み取り + 書き込み 編集することのあるファイル
      ・実行のみ 実行するのみで削除することのないファイル
      ・書き込み + 実行のみ 実行ファイルで削除することがありうるファイル
      ディレクトリの場合
      ・読み取りのみ そのディレクトリから下の階層にはアクセスさせない
      ・読み取り + 実行 そのディレクトリの内容を表示させるだけで、編集しない
      ・読み取り + 書き込み + 実行 そのディレクトリの内容を編集する
      といったものに集約されるのではないかと思います。
    3. 権限を付与する対象の種類
    4. ファイルに対するアクセス権限は、以下の三つの範囲で管理します。

      ⅰ. 所有者(OWNER) ファイルなりディレクトリの持ち主です。ある特定の人間に与える権限(通常最も強い権限)をここで設定します。
      ⅱ. グループ(GROUP) 所有者が所属するグループです。決まった複数の人間に与える権限をここで設定します。
      ⅲ. その他(OTHER) 所有者でも所属するグループにも属していないその他大勢の誰もに与える権限をここで設定します。

      例えば、

      所有者 読み書き可能(=内容の編集が可能)
      グループ 読み込みのみ可能(=内容を読むだけ)
      その他 アクセス不許可(=内容も見せない)

      といったようなアクセス管理がこれで可能になります。

  3. アクセス権限の管理
  4. ファイルやディレクトリのアクセス権限に関連する属性の設定は、以下の方法で行います。スーパーユーザーで作業します。

    1. アクセス権限の設定
    2. 以下のコマンドで設定・変更します。

       # chmod (アクセス権限) (ファイル名orディレクトリ名)[ENTER]

      「ファイル名orディレクトリ名」の部分は説明不要として、アクセス権限は、以下のように設定します。

      • 「0400」といった4けたの数字で設定します。(他の方法は、ここでは省きます)
      • 千の位は、「0」にします。(1,2,4も設定可能ですが、詳細はここでは省きます。)
      • 百の位は、所有者のアクセス権限です。
      • 十の位は、グループのアクセス権限です。
      • 一の位は、その他のユーザーのアクセス権限です。
      • 下三桁は、読み取り権限 = 4、書き込み権限 = 2、実行権限 = 1として、設定する権限の数字を足します。何の権限も与えなければ0、全ての権限を与えれば7 (4+2+1)、読み取りと書き込み権限を与えれば6 (4+2)、読み取りと実行権限を与えれば5 (4+1)、読み取り権限だけなら4になります。

      たとえば、「/usr/home/information」というファイルに「所有者=全ての権限、グループ=読み取り権限のみ、その他のユーザー=アクセスさせない」という設定をする場合

       # chmod   0740   /usr/home/information[ENTER]
      となります。ディレクトリの権限を設定する際に-Rオプションを指定するとそのディレクトリの傘下の全てのディレクトリ、ファイルの権限も一緒に変更します。その他のフラグはここでは省きます。

    3. 所有者の設定
    4. ファイルやディレクトリの所有者は、作成したユーザーになります。これを変更したい場合は、以下のコマンドを使います。

       # chown   (所有者となるユーザー名)   (ファイル名orディレクトリ名)[ENTER]
      「/usr/home/information」というファイルの所有者を「masao」に変更する場合、
       # chown   masao   /usr/home/information[ENTER]
      となります。なお、chownにはオプションフラグも設定できますが、ここでは省きます。

    5. グループの設定
    6. ファイルやディレクトリのグループは、作成したユーザーが所属するグループになります。これを変更したい場合は、以下のコマンドを使います。

       # chown   :(設定するグループ名)   (ファイル名orディレクトリ名)[ENTER]
      グループ名の前に「:(コロン)」をつけます。

      「/usr/home/information」というファイルのグループを「family」に変更する場合、

       # chown   :family   /usr/home/information[ENTER]
      となります。

  5. ユーザーの管理
  6. ユーザーの追加、削除、内容の変更は、以下の要領で行います。スーパーユーザーで作業します。

    1. ユーザーの追加
    2. ユーザーを新しく登録するにはadduserコマンドを使用します。

       # adduser[ENTER]
      後は、各項目の入力を促されますので、それに従って入力してください。コマンドの引数を使う方法、オプションフラグについては、ここでは省きます。

    3. ユーザーの削除
    4. 登録したユーザーを削除するにはrmuserコマンドを使用します。

       # rmuser   (削除するユーザー名(複数指定可))[ENTER]
      masaki、masamiの2名のユーザーを削除する場合は以下のようになります。
       # rmuser   masaki masami[ENTER]
      なお、オプションフラグも設定できますが、ここでは省きます。複数ユーザーを指定するときはスペースで区切ります。

    5. ユーザーのグループへの登録
    6. 登録したユーザーを既存のグループに追加するにはpwコマンドを以下のように使用します。

       # pw groupmod   (ユーザーを登録するグループ名) -m (グループに登録するユーザー名(複数指定可))[ENTER]
      masaki、masamiの2名のユーザーをfamilyグループに追加する場合は以下のようになります。複数ユーザーを指定するときはカンマで区切ります。
       # pw groupmod   family -m masaki, masami[ENTER]

    7. ユーザーのグループからの削除
    8. 登録したユーザーを既存のグループから削除するにはpwコマンドを以下のように使用します。

       # pw groupmod   (ユーザーを登録するグループ名) -d (グループに登録するユーザー名(複数指定可))[ENTER]
      masaki、masamiの2名のユーザーをfamilyグループから削除する場合は以下のようになります。複数ユーザーを指定するときはカンマで区切ります。
       # pw groupmod   family -d masaki, masami[ENTER]

    9. ユーザーのパスワードの変更
    10. 登録したユーザーのパスワードを変更するにはpasswdコマンドを使用します。

       # passwd   (パスワードを変更するユーザー名)[ENTER]
      masakiのパスワードを変更する場合は以下のようになります。
       # passwd   masaki[ENTER]
      古いパスワードの入力を求められますので、入力すると新しいパスワードを入力する画面が表示されます。
      なお、ユーザーが自分のパスワードを変更する場合は、自分のユーザーでログインした状態で
       $ passwd[ENTER]
      と入力します。なお、オプションフラグも設定できますが、ここでは省きます。

    11. その他の登録内容の変更
    12. 上記以外の変更を行いたい場合は、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:       ユーザのログインシェル
      なお、オプションフラグも設定できますが、ここでは省きます。ここで立ち上がるエディタはViですので、ウィンドウズのエディタの操作方法とは大きく異なります。以下のような手順で編集できます。
      1. 矢印キーで追記したい箇所にカーソルを移動する。
      2. iキー(挿入モードへの変更)を押して、追加したい内容を入力する。
      3. ESCキーでコマンドモードに戻る。
      4. 矢印キーで削除したい箇所にカーソルを移動する
      5. xキー(1文字削除)を押して、削除したい内容を削除する。
      6. 上記を繰り返して、編集する。
      7. :wqキーを押して、保存終了する。

    13. ユーザー一覧の参照
    14. 登録したユーザーの一覧を参照する場合は、/etc/passedファイルを開きます。一例ですが、コマンドプロンプトで以下のコマンドを打ちます。

       # less /etc/passwd[ENTER]

  7. グループの管理
  8. グループの追加、削除、名前の変更は、以下の要領で行います。

    1. グループの追加
    2. グループを新しく登録するにはpwコマンドを以下のように使用します。

       # pw groupadd   (追加するグループ名)[ENTER]
      familyというグループを追加する場合は以下のようになります。
       # pw groupadd   fanily[ENTER]
      なお、このコマンドプロンプトの後に「-m (ユーザー名)」とするとグループの新規作成とそのグループへのユーザーの登録を一度に行えます。

    3. グループの削除
    4. 登録したユーザーを削除するにはpwコマンドを以下のように使用します。

       # pw groupdel   (削除するユーザー名(複数指定可))[ENTER]
      familyというグループを削除する場合は以下のようになります。
       # pw groupdel   family[ENTER]

    5. グループ名の変更
    6. 以下のコマンドで登録したユーザーを維持したままグループ名が変更できます。

       # pw groupmod   (現在のグループ名) -l (新しいグループ名)[ENTER]
      familyというグループをmasagroupという名前に変更する場合は以下のようになります。
       # pw groupmod   family -l masagroup[ENTER]

    7. グループのメンバーの確認変更
    8. 以下のコマンドでグループに登録されたユーザーの一覧を確認できます。

       # pw groupshow   (現在のグループ名)[ENTER]
      familyというグループのメンバーを確認する場合は以下のようになります。
       # pw groupshow   family[ENTER]

    9. グループ一覧の参照
    10. 登録したグループの一覧を参照する場合は、/etc/groupファイルを開きます。一例ですが、コマンドプロンプトで以下のコマンドを打ちます。

       # less /etc/group[ENTER]

[その他の情報]

なお、このページを書くに当たって、以下の記事を参考にしました。

(2018年 9月 7日 記)