質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • CentOS

    2633questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • nginx

    815questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • FTP

    313questions

    FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

SFTPで複数のアカウントによる所有権とアップロードの問題

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 3,938

96kuromame

score 5

 問題

お世話になっております。
複数のSFTPアカウントでアップロードした場合に権限がないと言われてしまい、上書きできない状態です。
色々調べてやってみたのですが、わからないので教えていただけないでしょうか。

権限などは以下のように設定しました。

 パーミッション

/var/www/html root:root drwxr-xr-x
/var/www/html/hogehoge.hoge.com/ nginx:sftponly drwxrwsr-x
chown -R nginx:sftponly /var/www/html/*
find /var/www/html/* -type d -print | xargs chmod 2775
find /var/www/html/* -type f -print | xargs chmod 0664

 ファイルアップロード後のパーミッション

test.php user sftponly -rw-r--r-- 

※ドメインのディレクトリを複数のアカウントで管理します。

 編集ファイル

/etc/ssh/sshd_config
Subsystem sftp internal-sftp -u 002
Match group sftpgroup
ChrootDirectory /var/www/html

/etc/sysconfig/nginx
umask 002

 サーバ環境

  • CentOS
  • Nginx
  • WordPress
  • PHP

 ローカル環境

Mac OS 10.9
ターミナル
Coda2 Transmit Flow
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

アップロードしたファイルのパーミッションが g+w にならないのは SFTPクライアントがアップロード後に自動で chmod で落としてしまっている可能性はないでしょうか。

サーバー側の設定は問題ないと思います。

(2014/11/12 追記)
umask はパーミッションを落とす方向に作用しますので、元のファイルが 666 ならアップロードしたファイルは 664 になりますが、元が 644 なら 644 のままです。
なので、SFTPクライアント側であらかじめ g+w としておくか、SFTPクライアントの設定でアップロード後に chmod する必要があります。

また、コンテンツのオーナーについて、TaMaMhyu さんのご指摘のとおり、SFTP では変更できません。
逆に nginx から見て read-only の方が安全だと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2014/11/12 10:27

    解決しました。
    FTPクライアントの問題だったんですね。ありがとうございました。

    キャンセル

  • 2014/11/12 10:35

    クライアントの問題とすると、SFTPで転送するより前に権限を設定しておくか、SFTPクライアントでchmodを実行するかということになりますね。

    キャンセル

+1

すべての設定を済ませた状態(設定反映に再起動やリロードが必要であればそれも済ませた状態)で最初のアップロードを行ったのでしょうか?
見たところアップロードされたファイルにはグループの書き込み権がないようですが…
アップロードするユーザはすべて同じグループに所属しているというのは間違いないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2014/11/11 17:54

    早速の回答ありがとうございます。

    > cat /etc/group
    でグループを確認しました。グループには参加していました。
    ただ「ユーザはすべて同じグループに所属しているというのは間違いないでしょうか?」
    というのは少し違いまして、すべて最初の所有権は「nignx」に持たせています。
    セットユーザID で「nginx」権限で処理を行わせたいのですが、間違っているでしょうか。

    ・SFTPのユーザはすべて同じグループに所属しています。
    ・nginxは同じグループには所属していません。

    よろしくお願いいたします。

    キャンセル

  • 2014/11/11 18:10

    気になっているのが、
    test.php
    をアップロードした時に、設定してあるumaskが適用されているかなのですが…
    元々のumaskの設定が異なっていて、その設定が反映されていないだけということはないでしょうか?

    ちなみに特定ディレクトリへのアップロード時に別ユーザ所有となるファイルを直接は作れない気がします。アップロードした後で設定し直す必要があるのではないでしょうか。

    キャンセル

  • 2014/11/11 19:19

    そうなんですよね。
    umaskが反映されていないんです。
    nginxとsshdは再起動し、以下のように設定をしました。

    > /etc/sysconfig/nginx
    追記 umask 002

    > /etc/ssh/sshd_config
    Subsystem sftp internal-sftp -u 002

    Match group sftponly
    ChrootDirectory /var/www/html/
    X11Forwarding no
    AllowTcpForwarding no
    PasswordAuthentication yes
    ForceCommand internal-sftp -u 002

    設定のミスや手順を抜かしているのだと思うのですが、わかりません。

    そういったことをやりたい場合はcronなどで所有権を設定しなおしてあげないといけないんですね。ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • CentOS

    2633questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • nginx

    815questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • FTP

    313questions

    FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。