チームで一つのサーバーにログインして
一つのファイルをみんなで編集を行う場合には
グループ権限を活用する必要がある
その時の設定方法をまとめておく
ファイル作成時の権限
最初にユーザーが作成するファイルの権限を
グループ権限付きのものに変更するための設定を行う。
現在の権限を確認するためには
umask
を使用する。
umask
で出力される値は通常0022
だと思われる。
これは「自分以外のユーザーは書き込みを行わせない」という権限の設定になる。
以下の説明が詳しい
umaskコマンドでは、許可しないビットを指定する。従って、読み書きを行う設定(666)から設定したいパーミッションを引き算すれば、指定する値が求められる。
参照 : [ファイル新規作成時のパーミッションを変更するには] (http://www.atmarkit.co.jp/flinux/rensai/linuxtips/474deffilepermssion.html)
と、あるので、今回のような場合では
umask 002
とすれば同じグループなら書き込み、読み込みが出来るファイルを標準で作成することが出来る。
このコマンドを毎回ログインするたびに入力するのはイケテナイでの.bashrc
に記述をしておく。
echo umask 002 >> ~/.bashrc
.bash_profile
でも良いがsftp
やscreen
を使用した際には.bash_profile
は読み込まれないので
.bashrc
に設定を記述しておいた方が良い。
そして、その記述を毎回ユーザーが作られるたびに実行させるのもイケテナイので
ユーザーが作成された時に作られるファイル郡が置いてある/etc/skel
の中の.bashrc
に記述を追加しておく。
sudo sh -c "echo umask 002 >> /etc/skel/.bashrc"
ログインしなおしてumask
を打って002が表示されれば完了
グループの作成、追加
次に開発時のグループ作成、グループ指定でのユーザー作成。
グループをdev
とする
sudo groupadd dev
sudo adduser -g dev mugi
ユーザーを後からグループに追加するとき
sudo usermod -g dev mugi
グループを指定してユーザーを作成、追加する時に
-g
のオプションを付けているが
これはプライマリーのグループ指定を行っている。
これによって作成されるファイルがdev
グループで作成がされる。
プライマリーのグループでファイルが作成されるということ。
プライマリーのグループと編集時のグループを別にする場合には別途手順が必要になると思われる。
各自必要であれば調べてコメントにでも書き込んでくれると嬉しいです。
これで完了。
グループ間で同じファイルの編集が可能になる。
sambaを使用した編集時
smb.conf
でグループ権限付きでファイルが作成するように設定を書いてあげれば良い
sudo vi /etc/samba/smb.conf
# ファイル作成時のパーミッション設定
force create mode = 0664
create mask = 0664
# ディレクトリ作成時のパーミッション設定
force directory mode = 0775
directory mask = 0775
force group = dev
まとめ
ポイントとして
- グループの書き込み権限
- 指定グループでのファイル作成
が出来るようになればグループ間で同じファイルを編集することが出来る
トラブルシューティング
一人でもグループ権限が付いていない設定になっていたりすると
グループ権限が付いていないファイルが出来てしまう。
そうなるとグループの他のメンバーが書き込みすることが出来なくなるので
解決をする必要がある。
その時の助けになるであろうコマンドたち
グループ権限が付いていないファイルを表示
find . ! -perm -g+w -type f
devグループでファイルが作成されていないファイルの表示
find . ! -group dev
とりあえずディレクトリ以下のファイル全部をdevグループのユーザーが書き込めるように
sudo chmod g+w -R .
sudo chgrp -R dev .
ユーザーがどんな操作を行ったかのログの場所
sudo less /var/log/secure