web-dev-qa-db-ja.com

SFTPユーザーのファイル/ディレクトリ権限

1.5週間前のDebian6 VPSでSSHを頻繁に使用した後、SFTPを介してファイルのアップロードを開始したいと思いました。私はすでにそれを以前に試しましたが、rootアカウントを使用しましたが、セキュリティの変更により、SSHではこれを行うことができなくなりました。

だから私は別のユーザーを作りました、彼をsftpuserと呼びましょう、彼はグループに属していますsftp。彼はsshd_configに特別なエントリを取得しました。

Match Group sftp
    ChrootDirectory /var/www
    ForceCommand internal-sftp
    PasswordAuthentication yes

したがって、彼は幸運であり、接続するためにキーファイルを必要としませんが、彼は/ var/wwwに制限されています。まあ、それはうまくいきます、私は完全にログインしてそこにあるすべてのファイルを見ることができます。しかし、それらはrootユーザーが所有しているため、何もアップロードできず、非常に役に立たなくなります。

ファイルパーミッションの荒野を旅する中で、8進数の組み合わせと奇妙な回避策をたくさん読みましたが、完全に適合するものは何もありません。私が正しく理解している場合、chmodは特定のユーザーがディレクトリを書き込み可能にするためにのみ使用できます(この場合、root)。 、group(推測、rootこの場合は\ o /)など。 PHP-FPMとnginxの両方を壊さずにこの問題を修正しなければならなかった「最善の」アイデアは、sftpuserrootグループ。悪い考えだと思っていたとしても、sftpuserのように、大混乱を引き起こすことはないはずです。 chrootされ、シェルを開くことができません。しかし、それでもうまくいきませんでしたsftpuserを使用しても、そこにファイルを書き込むことができませんでしたrootグループ。

とは言っても、自分の目的に合った適切なものを見つけるのに本当に役立つでしょう。私がここで書いたようなテキストの壁を期待するのではなく、正しい方向に向けるためのちょっとしたヒントです。

3
Big-Blue

私がしたことは、rootが所有する必要があり、次の権限と所有権を持つsftpuserのホームボリューム(/ sftphomeと呼びましょう)を作成することでした。

/ sftphome

drwxr-xr-x    root root

次に、sftpuserのsftpホームディレクトリもrootが所有する必要があります。

/ sftphome/sftpuser

drwxr-xr-x    root root

次に、sftpuserがアップロードおよびダウンロードできるディレクトリを作成します。

/ sftphome/sftpuser/upload

drwx------  sftpuser sftpuser

もちろん/ sftphomeが正しく設定されていることを確認してください:

ChrootDirectory /sftphome

この結果、sftpuserがsftpサーバーにログインすると、このユーザーは/ sftphome/sftpuserに転送されます。ファイルをアップロードおよびダウンロードできるようにするには、アップロードにcdする必要があります。

2
aseq