Linux全般
概要 [#c2371e96]
あるディレクトリ配下で別ユーザー同士で共同作業する場合、いくつか設定をしないとAさんが作成したファイルをBさんが編集できない状態になってしまいます。
Webで公開しているディレクトリを開発者数人が共同で作業する場合を例に参考手順を記載します。
設定内容 [#q45e4edb]
user01が開発者Aのユーザーだった場合。別ユーザーにも同じ設定をする
# usermod -g apache user01
# id user01
uid=10000(user01) gid=48(apache) 所属グループ=48(apache)
ユーザーが作成するファイル・ディレクトリのパーミッションを強制的に指定する。
# vi /home/user01/.bash_profile
umask 002 <--追加して保存する。この設定ではディレクトリには実行権限が付与されますが、セキュリティ上ファイルには実行権限は付与されません。ディレクトリ作成には上位ディレクトリに対して実行権限が必要です。
Webの公開ディレクトリの所有グループと権限を一括で変更する。ここではDocumentRootが/var/www/htmlであると仮定して記載しますので、適宜変更して下さい。
# find /var/www/html -type d -exec chmod -R g+rwx {} ¥; <--所有グループへ読み書き実行を付与。
# find /var/www/html -type f -exec chmod -R g+rw {} ¥; <--所有グループへ読み書きを付与。
# chgrp -R apache /var/www/html
# chmod -R g+s /var/www/html <--SGIDを設定することでSGIDが設定されたディレクトリに作成されたファイルやディレクトリの所有グループは必ず現在のもの、ここではapacheになります。
# ls -ld /var/www/html <--所有グループを確認。
vsftpdを使用している場合 [#q2afcb7b]
FTPを使用している場合は下記設定を指定して下さい。
vsftpdでFTPユーザーが作成するファイルの初期権限(パーミッション)を変更する
SFTPを使用する場合 [#cb92cca3]
SFTPを使用している場合は下記設定を指定して下さい。 SFTPを使用した際のファイルのパーミッションを指定する
以下設定は過去にやっていたものです。参考までに [#n002ecf4]
Linuxで特定のディレクトリ配下を複数アカウントで作業を行う場合、
+共有のグループの作成 +作成するファイルに対して書き込み権限付与
以上の作業が必要です。
# useradd 共通ユーザー名(例:webadmin)
# passwd 共通ユーザー名
# vi /etc/passwd <-- 利用用途に応じて設定変更する。
変更前:共通ユーザー名:x:507:507::/home/webadmin:/bin/bash
変更後:共通ユーザー名:x:507:507::/home/webadmin:/sbin/nologin
# useradd -d /対象ディレクトリ ユーザー名
# passwd ユーザー名
# usermod -g 上で作成したユーザーの共通グループ名 追加したユーザー名
# chown -R 共通ユーザー名:共通グループ名 対象ディレクトリ