Amazon EC2 Centosの「/ var / www / html / website_abc」フォルダーにSFTP / FTPアクセス権を持つユーザーを追加するにはどうすればよいですか?


19

重複の可能性:
Linuxディレクトリのアクセス許可

私はいくつかのサードパーティの開発者と協力しており、彼らが作業しているウェブサイトのルートフォルダへのSFTP(またはFTP)アクセスを許可したい'/var/www/html/website_abc'ので、そこにファイルをアップロードできます。同じEC2インスタンスで他のWebサイトをホストしていることに注意してください'/var/www/html/website_xyz'

1つのEC2インスタンスで複数のWebサイトを使用していることを強調するために、Webサイトの構造は次のとおりです。

/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz

私の目標は次のとおりです。

  • ユーザー「adeveloper」は「/ var / www / html / website_abc」にアクセスできますが、「/ var / www / html / website_abc」のみがアクセスできます
    • ユーザー 'adeveloper'がSFTP(またはFTP)にログインするためのユーザー名として 'adeveloper @ [my elastic IP]'を使用すると思いますが、正しいですか?
  • ユーザー「adeveloper」には「/ var / www / html /」またはEC2インスタンスの他のディレクトリへのアクセス権がありません
  • 秘密鍵ファイルはどうですか?
    • 私の秘密鍵ファイルをサードパーティの開発者に渡しますか?そうすることをお勧めしますか?
    • 別の秘密鍵ファイルを生成する方法や、代わりにユーザー名とパスワードでログインできるようにする方法はありますか?

私は検索を行いましたが、ほとんどの人は、すでにWinSCPを使用できるSFTP経由でEC2にアクセスする方法について話していました。

明確化:

  • /var/www/html/website_abc「書き込み」権限のあるものをアップロードするには、「開発者」が必要です
  • の下のファイル/ディレクトリに対する「書き込み」権限がなく/var/www/html/、理想的には「読み取り」権限さえ持たないために、「開発者」が必要です。
  • ただし、ここには大きな問題があるようです。
    • /var/www/html/これは私のDocumentRootフォルダーであるため、既に許可777を持っています。それで、「開発者」が他のウェブサイトにアクセスするのを止めるにはどうすればよいですか?

部分的に解決し 、私はOpenSSHのを使用して、私の目標を達成して管理(Iは/ var / www / html / website_abc /内部の.sshフォルダを作成して秘密鍵を生成し、サードパーティの開発者にそれを与えます)。また、AWSから提供された秘密キーファイルを絶対に提供しないでください。まだchrootについて学んでいます。


1
ごめんなさい@lainでも、あなたは私を誤解したに違いない。このような誤った判断を下すよりも意味のある何かをすることに時間を費やすことができると思います。おそらく、私の質問を注意深く読んだら、Linuxファイル/フォルダーのアクセス許可よりも、SSH / SFTPに関係しているのではないか、それとも両者の混乱だったのでしょう(なぜ混乱したのかわかりません、だからです私は助けが必要でした)。これは、あなたが考えているような他のスレッドの正確な複製ではありません。とにかく、OpenSSHを使用して目標を達成することができました。トムHといくつかの検索結果が示唆するように、私はまだchrootについて学んでいます。ありがとう
ericn

なぜ.....「私も、私が今まで私に与えた秘密鍵ファイルのAWSを与えてはならないことを学んだ」
マイケル・ベイリー

回答:


11

既定では、sshやtelnetなどのリモートシェル、またはsftpなどのコマンド用の対話型リモートセッションを提供するサービスにより、ローカルユーザーはアクセス許可があるディレクトリに移動し、アクセスできるファイルのコピーを取得できます。

一般的なセキュリティ設定として、これは不必要です。なぜなら、世界的に読み取り可能なファイルやディレクトリがたくさんあるからです。たとえば、私はリモートCentOSボックスの非ルートユーザーです。

$ cd /etc
-bash-3.2$ ls -1
acpi
adjtime
aliases
...

例えば、私はたくさんのものにアクセスできますが、理想的にはローカルアクセスを提供したい未知のユーザーから制限したいでしょう。

/etc/passwdファイルで構成されているすべてのローカルユーザーを確認します。

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

Unixシステムは、ユーザーが「上位の」ファイルやディレクトリにアクセスできないファイルシステム階層内のディレクトリにユーザーchrootをリセットできるコマンドを提供し/ます。

ただし、あなたの場合は、リモートシェルサービスによって実装される仮想chrootを提供することが適切です。sftpは、ローカルユーザーをファイルシステムの特定のサブセットに制限するように簡単に構成できます。

したがって、あなたの場合はchrootadeveloperユーザーを/var/www/html/website_abcディレクトリに入れます。

ユーザーのchrootディレクトリを設定して、次の/var/www/html/website_abcようにサブディレクトリに限定でき/etc/ssh/sshd_configます。

このようなものには4.8以降のopenssh-serverが必要ですか?したがって、おそらくCentOS 6.2が必要です

Match Group sftp
    ChrootDirectory %h
    AllowTcpForwarding no

(テストされていません。man sshd_config構文の確認を参照してください)

そして、それらのユーザーをsftpグループに追加します。

 groupadd sftp
 usermod -d /var/www/html/website_abc adeveloper
 usermod -G sftp adeveloper

共有キーについて

開発者ユーザー用に追加のキーペアを作成し、コンサルタントに送信する必要があります。(または、公開鍵を送信して、それをのauthorized_keysファイルに追加してもらうadeveloper

あなたの秘密鍵を決してあきらめない、それが秘密と呼ばれる理由です;-)

従来のftpの代替

vsftp / proftpなどもchroot構成をサポートしていますが、この現代ではsshベースの構成が通常の方法であり、ftpのサポートは歴史的なものにすぎません。

チュートリアルへのリンクがいくつかあります。
http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229

http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny


私はこれまでchrootを理解することができませんでしたが、まだ学習中であり、まだあきらめていません。しかし、OpenSSHを使用して上記の目標を達成することができました。再びありがとう
ericn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.