Centos

如何將具有 SFTP/FTP 訪問權限的使用者添加到 Amazon EC2 Centos 上的“/var/www/html/website_abc”文件夾?

  • January 20, 2015

可能重複:

Linux 目錄權限

我正在與一些第三方開發人員合作,我想授予他們正在處理的網站的根文件夾的 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.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

引用自:https://serverfault.com/questions/392601