ファイルを読み書きさせたいユーザが複数いる場合に、ユーザグループを作って権限を付与させる方法の備忘録です。
以下は、今回のシチュエーションです。
- 企業NのUbuntuサーバにアクセスできるユーザが4つある(sudo実行権あり管理用「userX」1個、一般ユーザA〜C「userA〜C」計3個)
- ある特定のディレクトリに、一般ユーザA、一般ユーザBのみ書き込み権限を付与したい(その他は読み取りと実行のみ許可。ユーザCは故意にファイルを書き込めないようにする)
- パーミッション777(=その他ユーザ含む誰でもファイルを書き込める)は避けたい(危ない)。
この記事に記載のコマンドは、rootまたはsudo実行権のあるユーザ(「userX」)で実行するものとして書いています。
ユーザグループの作成
$ sudo groupadd -g GID GROUP
例
$ sudo groupadd -g 99 group1
作成したグループへユーザを追加
-aG
オプションでユーザを追加する(-a -G
と同等)。-G
のみで実行すると、対象ユーザの所属グループがすでにあった場合追加せずに置き換えてしまうので注意。
$ sudo usermod -aG GROUP USER
例
$ sudo usermod -aG group1 userA
$ sudo usermod -aG group1 userB
...
ファイル/ディレクトリの所有権変更
ディレクトリそのものの所有者をユーザAにしておき、グループの所属をgroupAにする場合。
-R
で再帰的にサブディレクトリの所有権も変更。
$ sudo chown OWNER:GROUP FILE/DIRECTORY
例
$ sudo chown userA:group1 /hoge/dir/ -R
ファイル/ディレクトリのパーミッションを変更
group1に所属するユーザのみ読み書き実行可能にする。その他のユーザ(ユーザCなど)には書き込ませない。
パーミッションは8進数で記述。
- 読み取り(r):4
- 書き込み(w):2
- 実行(x):1
付与したい内容を加算し、所有者・グループ・その他の順で8進数を繋げる。
$ sudo chmod PERMISSION FILE/DIRECTORY
例
$ sudo chmod 755 /hoge/dir/ -R
補足:ls -l
コマンドでパーミッション変更が反映されたか確認し、パーミッションが755のファイルであれば「-rwxrwxr-x」、ディレクトリであれば「drwxrwxr-x」と表示される。