사용자를 한 폴더로 제한하고 폴더 밖으로 이동하지 못하게하는 방법


28

나는 digitalocean에 우분투 서버를 가지고 있고 누군가 내 서버의 도메인에 대한 폴더를주고 싶습니다. 내 문제는 그 사용자가 내 폴더 나 파일을 보거나 폴더를 옮기고 싶지 않다는 것입니다.

폴더에서이 사용자를 제한하고 다른 파일 / 디렉토리를 다른 곳으로 이동하거나 볼 수 없도록하려면 어떻게해야합니까?


해당 목적을 위해 별도의 사용자 계정을 사용할 수 있습니다.
Martin von Wittich 2016 년

또는 아마도 Jailkit
FloHimself

chmod를하지 좋은 해결책이 난 그는 자신의 폴더를 이동하기 전에 내가 사용하는 내 서버에있는 모든 폴더에 사용할 수 없기 때문입니다
BADR

실제로 나는 그것을 사용하지 않았기 때문에 그룹에 대해 전혀 모른다.
BADR

또 다른 방법은 serverfault.com/questions/497011/… 입니다.
slm

답변:


26

이런 식으로 내 문제를 해결했습니다.

새로운 그룹 만들기

$ sudo addgroup exchangefiles

chroot 디렉토리를 만듭니다

$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/

그룹 쓰기 가능 디렉토리 작성

$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/

새로운 그룹에게 둘 다주세요

$ sudo chgrp -R exchangefiles /var/www/GroupFolder/

그 후 나는 /etc/ssh/sshd_config파일 끝에 가서 추가했습니다.

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

이제 그룹에 오바마 이름을 가진 새 사용자를 추가하겠습니다.

$ sudo adduser --ingroup exchangefiles obama

이제 모든 것이 완료되었으므로 ssh 서비스를 다시 시작해야합니다.

$ sudo service ssh restart

주의 : 이제 사용자는 file디렉토리에서 아무것도 할 수 없습니다. 모든 파일이 폴더에 있어야 함을 의미합니다.


1
나는 사용자를 전환 sudo su - obama했지만 여전히 다른 사용자의 파일을 볼 수 있습니다. @badr
alper

11

제한은 합리적인 문제이며 일관되게 정의해야합니다. 할 수있는 일은 사용자 의 제한된 쉘기본 쉘로 정의하는 것 입니다.

예를 들어 /bin/rksh에서 사용자의 사전 정의 된 쉘 대신 (제한된 kornshell)을 해당 사용자의 기본 쉘로 설정하십시오 /etc/profile.

참고 : 이 이름의 실행 파일이 시스템에 존재하지 않는 경우 다음 하드 링크를 생성 ln /bin/ksh /bin/rksh하고 ksh이 제한되거나하지의 여부 이름으로 결정합니다.

제한 쉘 (예)을하고 막을 cd명령 또는으로 명령을 특정 /호출에 (명시 적 경로), 그리고 변화 허용하지 않는 PATH, SHELL또는 ENV변수를 출력 리디렉션은 금지된다.

당신은 할 수 있습니다 여전히 제공하는 미리 정의 된 (스크립트 구현 제어하에!) 사용자가 제한되지 않은 환경에서 특정 스크립트를 (들)을 실행 할 수 있도록 사용자에게 쉘 스크립트를.


이 답변은 chroot 환경을 설정하는 것보다 훨씬 간단하므로 투표를했습니다.
Azhrei

5

이 명령을 chroot사용하면 사용자에 대한 제한된 루트를 만들 수 있습니다.이 질문 은 사용자 의 개념 chroot과 사용법을 설명 합니다.

업데이트 : 디지털 오션에 설치된 chroot jail을 검색 하면 해당 환경에 대한 추가 문서가 제공됩니다. 여기 당신이 필요로하는 것과 관련이 있다고 생각되는 커플이 있습니다.

Ubuntu 12.04 VPS에서 테스트를 위해 Chroot 환경을 구성하는 방법

chroot jailed 사용자에게 제한된 SSH 액세스를 허용하는 방법

다음 FloHimself가 제안한 jailkit관련된 것 입니다.


예 그들은 그것을 설명하지만 그들은 내가 어떤 표창과 시도했지만를 사용하는 방법에 대해 설명하지 않았다 내가 무엇을 얻을 : chroot를 '/ 빈 / bash는'실행 명령 실패 : 해당 파일하거나 디렉토리
BADR

1
사실, 그러나 지금 당신은 chroot jail에 대해 들었습니다. 더 많은 연구를 할 수 있습니다. Digital Ocean에 관한 문서에 대한 링크로 답변을 업데이트하여 환경에 맞는 추가 설명을 제공합니다.
X Tian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.