Linuxサーバーでディレクトリにアクセス出来るユーザーを制限する方法です。
- アクセスを許可するグループを作成
- アクセスを許可するユーザーをグループに追加
- アクセス制限をかけるディレクトリのパーミッションを変更
__以降の作業はsudo権限の付与されたユーザーでしか行えません。 __
以降のコマンドで実行エラーが出る場合はsudoで実行してください。
アクセスを許可するグループを作成します。
groupadd グループ名
ex)group1を追加
groupadd group1
上記はGID(グループID)が自動で付与されます。
任意のGIDを指定する場合はこちら(重複は出来ない)
groupadd -g GID グループ名
ex)GID 520 と指定
groupadd -g 520 group1
tail -1 /etc/group
最後に追加されたものが表示
group1:x:520:
不要になった場合、間違えた場合なそ
groupdel グループ名
ex)group1を削除
groupdel group1
http://kazmax.zpp.jp/linux_beginner/etc_group.html http://kazmax.zpp.jp/linux_beginner/groupadd.html http://kazmax.zpp.jp/linux_beginner/groupdel.html
アクセスを許可するユーザーを上記のグループに追加します。
id -a ユーザー名
uid=ユーザーID gid= グループID(グループ名) groups= 所属グループのID(所属グループ名)
ex)ユーザーtest001を確認
id -a test001
uid=1022(test001) gid=1022(test001) groups=1022(test001)
ex)ユーザーtest001のサブグループにgroup1追加
usermod -aG group1 test001
ユーザー情報の確認するとgroup1が追加されています。
id -a test001
uid=1022(test001) gid=1022(test001) groups=1022(test001),1021(group1)
http://kazmax.zpp.jp/linux_beginner/usermod.html
パーミッションを変更し、指定したグループに入っているユーザーのみアクセスなど一連の行動(読み込み、書き込み、実行)を可能にします。
ディレクトリのグループは何もしなければ作成したユーザーのグループになります。 そのため作成したグループに変更します。
ex) testディレクトリにgroup1に変更する
# chown [所有者]:グループ名 ディレクトリ 名
chown user1:group1 test
# chown [所有者]を省略:グループ名 ディレクトリ 名
chown :group1 test
http://kazmax.zpp.jp/linux_beginner/chown.html
グループのメンバーに読み書き実行の権限を付与
chmod g+rwx test
その他(所有者とグループにも入っていないユーザー)の全ての権限を無くす
chmod o-rwx test
パーミッションが以下のようになっている事を確認する
drwxrwx---
「ls -l」コマンドで確認すると以下のようになっています。
drwxrwx--- 2 user001 group1 4096 10月 5 15:08 test
↑上記は testディレクトリ user001が所有者 グループgroup1 その他については割愛します。
アクセス権(パーミッション)の変更 - chmod http://kazmax.zpp.jp/linux_beginner/chmod.html
ディレクトリはグループへのアクセスのみを許可していますので 追加したグループにログインする必要があります。
ログイン前のユーザー情報は以下のようになります。
id -a test001
uid=1022(test001) gid=1022(test001) groups=1022(test001),1021(group1)
追加したグループでログイン
newgrp group1
ログイン後、gidが変更されます。
id -a test001
uid=1022(test001) gid=1021(group1) groups=1022(test001),1022(test001)
グループから抜ける場合
exit
ログイン前のユーザー情報に戻ります。
id -a test001
uid=1022(test001) gid=1022(test001) groups=1022(test001),1021(group1)
グループに追加していないユーザーに切り替えアクセス出来ない事(Permissionエラー)を確認し終了。
ex) アクセス権限の無いユーザーで制限をかけているディレクトリ(ここではtest)にcdコマンドを実行
bash: cd: test: Permission denied