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.