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