戻る

ユーザーとグループ, ファイルの権限の設定

Oct 31, 2020

サーバーではセキュリティ上rootユーザーになんでもやらせるのではなく, アプリケーションごとにユーザーを用意して権限を管理する方法が一般的だ. 例えばwebサーバーではあるディレクトリにだけ書き込み権限を許可したりする.

ユーザー, グループの管理

まずユーザー, グループを確認するには /etc/passwd /etc/group を見れば良い.

ユーザーを追加するにはuseraddを使う. -mでホームディレクトリ生成


useradd -m zaief 

ユーザーを削除するにはuserdelを使う. -rでホームディレクトリ, メールスプール(/var/log/mail/ユーザー名)も削除


userdel -r zaief

パスワードを設定するにはpasswdを使う. passwdのみだとログインユーザーのパスワード変更, passwd ユーザー名 で指定したユーザー名のパスワード変更.


passwd zaief

グループを作成するにはgroupadd, グループ削除にはgroupdelを使う.


groupadd www
groupdel www

グループ名やIDを変更するにはgroupmodを使う. -nで名前変更, -gでID変更


groupmod -n newgroup oldgroup
groupmod -g 1111 somegroup

ファイルの権限の管理

ファイルに対しては, 所有権, 操作権限によってユーザーに対するファイル操作の権限が決まる.

ファイルの所有権

ls -l でユーザー名:グループ名 というようにファイルごとに所有権がどうなっているのかがわかる.

chownで所有権変更. ユーザーをzaief, グループをwwwに変更.


chown zaief:www somefile 

ディレクトリに対しては, -Rオプションを使うことでディレクトリ以下のファイルの所有権全てを一括で変更できる.


chown -R zaief:www somedir

ファイルにSGIDを設定すると, そのグループの所有権でファイルを実行する. ディレクトリにSGIDを設定すると, ディレクトリ内部で作成されたファイルはSGIDで指定したグループとして所有権が割り当てられる. ls -lをすると, SGIDが設定されたファイルやディレクトリはdrwxr-s-r-xのように, sという権限がグループの実行権限として出てくる.

chmodでディレクトリのSGIDを設定できる.


chmod 2755 somedir

またはg+sオプションでも設定できる.


chmdo g+s somedir

SGID権限を剥奪したい場合は, 755で指定する, もしくはg-sオプションを使う.


chmod 755 somedir
もしくは
chmod g-s somedir

SGIDなファイルを探すには:


find / -perm -2000

SGIDについてはLinux: SUID、SGID、スティッキービットまとめ が参考になる.

操作権限

ファイルやディレクトリの操作権限は rwxrwxrwx で表示され, ユーザー, グループ, その他のユーザーの操作権限を表している. chmodなどでは777のように3つの数字(8進数)で指定する. よく使う数字は7, 5, 4で, 7は全て許可, 5は読み込み, 実行を許可, 4は読み込みのみ許可.

chgrp(change group)はグループ, chmod(change mode)はディレクトリのアクセス権をそれぞれ変更する.

chmodは数字でよく指定する. -Rをつけるとディレクトリごと変更.


chmod 755 hoge.txt 
chmod -R 755 somedirectory