SFTP / FTP 액세스 권한이있는 사용자를 Amazon EC2 Centos의 '/ var / www / html / website_abc'폴더에 추가하는 방법은 무엇입니까?


19

가능한 중복 :
Linux 디렉토리 권한

일부 타사 개발자와 함께 일하고 있으며 SFTP (또는 FTP)에 작업중인 웹 사이트의 루트 폴더에 대한 액세스 권한을 부여하려고합니다. 즉 '/var/www/html/website_abc', 파일을 업로드 할 수 있습니다. 동일한 EC2 인스턴스에서 다른 웹 사이트를 호스팅하고 '/var/www/html/website_xyz'있습니다.

하나의 단일 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 인스턴스의 다른 디렉토리에 액세스 할 수 없습니다.
  • 개인 키 파일은 어떻습니까?
    • 개인 키 파일을 타사 개발자에게 전달합니까? 그렇게하는 것이 좋습니다?
    • 다른 개인 키 파일을 생성하거나 대신 사용자 이름 및 비밀번호로 로그인 할 수있는 방법이 있습니까?

검색을 수행했지만 대부분의 사람들은 이미 WinSCP를 사용할 수있는 SFTP를 통해 EC2에 액세스하는 방법에 대해 이야기했습니다.

설명 :

  • /var/www/html/website_abc'쓰기'권한이 있는 항목을 업로드하려면 '개발자'가 필요합니다.
  • 아래의 파일 / 디렉토리에 대한 '쓰기'권한이 /var/www/html/없으며 '읽기'권한 이 없으면 '개발자'가 필요합니다.
  • 그러나 여기에 큰 문제가있는 것 같습니다.
    • /var/www/html/내 DocumentRoot 폴더이므로 이미 777 권한이 있습니다. 그렇다면 '개발자'가 다른 웹 사이트에 액세스하지 못하게하려면 어떻게해야합니까?

부분적으로 해결 OpenSSH를 사용하여 목표를 달성했습니다 (/ var / www / html / website_abc / 내에 .ssh 폴더를 만들고 개인 키를 생성하여 타사 개발자에게 제공합니다). 또한 AWS가 제공 한 개인 키 파일을 절대 제공해서는 안된다는 것도 알게되었습니다. chroot에 대해 여전히 배우고 있습니다.


1
@lain 미안하지만 당신은 나를 오해했을 것입니다. 이런 거짓 판단을하는 것보다 더 의미있는 일을하면서 시간을 보낼 수있을 것 같아요. 아마도 내 질문을주의 깊게 읽으면 Linux 파일 / 폴더 권한보다 SSH / SFTP와 더 관련이 있거나 너무 혼란 스럽습니다 (왜 혼란 스럽습니까? 모르겠습니다, 그 이유입니다) 도움이 필요했습니다). 이것은 당신이 생각한 다른 스레드의 정확한 복제본이 아닙니다. 어쨌든 OpenSSH를 사용하여 목표를 달성했습니다. Tom H와 일부 검색 결과에서 제안한 chroot에 대해 여전히 배우고 있습니다. 감사합니다
ericn

"저는 또한 AWS가 제공 한 개인 키 파일을 절대 제공해서는 안된다는 것을 배웠습니다."왜 .....
Michael Bailey

답변:


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
...

유닉스 시스템 은 사용자가 파일 시스템 계층 구조에서 "상위"파일과 디렉토리에 액세스 할 수없는 디렉토리 chroot로 재설정 할 수 있는 명령을 제공합니다 /.

그러나 귀하의 경우에는 원격 쉘 서비스로 구현 된 가상 chroot를 제공하는 것이 적절합니다. sftp는 다음의 구성을 사용하여 로컬 사용자를 파일 시스템의 특정 하위 집합으로 제한하도록 쉽게 구성 할 수 있습니다.

따라서 귀하의 경우, 당신은 원하는 에 사용자 디렉토리.chrootadeveloper/var/www/html/website_abc

사용자가 chroot 디렉토리를 설정하여 하위 디렉토리로 제한 할 /var/www/html/website_abc수 있습니다 /etc/ssh/sshd_config.

이 물건은 4.8 이후에 openssh-server가 필요합니까?

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

공유 키에 대하여

개발자 개발자를위한 추가 키 쌍을 작성하여 컨설턴트에게 보내야합니다. (또는 대안으로 공개 키를 보내서 인증 된 키 파일에 추가하도록하세요 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.