如何將具有 SFTP/FTP 訪問權限的使用者添加到 Amazon EC2 Centos 上的“/var/www/html/website_abc”文件夾?
可能重複:
我正在與一些第三方開發人員合作,我想授予他們正在處理的網站的根文件夾的 SFTP(或 FTP)訪問權限,
'/var/www/html/website_abc'
以便他們可以在那裡上傳文件。請注意,我將我的其他網站託管在同一個 EC2 實例上,例如'/var/www/html/website_xyz'
.只是為了強調我在 1 個 EC2 實例上使用多個網站,網站的結構如下:
/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’將使用’adeveloper@$$ my elastic IP $$’ 作為登錄 SFTP(或 FTP)的使用者名,對嗎?
使用者“adeveloper”無權訪問“/var/www/html/”或我的 EC2 實例中的任何其他目錄
私鑰文件呢?
- 我是否將我的私鑰文件傳遞給第三方開發人員 - 這樣做是否可取?
- 有沒有辦法為他們生成不同的私鑰文件或允許他們使用使用者名和密碼登錄?
我已經進行了搜尋,但大多數人都在談論如何通過 SFTP 訪問 EC2,我已經能夠使用 WinSCP。
說明:
我需要“開發人員”才能上傳
/var/www/html/website_abc
具有“寫入”權限的內容我需要 ‘adeveloper’ 對 下的任何文件/目錄沒有“寫”權限
/var/www/html/
,理想情況下甚至沒有“讀”權限但是,這裡似乎有一個大問題:
/var/www/html/
已經擁有權限 777,因為這是我的 DocumentRoot 文件夾。那麼,如何阻止“開發人員”訪問我的其他網站?部分解決 了我使用 OpenSSH 實現了我的目標(我在 /var/www/html/website_abc/ 中創建 .ssh 文件夾並生成私鑰並將其提供給第三方開發人員)。我還了解到,我永遠不應該提供 AWS 給我的私鑰文件。仍在學習 chroot。
預設情況下,提供遠端 shell(如 ssh 或 telnet)或用於命令(如 sftp)的互動式遠端會話的服務允許本地使用者更改到他們有權訪問的任何目錄,並檢索他們有權訪問的任何文件的副本。
作為一般的安全配置,這是不幸的,因為有許多文件和目錄必須是世界可讀的。例如,我是某個遠端 CentOS 機器上的非 root 使用者;
$ 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
命令允許您將/
使用者重置到文件系統層次結構中的某個目錄,在那裡他們無法訪問“更高”的文件和目錄。但是,在您的情況下,提供由遠端 shell 服務實現的虛擬 chroot 是合適的。sftp 可以很容易地配置為使用
因此,在您的情況下,您希望使用者進入
chroot
目錄。adeveloper``/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.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny