いくつかのWebサイトをホストしているubuntu 12.04アプリサーバーがあります。いずれかのWebサイトにのみファイルをアップロードできるようにするには、開発者にアクセス権を与える必要があります。 Jailkitをインストールしましたが、sFTPにWebサイトディレクトリへのアクセスを許可する方法を見つけることができません。
これが私たちのウェブディレクトリ構造です:
/var/www/website.com/htdocs/ /var/www/someotherwebsite.com/htdocs/ /var/www/website3.com/htdocs/すべてwww-data:www-dataが所有
誰かが私にユーザーにsFTP経由でこれらのディレクトリの1つまたは2つだけにアクセスを許可し、sshアクセスを許可しないようにするためのいくつかのステップバイステップを与えることができますか?
一般的に、これは、遭遇する理由により実用的なディレクトリ構造ではありません。 Webサイトが1つしかない場合は、/ var/wwwディレクトリが適切な場合があります。ただし、20年以上の私の経験では、ホームパーティションをnosuid、noexec、nodevなどにマウントできるように、別のホームパーティションを作成するのが最善のアプローチです。各Webサイトには、独自のシステムユーザーアカウントがあります。そのアカウントには、sftpを許可するがsshを許可しないシェル、rsshが与えられます。これは、ホスティング時、開発者の採用時、またはセキュリティの観点からも実用的です。
これだけ書いたら、1つの解決策が明らかになります。サイトをユーザーアカウントディレクトリに移動し、Webサーバーの構成を更新します。これは、サブドメインにWebサイトのコピーを作成することで安全に行うことができます。たとえば、www.website.comというドメインの場合、test.website.comというCNAMEを作成します。 test.website.comのサイトが機能していることを確認します。次に、Webサーバーの構成ファイルを更新して、問題がないことがわかったら、www.website.comが新しい場所を指すようにします。
この時点で、sFTPを介して、この心配をすることなく、誰にでもアクセスを提供できます。
しかし...要点を得て、質問に答えるには、あまり明白ではないが効果的な解決策はACLを使用することです。 ACLを使用すると、ファイルシステムのアクセス許可をより細かく制御できます。 ACLを使用すると、必要な制限を提供できます。
最初に行うことは、ACLソフトウェアをインストールすることです。
Sudo apt-get install acl
次に行うことは、ACLオプションを使用してファイルシステムをマウントまたは再マウントすることです。
Sudo -e /etc/fstab
このような行が表示される場合があるので、aclオプションを追加します。
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,acl 0 1
保存して終了します。 ACLを有効にして再マウントします。
Sudo mount -o remount,acl /
この後、ACLにアクセスできるようになります。 help.ubuntu.com にACLのガイドがあります。 askubuntu.comでのACLの使用例: