Linuxのユーザーと権限発行(グループとユーザー)

2017.10.26 (木)

WEBやシステムの開発で複数のユーザーが同じコンテンツを制作する場合があります。そのような場合はユーザーにグループを紐付けて権限の調整を行います。(ってそんな必要あるんですかね。仕事ではやたらにやりますが。)
user01は/home/user01/のファイルの読み書き実行のパーミッションがあります。その中の/home/user01/foo/だけuser02が読み書き実行の権限があり、その他のディレクトリは読みのみというような設定をしてみます。

  • user: user01 (/home/user01/*の読み書き実行権限(デフォルト))
  • user: user02 (/home/user01/foo/*のみ読み書き実行権限)
  • group: group01 (共有箇所の権限を設定するグループ)

ユーザー作成

useradd user02
passwd user02
:xxxxxxxx

ユーザーディレクトリのパーミッションは700

drwx------  7 user02 user02 4096 10月 26 09:49 2017 user02

idを確認

id user02
uid=xxx(user02) gid=xxx(user02) groups=xxx(user02)

公開鍵登録

user02のユーザー権限で行います。

su user02
cd ~
mkdir -m 700 .ssh
touch authorized_keys
chmod 600 authorized_keys
cat stylement_rsa.pub >> authorized_keys

IPアドレスの許可(rootで)

必要があればuser02の接続元のIPアドレスをhosts.allowに追加

vi /etc/hosts.allow

iptablesの場合もしかり

vi /etc/sysconfig/iptables
※iptables再起動

接続確認

問題なければ接続できます。

ssh user02@example.com -p 22 -i /KEYPATH

グループの作成

groupadd group01

グループが追加されたか確認

tail -1 /etc/group

ユーザーにグループを紐付ける

usermod -g group01 user02
id user02
uid=0(user02) gid=0(user02) groups=0(group01)

デフォルトのグループがgroup01に変更されています。

指定のディレクトリ以下のディレクトリとファイルにパーミッションを与える

通常のディレクトリパーミッションが755、ファイルが644になっていると想定すると、共有するディレクトリ・ファイル群は、

DIR: 775
FILE: 664

で設定することになります。
またこれらのファイルも同様にグループを与えてあげます。

chgrp -R group01 /home/user01/foo/*
find /home/user01/foo/* -type f -print | xargs chmod 664
find /home/user01/foo/* -type d -print | xargs chmod 775