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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

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

FTP

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

nginx

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

Q&A

解決済

2回答

11128閲覧

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

96kuromame

総合スコア10

CentOS

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

FTP

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

nginx

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

0グッド

1クリップ

投稿2014/11/11 08:27

問題

お世話になっております。
複数の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

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

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

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

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

投稿2014/11/11 14:34

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

96kuromame

2014/11/12 01:27

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

2014/11/12 01:35

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

0

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

投稿2014/11/11 08:45

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

96kuromame

2014/11/11 08:54

早速の回答ありがとうございます。 > cat /etc/group でグループを確認しました。グループには参加していました。 ただ「ユーザはすべて同じグループに所属しているというのは間違いないでしょうか?」 というのは少し違いまして、すべて最初の所有権は「nignx」に持たせています。 セットユーザID で「nginx」権限で処理を行わせたいのですが、間違っているでしょうか。 ・SFTPのユーザはすべて同じグループに所属しています。 ・nginxは同じグループには所属していません。 よろしくお願いいたします。
TaMaMhyu

2014/11/11 09:10

気になっているのが、 test.php をアップロードした時に、設定してあるumaskが適用されているかなのですが… 元々のumaskの設定が異なっていて、その設定が反映されていないだけということはないでしょうか? ちなみに特定ディレクトリへのアップロード時に別ユーザ所有となるファイルを直接は作れない気がします。アップロードした後で設定し直す必要があるのではないでしょうか。
96kuromame

2014/11/11 10: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などで所有権を設定しなおしてあげないといけないんですね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問