サーバー間でファイルを転送する最も安全な方法を見つけようとしています。
私は次のアーキテクチャを持っています:
現在、ディレクトリをマウントするためにメインユーザーsalamis
を使用しています。
元のディレクトリ内のファイルは、PHPファイルマネージャーelfinder
を介して作成されます。
残念ながら、PHPを介してマウントされたディレクトリからmove
、rename
、またはdelete
のファイルを作成することはできません。許可が拒否されました。
1)www-data
の代わりにsalamis
を使用してファイルシステムをマウントしたためですか?
2)ファイルシステムをServer 2
としてwww-data
としてマウントするのは安全ですか?はいの場合、どうすればそれを達成できますか? www-data
にはパスワードがなく、su -m www-data
を使用してログインできません。 authentication failure
を取得します。
3)より良いアーキテクチャを考えられますか?
SSHFSは Fuse ファイルシステムです。これらは、ファイルシステムをマウントするユーザーとして実行されるユーザーランドプロセスによって管理されます。実行するsshfs
プロセスは、ファイルシステムドライバーとしても機能します。デフォルトでは、ほとんどのFuseファイルシステムでは、マウントするユーザーのみが内部のファイルにアクセスできます。
Sshfsを介してファイルにアクセスするには、次の3つが必要です。
上で書いたように、マウントするユーザーのみがその最後の許可を持っています。 sshfs
コマンドラインに-o allow_user
を追加することでこれを緩和できますが、他の2つの問題は解決しません。 -o allow_user
は、/etc/Fuse.conf
にuser_allow_user
が含まれている場合、またはsshfs
をルートとして実行している場合にのみ有効であることに注意してください。
server2
で、www-data
ユーザー(SSH秘密鍵へのアクセス権を付与する必要があるユーザー)としてsshfs
を実行するか、allow_user
を有効にしてローカルwww-data
必要なファイルにアクセスできます。それを行うにはいくつかの方法があります:uid
オプションを使用するか、-o default_permissions
を渡すか、-o umask 770,gid=www-data
を渡します。 allow_user
を有効にする場合、www-data
が必要以上のファイルにアクセスすることを許可しないようにし、他のユーザーがすべきことを表示または変更することを許可しないようにしてください。 't。 sshfs
をwww-data
として実行すると、単純であるという利点があります。誤って寛容になりすぎる可能性がはるかに高くなります。
問題#1の場合、www-data
のserver1
アカウントにsshするか、これらのファイルへのアクセスに使用するアカウントを許可する必要があります。 www-data
などのシステムアカウントへのリモートログインを許可しないと、監査が不十分になります(実際にアカウントを使用したユーザーがわからないため)。ただし、それは問題外ではなく、設定が多少簡単です。 www-data
アカウントへのリモートログインを許可したくない場合は、www-data
グループにsalamis
¹を追加し、server1
上のファイルシステムがacl
オプションでマウントされていることを確認してください(追加必要に応じて/etc/fstab
の関連エントリに追加)、 ACL をwww-data
のファイルに追加します。
setfacl -d -m group:www-data:rwx -R /path/to/www-root
setfacl -m group:www-data:rwx -R /path/to/www-root
¹ server1
のアカウントの場合、salamis
がserver1
のユーザーであるか、server2
のユーザーであるか、またはその両方であるかを質問から理解できませんでした。
1)はい、Gillesが答えたように、使用するログインIDは作成されたファイルのデフォルトの所有者です。これはほとんどのプロトコルに当てはまります。
2)www-dataユーザーのパスワードは正しくありません。ただし、コマンドssh-copyを使用して、www-dataに一時的なパスワードを指定し、サラミス証明書をwww-dataにコピーできます。これが完了すると、サラミはパスワードを入力せずにログインしてwww-dataとしてマウントできます。 (ssh-keygenで作成された証明書が必要です。)
3)別の可能な解決策は、2つのサーバー間でファイルをrsyncすることです。 Rsyncはssh/sftp/sshfsと同じ安全なインフラストラクチャを使用します。2で行ったようにssh-copyを使用できます。rsyncを使用すると、www-dataがサラミからファイルをフェッチできます。 ssh-copyを使用すると、同期をスクリプト化する機会が得られます。ほとんどの場合、/ etc/cron。[dayly | hourly]の1行で十分です。 Rsyncは堅牢です。salamis-serverに問題があり、アプリケーションが同期した最後のファイルで引き続き機能する場合、ネットワークによってアプリケーションの速度は低下しませんが、salamisのファイルの変更には遅延があります。 -ディレクトリおよびサーバー。また、bzrなどのVCSの使用を検討し、リポジトリからファイルを取得することもできます。これにより、ソースコードの優れたリビジョン管理が可能になります。