/ var / wwwへの書き込み権限を持つchrootされたsftpユーザー


10

展開しようとしているこのセットアップについて混乱しています。皆さんの誰かが私に手を貸してくれることを願っています。

背景情報

サーバーはDebian 6.0、ext3で、Apache2 / SSLとNginxがリバースプロキシとして前面にあります。Apacheのルートディレクトリ(/ var / www)へのsftpアクセスを提供する必要があります。これは、sftpユーザーがRWX権限でそのパスにchrootされていることを確認します。

/ var / wwwのデフォルトのパーミッションを変更せずに、これらすべて。

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www

/ var / wwwの中

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 Aug 22 00:11 dir3
drwxr-x--- 5 www-data www-data    4096 Jul 15  2012 dir4
drwxr-x--- 2 www-data www-data  536576 Nov 24  2012 dir5
drwxr-x--- 2 www-data www-data    4096 Nov  5 00:00 dir6
drwxr-x--- 2 www-data www-data    4096 Nov  4 13:24 dir7

私が試したこと

  1. 新しいグループsecureftpを作成しました
  2. 新しいsftpユーザーを作成し、nologinシェルを使用して、secureftpおよびwww-dataグループに参加しました。ホームディレクトリは/
  3. sshd_configを編集
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

私はsftpユーザーでログインでき、ファイルをリストできますが、書き込みアクションは許可されません。Sftpユーザーはwww-dataグループに属していますが、/ var / wwwの権限はグループビットに対してread / read + xなの​​で、機能しません。

ACLも試してみましたが、sftpユーザーのACL RWXアクセス許可を/ var / www(ディレクトリとファイルを再帰的に)に適用すると、Unixアクセス許可も変更されるため、望ましくありません。

ここで何ができますか?

ユーザーwww-dataがsftpとしてログインできるようにして、www-dataが/ var / wwwで所有するファイル/ディレクトリを変更できるようにすることを考えていました。しかし、何らかの理由で、これはセキュリティ面での愚かな動きになると思います。


許可を変えずに可能だとは思いません。
Unnikrishnan 2013年

回答:


15

私がやったのは、ユーザーをホームディレクトリにchrootし、ホームディレクトリにユーザーへmount --bindのリンクを作成するために使用しました。

私はその後、使用setfaclを確認するためにwww-datamaintansがディレクトリに新しいファイルのパーミッションを書き込みます。この効果はに再帰し/var/wwwます。これは、実行したいことです。

g+sディレクトリを設定すると、その中に作成されたすべての新しいファイルとディレクトリは、親からグループ所有権を継承します。

useradd someuser
mkdir -p /home/someuser/www
mount --bind /var/www /home/someuser/www
chmod g+s /home/someuser/www
chown -R someuser:www-data /home/someuser/www
setfacl -d -m g::rwx /home/someuser/www

これでうまくいくはずです。

マウントを永続化する

サーバーを再起動したときに、マウントがまだ残っていることは明らかです。マウントをに追加するのと同じくらい簡単/etc/fstabです。すべてのプロバイダーがこのファイルに触れることを許可するわけではありませんが、ほとんどはそうします。

次のような行を追加するだけです。

/var/www        /home/someuser/www        none        bind        0        0

それが機能することを確認するために再起動することをお勧めします。


1
事実は、あなたがchmod g + s / home / someuser / wwwとchown someuser:www-data / home / someuser / wwwを実行すると、同じパーミッションとowner:groupも/ var / wwwに転送するということです。これは、mount --bindが原因です。どうもありがとう!
bashintosh 2013年

2
ビールはどこで払えますか?それはすべて良いようで、Apacheは/ var / wwwの所有者としてのsftp-userについて不平を言っているようには見えません。ACLの方法を実行したとき、私はあなたの解決策に非常に近かったが、私はsuidの部分を省略しました。あなたは魔法です、ありがとう!
bashintosh 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.