複数人でwordpressを管理する際のlinuxサーバー設定について

やりたいこと

  • 複数人でwordpressを管理するために、「wordpress」ディレクトリ配下のファイルを複数人で触りたい
  • ユーザーの種類はsshユーザーとsftpユーザーを用意する
  • root権限は渡さない

行う設定

  • 各ユーザーをwordpressディレクトリを所有するユーザーのグループに入れる
  • 各ユーザーが作成したディレクトリやファイルのグループを「wordpressディレクトリを所有するユーザー」にするためにsgidを設定する
  • 各ユーザーが作成したディレクトリやファイルの権限を775に固定するためにumaskを設定する
  • sftpユーザーのためにumaskを設定する

各ユーザーをwordpressディレクトリを所有するユーザーのグループに入れる

  • 「wordpress」ディレクトリのグループを確認する
  • グループ一覧を確認する
cat /etc/group
  • ユーザーをグループに追加する
gpasswd -a USER GROUP

各ユーザーが作成したディレクトリやファイルのグループを「wordpressディレクトリを所有するユーザー」にするためにsgidを設定する

  • SGIDとは

Set Group ID
先ほどもお伝えしたが「SGID」とは「Set Group ID」の略だ。グループに対して設定される特殊パーミッションになっている。
ポイントは次の通りだ。
・ファイルにSGIDが適応されていた場合、そのグループの権限でファイルが実行される
・ディレクトリにSGIDを指定しておくと、ディレクトリ内部で作成されたファイルは全てディレクトリのSGIDで指定したグループが割り振られる
ファイルのグループIDが統一される。
グループでファイルを共有する場合、専用のSGIDなディレクトリを作成しておいて、そのなかでファイルをやりとりすれば、グループ事でシームレスなファイル共有が可能となる。

引用:https://eng-entrance.com/linux-permission-sgid

  • 「wordpress」ディレクトリ配下にsgidと権限を設定する
chmod -R 2775 wordpress

各ユーザーが作成したディレクトリやファイルの権限を775に固定するためにumaskを設定する

sshユーザーのためのumask設定

  • /etc/profileを以下のようにする
# userid199以上はumaskを002とする
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

sftpユーザーのためのumask設定

  • sftpユーザーを「sftp-user」グループにまとめる
  • /etc/ssh/sshd_configを以下のようにする
Subsystem sftp internal-sftp -u 002

Match Group sftp-user
ForceCommand internal-sftp -u 002
  • sshdの再起動
service sshd restart

参考:http://x68000.q-e-d.net/~68user/unix/pickup?umask

linuxサーバーにてsftpユーザーに対してumaskを設定する方法

問題の背景

 サーバーにSSH接続せずに作業するユーザーが複数いて、ファイルを共同で編集するという環境下において、ファイルをアップロードした際にデフォルトのパーミッションを設定しておかないと、いちいちroot権限を引っ張り出して対応しなければならなくなる。
 sftpユーザーへのumask設定は、ssh接続をするユーザーへのumask設定とはやり方が異なる。
 やりたい動きとしては、複数のsftpユーザーがそれぞれにアップロードしたファイルを、全てのユーザーが編集できるようにしたい、ということ。

問題

umaskの設定はetc/profileに記載してもsftpユーザーには効かない

対応

sshd_configにsftp用のumaskを設定する

権限が緩くなる設定なので、対象は指定したgroupに属するユーザーにのみとする

/etc/ssh/sshd_config

Subsystem sftp internal-sftp -u 002

Match Group sftp-user
ForceCommand internal-sftp -u 002

sshdの再起動

service sshd restart

sftp-userでのアップロード確認

アップロード後の権限は以下の通り

フォルダ:775
ファイル:664