アップロードしたファイルはすべて使用できない権限を持っています

アップロードしたファイルはすべて使用できない権限を持っています

新しいサーバーに移動したばかりですが、奇妙な権限の問題が発生しました。

アップロードするすべてのファイルには権限 600 が付与され、ユーザー アカウントによって所有され、同じグループに属しています。この権限では、サーバーはこれらのファイルを変更できません。

アップロード先のフォルダー(通常の sftp 経由)の権限は 755 です。

ここにアップロードした新しいファイルに 600 の権限が付与されるのはなぜですか? また、追加されたファイルに Web サーバーで変更できる権限が付与されるようにするには、どうすればよいでしょうか?

注記: デフォルトのumaskを決定する設定があるvsftpdをインストールしました。これを使ってログインするとFTP期待通りに動作します。ただし、ログイン時に問題は解決されません。sftp

答え1

これに対する私の基本的な解決策は、SSH と SFTP の間に位置し、ユーザーがログインするときに umask を変更するスクリプトを作成することです。

> vim /opt/sftp-server.sh

#!/bin/bash
umask 022
/usr/libexec/openssh/sftp-server

次に、ssh_d 構成ファイル (/etc/ssh/sshd_config) を編集し、sftp SubSystem 行を編集してスクリプトを指定します。

Subsystem       sftp    /opt/sftp-server.sh

新しいスクリプトに権限が正しく設定されていることを確認してください。

> chmod 755 /opt/sftp-server.sh

これで、SFTP 経由でアップロードされたファイルの権限は 755 になります。

http://blog.mrmason.net/2009/05/27/changing-default-file-permissions-for-sftp/

答え2

sftp-server は、openssh で一般的に使用される sftp サブシステムです。

コマンドを詳しく調べてみると、次のようになります。

$ /usr/lib/openssh/sftp-server -h
usage: sftp-server [-ehR] [-f log_facility] [-l log_level] [-u umask]

したがって、初期化時に -u スイッチを渡すことで、接続のデフォルトの umask を設定できます。sftp/etc/ssh/sshd_configサブシステムが定義されている場所で、次の行を見つけます。

Subsystem sftp /usr/lib/openssh/sftp-server

次のように変更します。

Subsystem sftp /usr/lib/openssh/sftp-server -u 0022

作成されたファイルにデフォルトのumask 644と755のファイルを許可するには

この設定はグローバルであり、sftp 経由で転送されるすべてのファイルに影響するため、実装する前にセキュリティを考慮してください。

関連情報